微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

RestEasy开发WebService一

1.搭建RestEasy项目

基于resteasy版本:2.2.1.GA

使用maven2.2.1作为构建和依赖管理工具

1.创建工程,配置pom.xml

mvn archetype:create -DgroupId=com.longtask.rest.easyrest -DartifactId=easyrest -DarchetypeArtifactId=maven-archetype-webapp

mvn eclipse:eclipse

注:使用m2eclipse插件可直接import
[html]  view plain copy
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">  
  3.   modelVersion>4.0.0</>  
  4.   groupId>rest.resteasyartifactId>rest-resteay-demopackaging>warversion>1.0name>rest-resteay-demo Maven Webappurl>http://maven.apache.orgrepositories         repository             id>java.net             >http://download.java.net/maven/1layout>legacy         >maven repo>http://repo1.maven.org/maven2/         <!-- For resteasy -->  
  5. >jboss>jboss repo>http://repository.jboss.org/nexus/content/groups/public/     dependenciesdependency>org.jboss.resteasy>resteasy-jaxrs>2.2.1.GA             <!-- filter out unwanted jars -->  
  6. exclusions                 exclusion                     >commons-httpclient                                      >javax.servlet>servlet-api>javax.xml.bind>jaxb-api>com.sun.xml.bind>jaxb-impl   
  7. >resteasy-jettison-provider>javax.xml.stream>stax-api       >junit       >3.8.1scope>test       buildfinalNamepluginsplugin>org.apache.maven.plugins>maven-compiler-pluginconfigurationsource>1.6targetproject>  
这个不是重点:看不懂这个pom.xml没关系,也就是下载依赖包,打包,先继续往下看

2.编写jax-rs的服务类

[java]  copy
    package resteasy.server;  
  1.   
  2. import javax.ws.rs.GET;  
  3. import javax.ws.rs.Path;  
  4. import javax.ws.rs.PathParam;  
  5. @Path(value = "echo")  
  6. public class Echo {  
  7.     @GET  
  8.     @Path(value = "/{message}")  
  9.     public String echoService(@PathParam("message") String message)  
  10.     {  
  11.         return message;  
  12.     }  
  13. }  

@Path表示开启访问这个资源的路径

@GET表示响应HTTP 的get方法

@PathParam表示引用URI中得参数

3.web.xml的配置

