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
- <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</>??
- ??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/ ??????????
- >jboss>jboss?repo>http://repository.jboss.org/nexus/content/groups/public/ ????dependenciesdependency>org.jboss.resteasy>resteasy-jaxrs>2.2.1.GA ??????????????
- exclusions ????????????????exclusion ????????????????????>commons-httpclient ???????????????????? ????????????????>javax.servlet>servlet-api>javax.xml.bind>jaxb-api>com.sun.xml.bind>jaxb-impl ??
- >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的服务类
package?resteasy.server;??
- ??
- import?javax.ws.rs.GET;??
- import?javax.ws.rs.Path;??
- import?javax.ws.rs.PathParam;??
- @Path(value?=?"echo")??
- public?class?Echo?{??
- ????@GET??
- ????@Path(value?=?"/{message}")??
- ????public?String?echoService(@PathParam("message")?String?message)??
- ????{??
- ????????return?message;??
- ????}??
- }??
@Path表示开启访问这个资源的路径
@GET表示响应HTTP 的get方法
@PathParam表示引用URI中得参数
3.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-appcontext-paramparam-name>resteasy.resourcesparam-value>resteasy.server.Echo ???listenerlistener-class ?????????org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap??
- servletservlet-name>Resteasyservlet-class ?????????org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher??
- ???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 来初始化并发布我们的服务类
span?style="color:#000000;">?<!DOCTYPE?web-app?PUBLIC????
- ?????"-//Sun?Microsystems,?Inc.//DTD?Web?Application?2.3//EN"????
- ?????"http://java.sun.com/dtd/web-app_2_3.dtd"?>??????
- >????
- ?>????
- >???
- >?org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap?>???
- >?>?org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher?>span>??
这是第一波中得web.xml,也就是用的listener来进行的服务发布:
查看源代码可以发现public class ResteasyBootstrap implements ServletContextListener,其实现了ServletContextListener 接口,通过获取
??????????? ??????????? ???????>????
如上参数进行了服务类的加载.
resteasy.resources??
代表通过指定资源类的全路径名进行加载,有多个资源类可通过逗号分开
查看官方文档可以发现其他用于加载资源类的参数
resteasy.scan.resources?? 默认值:false?? 用途:设置为ture时,将自动搜索 WEB-INF/lib下面的 jars 和 WEB-INF/classes目录中有(@GET @POST ...)注解的class并注册为服务 |
可用上一波的例子替换相应参数进行测试(亲测木有问题)
2.使用?servlet Filter?注册服务类web.xml如下
<!DOCTYPE?web-app?PUBLIC??
-
- >??
- ??
- >??
- ?????????org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher??
- ???????init-param>javax.ws.rs.Application>resteasy.server.MyApplication>??
如上代码,我们发现相比前面例子去掉了listener,在servlet中多添加了一个
javax.ws.rs.Application??
这是一个抽象类,是一个jax rs的标准规范,允许通过其子类注册你得资源类请看MyApplication代码
package?resteasy.server;??
- import?java.util.HashSet;??
- import?java.util.Set;??
- ??
- import?javax.ws.rs.core.Application;??
- class?MyApplication?extends?Application{??
- ????Set<Object>?objectSet?=?new?HashSet<Object>();??
- ????Set<Class<?>>?classSet?=?new?HashSet<Class<?>>();??
- ??????
- public?MyApplication()??
- ????{??
- ????????objectSet.add(new?Echo());??
- ??
- ????}??
- @Override??
- public?Set<Class<?>>?getClasses()?{??
- ??????????
- return?classSet;??
- ????}??
- public?Set<Object>?getSingletons()?{??
- return?objectSet;??
- ??????
- }??
通过构造函数添加了一个Echo的资源类实例,当然也可通过添加一个class来实现,二者选其一即可
3.使用?filter?注册服务类(也就是资源类)
作为servlet进行资源的注册,你会发现不能将静态文件(html,images)注册为资源,所以resteasy还提供了filter进行资源的注册,不妨碍其获取静态文件
继续引用上一个例子,只用修改其web.xml如下
copy
filterfilter-namefilter-class ????????????????org.jboss.resteasy.plugins.server.servlet.FilterDispatcher??
- 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类代码如下:
@PUT??
- @Path(value?=?"/{folder}/{fileName}")??
- public?Response?uploadFile(@PathParam("folder")?String?folder,@PathParam("fileName")?String?fileName,?????@Context?HttpServletRequest?request)??
- {??
- ????File?f?=?new?File("x:"+fileName);??
- ????InputStream?is?=?null;??
- ????try?{??
- ????????is?=?request.getInputStream();??
- ????????FileUtils.copyInputStreamToFile(is,?f);??
- ????}?catch?(IOException?e)?{??
- ????????//?TODO?Auto-generated?catch?block??
- ????????e.printStackTrace();??
- ????}??
- ????return?Response.ok().build();??
- }??
请主要看下以上代码红色部分,就相当于把HttpServletRequest请求注入到了request变量中,那么通过request对象获取获取输入流,则得到了body主体部分的数据。
客户端的代码如下
copy
String?urlResouce?=?"http://localhost:8080/cloud-storeage-boss/muluSDF/xyz.png";?//?create?URL??
- ????????File?localFile?=?new?File("C:UsersmaomaoPictures2.png");??
- ????????try{??
- ??????????????
- ????????HttpURLConnection?urlConnection?=??
- ????????(HttpURLConnection)?(new?URL(urlResouce)).openConnection();??
- ????????urlConnection.setDoInput(true);??
- ????????urlConnection.setDoOutput(true);??
- ????????urlConnection.setRequestMethod("PUT");??
- ????????OutputStream?urlOutputStream?=?urlConnection.getOutputStream();??
- ????????FileInputStream?fileInputStream?=?new?FileInputStream(localFile);??
- ????????IOUtils.copy(fileInputStream,?urlOutputStream);??
- ????????fileInputStream.close();??
- ????????urlOutputStream.close();??
- ????????System.out.println(urlConnection.getResponseCode());??
- ????????}??
- ????????catch(Exception?e)??
- ????????{??
- ????????????e.printStackTrace();??
- ????????} ?
通过此客户端的调用,就可以将本地的2.png文件上传到服务器,并被保存为xyz.png.
resteasy与spring真正集成发布我们的restful webservice 服务(实例、教程)
原本以为根据文档集成resteasy与spring很简单,但是却还是花费的一定时间,避免大家走弯路----现在网上有的相关的集成都只是,spring加入进项目,木有与resteasy真正集成
老规矩,先上MAVEN的配置文件中依赖包:
?>??
- ?????
- >??
- ??
- ?????
- ???????
- >resteasy-spring ??????
- <!--?JAXB?support?-->??
- >resteasy-jaxb-provider ??????
- <!--?spring?-->??
- >org.springframework>spring ????????????????????????????????>2.5.6.SEC03 ???????????????????????>??
注意上图中得resteasy-spring模块依赖,和spring依赖
resteasy-spring直接配置似乎不能自动下载,如果不行可以自己去官网下载然后安装到私服仓库
还有spring的依赖必须是要有的,resteasy-spring只是提供集成代码
2.关键的web.xml中得配置
<!DOCTYPE?web-app?PUBLIC??
-
- display-name>Archetype?Created?Web?Application>contextConfigLocation>classpath*:applicationContext*.xml ??<!--??
- >??????
- >resteasy.scan.resources>true ????-->org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap>org.jboss.resteasy.plugins.spring.SpringContextLoaderListener>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher ????
- >??
相比原来的配置文件多了
>??
和
>??
3.application.xml的配置
<?xml?version="1.0"?encoding="UTF-8"?>??
- beans?xmlns="http://www.springframework.org/schema/beans"??
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"??
- xsi:schemaLocation="http://www.springframework.org/schema/beans??
- http://www.springframework.org/schema/beans/spring-beans-3.0.xsd?">???
- ??????
- bean?id="testServicePoint"?class="com.jd.interfacce.service.point.TestServicePoint"property?name="manager"?ref="manager"?/>??
- bean<!--?MANAGER?-->??
- bean?id="manager"?class="com.jd.interfacce.manager.impl.ManagerImpl"/>??
- beans>??
其中
testServicePoint??
是我们的资源resouce也就是发布接口的类
4.资源类
package?com.jd.interfacce.service.point;??
- import?javax.ws.rs.GET;??
- import?javax.ws.rs.Path;??
- import?javax.ws.rs.PathParam;??
- import?com.jd.interfacce.manager.Manager;??
- /**?
- ?
- ?*?@author??
- ?*?
- ?*/??
- @Path(value?=?"/")??
- class?TestServicePoint?{??
- ????Manager?manager;??
- @GET??
- @Path(value?=?"/echo/{message}")??
- public?String?getMessage(@PathParam(value?=?"message")?String?message)??
- ????{??
- //??????return?message;??
- ????????return?manager.getMessage(message);??
- ????}??
- public?Manager?getManager()?{??
- return?manager;??
- ????void?setManager(Manager?manager)?{??
- this.manager?=?manager;??
- ????}??
- }??
5.manager类
package?com.jd.interfacce.manager.impl;??
- class?ManagerImpl?implements?Manager{??
- @Override??
- public?String?getMessage(String?message)??
- return?message;??
- } ?
利用resteasy框架构建rest webservice----第五波:java代码调用乱码解决方案
今天主要介绍下当URI中出现中文时,服务端获取出得Pathparam为乱码的问题:
String?urlResouce?=?null;??
- try?{??
- ????????????urlResouce?=?"http://10.28.0.203:8080/cloud-storeage-boss/cai:dafile/"+URLEncoder.encode("中文eclipse.zip","utf-8");??
- ????????}?catch?(UnsupportedEncodingException?e1)?{??
- ??????????????
- ????????????e1.printStackTrace();??
- ????????}???
- ????????File?localFile?=?new?File("Z:toolseclipse-jee-helios-SR2-win32.zip");??
- try{??
- ??????????????
- ????????HttpURLConnection?urlConnection?=??
- ????????(HttpURLConnection)?(new?URL(urlResouce)).openConnection();??
- ????????urlConnection.setRequestProperty("Charset",?"UTF-8");??
- ????????urlConnection.setRequestProperty("auth",?"maomaocaicai");??
- ????????urlConnection.setDoInput(true);??
- ????????urlConnection.setDoOutput(true);??
- ????????urlConnection.setRequestMethod("PUT");??
- ????????OutputStream?urlOutputStream?=?urlConnection.getOutputStream();??
- ????????FileInputStream?fileInputStream?=?new?FileInputStream(localFile);??
- ????????fileInputStream.close();??
- ????????urlOutputStream.close();??
- ????????System.out.println(urlConnection.getResponseCode());??
- ????????}??
- catch(Exception?e)??
- ????????{??
- ????????????e.printStackTrace();??
- ????????}??
乱码参数的解决方法很简单,就是将相应URI进行UTF-8的编码
这个原理比较简单因为中文时两个字节,而在网络进行传输的时候由于某种原因(具体原因就是编码的问题,请google)会进行单字节的编码,解析出来的中文就变乱码了。----浏览器在传输的时候都会对中文进行编码传输
实现文件下载
/**?
- ?????*?下载对象?
- ?????*?@param?bucketName?
- ?????*?@param?objectName?
- ?????*?@param?request?
- ?????*?@return?
- ?????*/??
- @Path(value?=?"/{bucketName}/{objectName}")??
- @Produces(MediaType.APPLICATION_OCTET_STREAM)??
- public?Response?downloadObject(@PathParam(value?=?"bucketName")?String?bucketName,@PathParam(value?=?"objectName")?String?objectName,100); background-color:inherit">@Context?HttpServletRequest?request)??
- ????????BucketObject?bucketObject?=?objectManager.downloadObject(request.getHeader(CommonConstant.USER_TOKEN),CommonsUtil.generateSummary(request),?bucketName,?objectName);??
- //直接返回输出流??
- return?Response.ok(new?BigFileOutputStream(bucketObject.getDataStream())).build();??
这段代码比较简单:重点关注响应的实体类BigFileOutputStream,其传入的构造参数是一个输入流
该类的具体实现如下,其实关键的需要实现javax.ws.rs.core.StreamingOutput类,重写其write方法,将你得数据输出到write方法中得输出流中即可,resteasy框架会将其流直接输出到客户端
?*?实现用于直接响应一个输出流?
- ?*?@author?maomao?
- ?*?
- ?*/??
- class?BigFileOutputStream?implements?javax.ws.rs.core.StreamingOutput?{??
- private?InputStream?inputStream;??
- public?BigFileOutputStream(){}??
- public?BigFileOutputStream(InputStream?inputStream)??
- this.inputStream?=?inputStream;??
- void?write(OutputStream?output)?throws?IOException,??
- ????????????WebApplicationException?{??
- ??????????
- ????????IOUtils.copy(inputStream,?output);??
- public?InputStream?getInputStream()?{??
- return?inputStream;??
- void?setInputStream(InputStream?inputStream)?{??
- }??
客户端调用代码如下
//下载文件??
- private?void?downLoadObject()??
- ????{??
- ????????String?bucket?=?"EBOXTEST123456";???
- ????????String?objectName?=?"wangpan114daitupian.png";???
- ????????String?urlResouce?=??bucket?+?"/"?+?objectName;??
- ????????String?baseURL?=?"http://10.28.1.37:8080/application_interface_manager/platform/";??
- ????????String?hostURL?=?baseURL?+?urlResouce?;??
- ????????String?httpMethod?=?"GET";??
- ????????String?requestDate?=?new?Date().toString();??
- new?File("x:1142.png");??
- //生成摘要用于签名??
- ????????String?summary?=?httpMethod?+?"n"???
- ????????+?"n"???
- ????????+?"n"???
- ????????+?requestDate?+?"n"???
- ????????+?urlResouce;???
- ??????
- ????String?clientToken?=?new?CreateSignTokenImpl().getToken(summary,secretKey);??
- ????HttpURLConnection?urlConnection?=??
- ????(HttpURLConnection)?(new?URL(hostURL)).openConnection();??
- ????urlConnection.setRequestProperty("Token",?"jingdong?"+accessKey+":"+clientToken);??
- ????urlConnection.setRequestProperty("Date",?requestDate);??
- ????urlConnection.setDoInput( ????urlConnection.setRequestMethod(httpMethod);??
- ????InputStream?is?=?urlConnection.getInputStream();??
- //??FileUtils.copyInputStreamToFile(is,?localFile);??
- ????????OutputStream?op?=?new?FileOutputStream(localFile);??
- byte?[]?bts?=?new?byte[1024];??
- int?n?=?0;??
- while(-1?!=?(n?=?is.read(bts)))??
- ????????{??
- ????????????op.write(bts,?0,?n);??
- ????????}??
- //??????op.close();??
- ????????}?catch?(IOException?e1)?{??
- //?TODO?Auto-generated?catch?block??
- ????????e1.printStackTrace();??
- ????System.out.println(urlConnection.getResponseCode());??
- ????????e.printStackTrace();??
- ????}??
其实看着复杂,实际上很多代码不重要(偷懒把项目客户端调用代码直接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:testFTPsuzhou 0080200201401040007tailoredBIRTH17_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;
}
}
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|