copy
    <!DOCTYPE web-app PUBLIC  
  1.  "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"  
  2.  "http://java.sun.com/dtd/web-app_2_3.dtd" web-appcontext-paramparam-name>resteasy.resourcesparam-value>resteasy.server.Echo    listenerlistener-class          org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap  
  3. servletservlet-name>Resteasyservlet-class          org.jboss.resteasy.plugins.server.servlet.HttpServletdispatcher  
  4.    servlet-mappingurl-pattern>/*配置响应的listener和servlet无非就是初始resteasy的服务 (先简单理解)

    3.打包部署到响应的servlet容器即可(如tomcat),然后访问http://localhost:8080/rest-resteay-demo/echo/hello,world,网页上出现hello,world则成功
    hello,world可换成任意字符,同样也将返回响应的字符

    注:如果不使用maven,则可以到resteasy官网下载响应jar包即可


    1.使用的 ServletContextListener 来初始化并发布我们的服务类

    [html]  view plain copy
    span style="color:#000000;"> <!DOCTYPE web-app PUBLIC    
  1.      "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"    
  2.      "http://java.sun.com/dtd/web-app_2_3.dtd" >      
  3. >    
  4.  >    
  5. >   
  6. > org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap >   
  7. > > org.jboss.resteasy.plugins.server.servlet.HttpServletdispatcher >span>  


 
这是第一波中得web.xml,也就是用的listener来进行的服务发布: 

查看源代码可以发现public class ResteasyBootstrap implements servletcontextlistener,其实现了servletcontextlistener 接口,通过获取

copy
                                   >    
如上参数进行了服务类的加载.

copy
    resteasy.resources  
代表通过指定资源类的全路径名进行加载,有多个资源类可通过逗号分开
查看官方文档可以发现其他用于加载资源类的参数

resteasy.scan.resources   认值:false   用途:设置为ture时,将自动搜索 WEB-INF/lib下面的 jars 和 WEB-INF/classes目录中有(@GET @POST ...)注解的class并注册为服务
可用上一波的例子替换相应参数进行测试(亲测木有问题)
2.使用 servlet Filter 注册服务类web.xml如下
[html]  view plain copy
    <!DOCTYPE web-app PUBLIC  
  1. >  
  2.   
  3. >  
  4.          org.jboss.resteasy.plugins.server.servlet.HttpServletdispatcher  
  5.        init-param>javax.ws.rs.Application>resteasy.server.MyApplication>  
如上代码,我们发现相比前面例子去掉了listener,在servlet中多添加一个
copy
    javax.ws.rs.Application  
这是一个抽象类,是一个jax rs的标准规范,允许通过其子类注册你得资源类请看MyApplication代码
[java]  copy
    package resteasy.server;  
  1. import java.util.HashSet;  
  2. import java.util.Set;  
  3.   
  4. import javax.ws.rs.core.Application;  
  5. class MyApplication extends Application{  
  6.     Set<Object> objectSet = new HashSet<Object>();  
  7.     Set<Class<?>> classSet = new HashSet<Class<?>>();  
  8.       
  9. public MyApplication()  
  10.     {  
  11.         objectSet.add(new Echo());  
  12. //      classSet.add(Echo.class);  
  13.     }  
  14. @Override  
  15. public Set<Class<?>> getClasses() {  
  16.         // Todo Auto-generated method stub  
  17. return classSet;  
  18.     }  
  19. public Set<Object> getSingletons() {  
  20. return objectSet;  
  21.       
  22. }  
通过构造函数添加一个Echo的资源类实例,当然也可通过添加一个class来实现,二者选其一即可 3.使用 filter 注册服务类(也就是资源类)

作为servlet进行资源的注册,你会发现不能将静态文件(html,images)注册为资源,所以resteasy还提供了filter进行资源的注册,不妨碍其获取静态文件

继续引用上一个例子,只用修改其web.xml如下

copy

    filterfilter-namefilter-class                 org.jboss.resteasy.plugins.server.servlet.Filterdispatcher  
  1. filter-mapping>  

实现文件上传---非form提交方式(实例、教程)

这里指的上传是指利用resteasy来获取:客户端HTTP开发包发送的body请求-----刚开始也没撒头绪,第一时间去google,发现有哥们问同样的问题,但是却没有解决方法,于是乎就只有硬着头皮看英文文档,发现如下文档:

The @Context annotation allows you to inject instances of javax.ws.rs.core.HttpHeaders,javax.ws.rs.core.UriInfo,javax.ws.rs.core.Request,javax.servlet.HttpServletRequest,javax.servlet.HttpServletResponse,javax.servlet.ServletConfig,javax.servlet.ServletContext,and javax.ws.rs.core.SecurityContext objects.

翻译下呢就是说使用@Context 注解就可以将 javax.ws.rs.core.HttpHeaders,and javax.ws.rs.core.SecurityContext等等实例注入到变量中

server端resource类代码如下:

[html]  view plain copy
    @PUT  
  1. @Path(value = "/{folder}/{fileName}")  
  2. public Response uploadFile(@PathParam("folder") String folder,@PathParam("fileName") String fileName,     @Context HttpServletRequest request)  
  3. {  
  4.     File f = new File("x:\\"+fileName);  
  5.     InputStream is = null;  
  6.     try {  
  7.         is = request.getInputStream();  
  8.         FileUtils.copyInputStreamToFile(is, f);  
  9.     } catch (IOException e) {  
  10.         // Todo Auto-generated catch block  
  11.         e.printstacktrace();  
  12.     }  
  13.     return Response.ok().build();  
  14. }  

请主要看下以上代码红色部分,就相当于把HttpServletRequest请求注入到了request变量中,那么通过request对象获取获取输入流,则得到了body主体部分的数据。 客户端的代码如下

copy

    String urlResouce = "http://localhost:8080/cloud-storeage-boss/muluSDF/xyz.png"; // create URL  
  1.         File localFile = new File("C:\\Users\\maomao\\Pictures\\2.png");  
  2.         try{  
  3.               
  4.         HttpURLConnection urlConnection =  
  5.         (HttpURLConnection) (new URL(urlResouce)).openConnection();  
  6.         urlConnection.setDoInput(true);  
  7.         urlConnection.setDoOutput(true);  
  8.         urlConnection.setRequestMethod("PUT");  
  9.         OutputStream urlOutputStream = urlConnection.getoutputStream();  
  10.         FileInputStream fileInputStream = new FileInputStream(localFile);  
  11.         IoUtils.copy(fileInputStream, urlOutputStream);  
  12.         fileInputStream.close();  
  13.         urlOutputStream.close();  
  14.         System.out.println(urlConnection.getResponseCode());  
  15.         }  
  16.         catch(Exception e)  
  17.         {  
  18.             e.printstacktrace();  
  19.         }  
通过此客户端的调用,就可以将本地的2.png文件上传到服务器,并被保存为xyz.png.

resteasy与spring真正集成发布我们的restful webservice 服务(实例、教程)

原本以为根据文档集成resteasy与spring很简单,但是却还是花费的一定时间,避免大家走弯路----现在网上有的相关的集成都只是,spring加入进项目,木有与resteasy真正集成

老规矩,先上MAVEN的配置文件中依赖包:

[html]  view plain copy
     >  
  1.    <!-- core library -->  
  2. >  
  3.   
  4.    <!-- optional modules -->  
  5.      <!-- Spring integration -->  
  6. >resteasy-spring       
  7. <!-- JAXB support -->  
  8. >resteasy-jaxb-provider       
  9. <!-- spring -->  
  10. >org.springframework>spring                                 >2.5.6.SEC03                        >  

注意上图中得resteasy-spring模块依赖,和spring依赖

resteasy-spring直接配置似乎不能自动下载,如果不行可以自己去官网下载然后安装到私服仓库

还有spring的依赖必须是要有的,resteasy-spring只是提供集成代码

2.关键的web.xml中得配置

copy
    <!DOCTYPE web-app PUBLIC  
  1. display-name>Archetype Created Web Application>contextConfigLocation>classpath*:applicationContext*.xml   <!--  
  2. >      
  3. >resteasy.scan.resources>true     -->org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap>org.jboss.resteasy.plugins.spring.SpringContextLoaderListener>org.jboss.resteasy.plugins.server.servlet.HttpServletdispatcher     
  4. >  
相比原来的配置文件多了

copy
    >  

copy
    >  

3.application.xml的配置

copy
    <?xml version="1.0" encoding="UTF-8"?>  
  1. beans xmlns="http://www.springframework.org/schema/beans"  
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  3. xsi:schemaLocation="http://www.springframework.org/schema/beans  
  4. http://www.springframework.org/schema/beans/spring-beans-3.0.xsd ">   
  5.     <!-- service point -->  
  6. bean id="testServicePoint" class="com.jd.interfacce.service.point.TestServicePoint"property name="manager" ref="manager" />  
  7. bean<!-- MANAGER -->  
  8. bean id="manager" class="com.jd.interfacce.manager.impl.ManagerImpl"/>  
  9. beans>  
其中
copy
    testServicePoint  

是我们的资源resouce也就是发布接口的类

4.资源类

[java]  copy
    package com.jd.interfacce.service.point;  
  1. import javax.ws.rs.GET;  
  2. import javax.ws.rs.Path;  
  3. import javax.ws.rs.PathParam;  
  4. import com.jd.interfacce.manager.Manager;  
  5. /** 
  6.  * service point endpoint 
  7.  * @author  
  8.  * 
  9.  */  
  10. @Path(value = "/")  
  11. class TestServicePoint {  
  12.     Manager manager;  
  13. @GET  
  14. @Path(value = "/echo/{message}")  
  15. public String getMessage(@PathParam(value = "message") String message)  
  16.     {  
  17. //      return message;  
  18.         return manager.getMessage(message);  
  19.     }  
  20. public Manager getManager() {  
  21. return manager;  
  22.     void setManager(Manager manager) {  
  23. this.manager = manager;  
  24.     }  
  25. }  
5.manager类

copy
    package com.jd.interfacce.manager.impl;  
  1. class ManagerImpl implements Manager{  
  2. @Override  
  3. public String getMessage(String message)  
  4. return message;  
  5. }  

利用resteasy框架构建rest webservice----第五波:java代码调用乱码解决方

今天主要介绍下当URI中出现中文时,服务端获取出得Pathparam为乱码的问题:
[java]  view plain copy
    String urlResouce = null;  
  1. try {  
  2.             urlResouce = "http://10.28.0.203:8080/cloud-storeage-boss/cai:dafile/"+URLEncoder.encode("中文eclipse.zip","utf-8");  
  3.         } catch (UnsupportedEncodingException e1) {  
  4.             // Todo Auto-generated catch block  
  5.             e1.printstacktrace();  
  6.         } // create URL  
  7.         File localFile = new File("Z:\\tools\\eclipse-jee-helios-SR2-win32.zip");  
  8. try{  
  9.               
  10.         HttpURLConnection urlConnection =  
  11.         (HttpURLConnection) (new URL(urlResouce)).openConnection();  
  12.         urlConnection.setRequestProperty("Charset""UTF-8");  
  13.         urlConnection.setRequestProperty("auth""maomaocaicai");  
  14.         urlConnection.setDoInput(true);  
  15.         urlConnection.setDoOutput(true);  
  16.         urlConnection.setRequestMethod("PUT");  
  17.         OutputStream urlOutputStream = urlConnection.getoutputStream();  
  18.         FileInputStream fileInputStream = new FileInputStream(localFile);  
  19.         fileInputStream.close();  
  20.         urlOutputStream.close();  
  21.         System.out.println(urlConnection.getResponseCode());  
  22.         }  
  23. catch(Exception e)  
  24.         {  
  25.             e.printstacktrace();  
  26.         }  
乱码参数的解决方法很简单,就是将相应URI进行UTF-8的编码

这个原理比较简单因为中文时两个字节,而在网络进行传输的时候由于某种原因(具体原因就是编码的问题,请google)会进行单字节的编码,解析出来的中文就变乱码了。----浏览器在传输的时候都会对中文进行编码传输

实现文件下载

基于resteasy下载的实现,先贴出下载的代码

[java]  view plain copy
    /** 
  1.      * 下载对象 
  2.      * @param bucketName 
  3.      * @param objectName 
  4.      * @param request 
  5.      * @return 
  6.      */  
  7. @Path(value = "/{bucketName}/{objectName}")  
  8. @Produces(MediaType.APPLICATION_OCTET_STREAM)  
  9. public Response downloadobject(@PathParam(value = "bucketName") String bucketName,@PathParam(value = "objectName") String objectName,100); background-color:inherit">@Context HttpServletRequest request)  
  10.         Bucketobject bucketobject = objectManager.downloadobject(request.getHeader(CommonConstant.USER_TOKEN),CommonsUtil.generateSummary(request), bucketName, objectName);  
  11. //直接返回输出  
  12. return Response.ok(new BigFileOutputStream(bucketobject.getDataStream())).build();  

这段代码比较简单:重点关注响应的实体类BigFileOutputStream,其传入的构造参数是一个输入流

该类的具体实现如下,其实关键的需要实现javax.ws.rs.core.StreamingOutput类,重写其write方法,将你得数据输出到write方法中得输出流中即可,resteasy框架会将其流直接输出到客户端

copy
     * 实现用于直接响应一个输出流 
  1.  * @author maomao 
  2.  * 
  3.  */  
  4. class BigFileOutputStream implements javax.ws.rs.core.StreamingOutput {  
  5. private InputStream inputStream;  
  6. public BigFileOutputStream(){}  
  7. public BigFileOutputStream(InputStream inputStream)  
  8. this.inputStream = inputStream;  
  9. void write(OutputStream output) throws IOException,  
  10.             WebApplicationException {  
  11.         // Todo Auto-generated method stub  
  12.         IoUtils.copy(inputStream, output);  
  13. public InputStream getInputStream() {  
  14. return inputStream;  
  15. void setInputStream(InputStream inputStream) {  
  16. }  
客户端调用代码如下
copy
    //下载文件  
  1. private void downLoadobject()  
  2.     {  
  3.         String bucket = "EBoxTEST123456"//上传的桶  
  4.         String objectName = "wangpan114daitupian.png"//上传的对象名  
  5.         String urlResouce =  bucket + "/" + objectName;  
  6.         String baseURL = "http://10.28.1.37:8080/application_interface_manager/platform/";  
  7.         String hostURL = baseURL + urlResouce ;  
  8.         String httpMethod = "GET";  
  9.         String requestDate = new Date().toString();  
  10. new File("x:\\1142.png");  
  11. //生成摘要用于签名  
  12.         String summary = httpMethod + "\n" // create StringToSign  
  13.         + "\n" // no Content-Md5 Filed  
  14.         + "\n" // no Content-Type Filed  
  15.         + requestDate + "\n" // Date Filed---must  
  16.         + urlResouce; //must  
  17.     //创建客户端签名  
  18.     String clientToken = new CreateSignTokenImpl().getToken(summary,secretKey);  
  19.     HttpURLConnection urlConnection =  
  20.     (HttpURLConnection) (new URL(hostURL)).openConnection();  
  21.     urlConnection.setRequestProperty("Token""jingdong "+accessKey+":"+clientToken);  
  22.     urlConnection.setRequestProperty("Date", requestDate);  
  23.     urlConnection.setDoInput(     urlConnection.setRequestMethod(httpMethod);  
  24.     InputStream is = urlConnection.getInputStream();  
  25. //  FileUtils.copyInputStreamToFile(is, localFile);  
  26.         OutputStream op = new FileOutputStream(localFile);  
  27. byte [] bts = new byte[1024];  
  28. int n = 0;  
  29. while(-1 != (n = is.read(bts)))  
  30.         {  
  31.             op.write(bts, 0, n);  
  32.         }  
  33. //      op.close();  
  34.         } catch (IOException e1) {  
  35. // Todo Auto-generated catch block  
  36.         e1.printstacktrace();  
  37.     System.out.println(urlConnection.getResponseCode());  
  38.         e.printstacktrace();  
  39.     }  

其实看着复杂,实际上很多代码不重要(偷懒把项目客户端调用代码直接copy过来了),关键就是从HttpUrlConnect处获取输入流(即是服务端输出输出的数据),将其写入到文件即可

我的Demo

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.test.service</groupId>
  <artifactId>RestEasyDemo1</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>RestEasyDemo1 Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <!-- RestEasy的Maven依赖 -->
     <!-- core library -->
   <dependency>
      <groupId>org.jboss.resteasy</groupId>
      <artifactId>resteasy-jaxrs</artifactId>
      <version>2.2.1.GA</version>
   </dependency>

   <!-- optional modules -->

   <!-- JAXB support -->
   <dependency>
      <groupId>org.jboss.resteasy</groupId>
      <artifactId>resteasy-jaxb-provider</artifactId>
      <version>2.2.1.GA</version>
   </dependency>
      <!-- 添加json的支持 -->
   <dependency>
			<groupId>org.jboss.resteasy</groupId>
			<artifactId>resteasy-jackson-provider</artifactId>
			<version>2.2.1.GA</version>
	    </dependency>
   <!-- multipart/form-data and multipart/mixed support -->
   <dependency>
      <groupId>org.jboss.resteasy</groupId>
      <artifactId>resteasy-multipart-provider</artifactId>
      <version>2.2.1.GA</version>
   </dependency>
   
  </dependencies>
  <build>
        <finalName>RestEasyDemo1</finalName>  
        <plugins>  
            <plugin>  
                <groupId>org.apache.maven.plugins</groupId>  
                <artifactId>maven-compiler-plugin</artifactId>  
                <configuration>  
                    <source>1.6</source>  
                    <target>1.6</target>  
                </configuration>  
            </plugin>  
            <plugin>  
        <groupId>org.apache.tomcat.maven</groupId>  
        <artifactId>tomcat6-maven-plugin</artifactId>  
        <version>2.0</version>  
       </plugin>  
        </plugins>  
    </build> 
</project>

web.xml

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems,Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
	<display-name>Archetype Created Web Application</display-name>
<!-- Auto scan REST service -->
	<!-- 自动扫描Service类会报错,这是一个bug,推荐使用手动的 -->
	<!-- <context-param>
		<param-name>resteasy.scan</param-name>
		<param-value>true</param-value>
	</context-param> -->
	
	<!-- 手动注册Service类 -->
	 <context-param>  
        <param-name>resteasy.resources</param-name>  
        <param-value>com.easytest.service.Library,com.easytest.service.MessageRestService</param-value>  
    </context-param>
 
	<!-- this need same with resteasy servlet url-pattern -->
	<!-- <context-param>
		<param-name>resteasy.servlet.mapping.prefix</param-name>
		<param-value>/rest</param-value>
	</context-param> -->
 
	<listener>
		<listener-class>
			org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap
		</listener-class>
	</listener>
 
	<servlet>
		<servlet-name>resteasy-servlet</servlet-name>
		<servlet-class>
			org.jboss.resteasy.plugins.server.servlet.HttpServletdispatcher
		</servlet-class>
	</servlet>
 
	<servlet-mapping>
		<servlet-name>resteasy-servlet</servlet-name>
		<url-pattern>/*</url-pattern>
	</servlet-mapping>

</web-app>

服务类:

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;

import org.jboss.resteasy.annotations.GZIP;
import org.jboss.resteasy.annotations.providers.multipart.PartType;
import org.omg.IOP.MultipleComponentProfileHelper;

@Path(value = "/captcha")  
public class CaptchaService {
	/**
	 * 获取验证码
	 * @param id
	 * @return
	 */
	@GET  
    @Path(value = "/{reqId}/get.htm")
	@GZIP
	@Produces("image/png")
	public File fehchCaptach(@PathParam("reqId") String reqId){
		System.out.println(reqId);
		return new File("D:\\testFTP\\suzhou\\00080200201401040007\\tailored\\BIRTH17_00282529128900101.png");
	}
	
	/**
	 * 保存验证码
	 * @param reqId
	 * @param captcha
	 * @return
	 */
	@POST
    @Path(value = "/post.htm")  
	@Produces("application/json")
	public Map<String,String> saveCaptach(@FormParam("reqId") String reqId,@FormParam("captcha") String captcha){
		System.out.println(reqId+" = "+captcha);
		Map<String,String> map = new HashMap<String,String>();
		map.put("reqId",reqId);
		map.put("status","true");
		map.put("msg","successfully!");
		return map;
	}
	
	/**
	 * 反馈某时间段验证码输入情况(正确/错误)
	 * @param beginDate 开始日期(yyyymmdd)
	 * @param endDate 截止日期(yyyymmdd)
	 * @return
	 */
	@GET
    @Path(value = "/{beginDate}/{endDate}/Feedback.htm")
	@Produces("application/json")
	public List<Map<String,String>> Feedback(@PathParam("beginDate") String beginDate,@PathParam("endDate") String endDate){
		List<Map<String,String>> list = new ArrayList<Map<String,String>>();
		
		Map<String,"650fce42dd024983b7e1b6a1a1e0b873");
		map.put("result","YES");
		list.add(map);
		
		map = new HashMap<String,"25a1df5e9fce4af1bc7f7dcd379d63bb");
		map.put("result","cb82aa3387b9489d89bac9f963e5c09c");
		map.put("result","NO");
		list.add(map);
		return list;
	}
	
	@GET
    @Path(value = "/Feedback/confirm.htm")
	public void confirm(@PathParam("beginDate") String beginDate,@PathParam("endDate") String endDate){
		
	}
}

package com.easytest.service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Response;

import com.easytest.bean.Person;

@Path("/message")
public class MessageRestService {
	@GET
	@Path("/{param}")
	public Response printMessage(@PathParam("param") String msg) {
 
		String result = "Restful example : " + msg;
 
		return Response.status(200).entity(result).build();
 
	}
	
	@GET
	@Path("/person/{param}")
	@Produces("application/json")
	public  List<Map<String,String>> getPerson(){
		
		Person p = new Person();
		p.setId("1111");
		p.setName("Jack");
		p.setAge(22);
		p.setAddress("浦东");
		
		List<Map<String,String>>();
		Map<String,String>();
		map.put("id",p.getId() );
		map.put("name",p.getName());
		map.put("age",p.getAge()+"");
		map.put("address",p.getAddress());
		map.put("photo",p.getPhoto());
		
		list.add(map);
		
		return list;
	}
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