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</modelVersion>
- <groupId>rest.resteasy</groupId>
- <artifactId>rest-resteay-demo</artifactId>
- <packaging>war</packaging>
- <version>1.0</version>
- <name>rest-resteay-demo Maven Webapp</name>
- <url>http://maven.apache.org</url>
- <repositories>
- <repository>
- <id>java.net</id>
- <url>http://download.java.net/maven/1</url>
- <layout>legacy</layout>
- </repository>
- <repository>
- <id>maven repo</id>
- <name>maven repo</name>
- <url>http://repo1.maven.org/maven2/</url>
- </repository>
- <!-- For resteasy -->
- <repository>
- <id>jboss</id>
- <name>jboss repo</name>
- <url>http://repository.jboss.org/nexus/content/groups/public/</url>
- </repository>
- </repositories>
- <dependencies>
- <dependency>
- <groupId>org.jboss.resteasy</groupId>
- <artifactId>resteasy-jaxrs</artifactId>
- <version>2.2.1.GA</version>
- <!-- filter out unwanted jars -->
- <exclusions>
- <exclusion>
- <groupId>commons-httpclient</groupId>
- <artifactId>commons-httpclient</artifactId>
- </exclusion>
- <exclusion>
- <groupId>javax.servlet</groupId>
- <artifactId>servlet-api</artifactId>
- </exclusion>
- <exclusion>
- <groupId>javax.xml.bind</groupId>
- <artifactId>jaxb-api</artifactId>
- </exclusion>
- <exclusion>
- <groupId>com.sun.xml.bind</groupId>
- <artifactId>jaxb-impl</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.jboss.resteasy</groupId>
- <artifactId>resteasy-jettison-provider</artifactId>
- <version>2.2.1.GA</version>
- <exclusions>
- <exclusion>
- <groupId>javax.xml.bind</groupId>
- <artifactId>jaxb-api</artifactId>
- </exclusion>
- <exclusion>
- <groupId>com.sun.xml.bind</groupId>
- <artifactId>jaxb-impl</artifactId>
- </exclusion>
- <exclusion>
- <groupId>javax.xml.stream</groupId>
- <artifactId>stax-api</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>3.8.1</version>
- <scope>test</scope>
- </dependency>
- </dependencies>
- <build>
- <finalName>rest-resteay-demo</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>
- </plugins>
- </build>
- </project>
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-app>
- <context-param>
- <param-name>resteasy.resources</param-name>
- <param-value>resteasy.server.Echo</param-value>
- </context-param>
- <listener>
- <listener-class>
- org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap
- </listener-class>
- </listener>
- <servlet>
- <servlet-name>Resteasy</servlet-name>
- <servlet-class>
- org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher
- </servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>Resteasy</servlet-name>
- <url-pattern>/*</url-pattern>
- </servlet-mapping>
- </web-app>
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" >
- <web-app>
- <context-param>
- <param-name>resteasy.resources</param-name>
- <param-value>resteasy.server.Echo</param-value>
- </context-param>
- <listener>
- <listener-class> org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap </listener-class>
- </listener>
- <servlet> <servlet-name>Resteasy</servlet-name>
- <servlet-class> org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher </servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>Resteasy</servlet-name> <url-pattern>/*</url-pattern>
- </servlet-mapping>
- </web-app></span>
这是第一波中得web.xml,也就是用的listener来进行的服务发布:
查看源代码可以发现public class ResteasyBootstrap implements ServletContextListener,其实现了ServletContextListener 接口,通过获取
- <context-param>
- <param-name>resteasy.resources</param-name>
- <param-value>resteasy.server.Echo</param-value>
- </context-param>
- resteasy.resources
查看官方文档可以发现其他用于加载资源类的参数
resteasy.scan.resources 默认值:false 用途:设置为ture时,将自动搜索 WEB-INF/lib下面的 jars 和 WEB-INF/classes目录中有(@GET @POST ...)注解的class并注册为服务 |
- <!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>
- <servlet>
- <servlet-name>Resteasy</servlet-name>
- <servlet-class>
- org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher
- </servlet-class>
- <init-param>
- <param-name>javax.ws.rs.Application</param-name>
- <param-value>resteasy.server.MyApplication</param-value>
- </init-param>
- </servlet>
- <servlet-mapping>
- <servlet-name>Resteasy</servlet-name>
- <url-pattern>/*</url-pattern>
- </servlet-mapping>
- </web-app>
- javax.ws.rs.Application
- package resteasy.server;
- import java.util.HashSet;
- import java.util.Set;
- import javax.ws.rs.core.Application;
- public class MyApplication extends Application{
- Set<Object> objectSet = new HashSet<Object>();
- Set<Class<?>> classSet = new HashSet<Class<?>>();
- public MyApplication()
- {
- objectSet.add(new Echo());
- // classSet.add(Echo.class);
- }
- @Override
- public Set<Class<?>> getClasses() {
- // TODO Auto-generated method stub
- return classSet;
- }
- @Override
- public Set<Object> getSingletons() {
- // TODO Auto-generated method stub
- return objectSet;
- }
- }
作为servlet进行资源的注册,你会发现不能将静态文件(html,images)注册为资源,所以resteasy还提供了filter进行资源的注册,不妨碍其获取静态文件
继续引用上一个例子,只用修改其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>
- <filter>
- <filter-name>Resteasy</filter-name>
- <filter-class>
- org.jboss.resteasy.plugins.server.servlet.FilterDispatcher
- </filter-class>
- <init-param>
- <param-name>javax.ws.rs.Application</param-name>
- <param-value>resteasy.server.MyApplication</param-value>
- </init-param>
- </filter>
- <filter-mapping>
- <filter-name>Resteasy</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
- </web-app>
这里指的上传是指利用resteasy来获取:客户端HTTP开发包发送的body请求-----刚开始也没撒头绪,第一时间去google,发现有哥们问同样的问题,但是却没有解决方法,于是乎就只有硬着头皮看英文文档,发现如下文档:
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主体部分的数据。
客户端的代码如下
- String urlResouce = "http://localhost:8080/cloud-storeage-boss/muluSDF/xyz.png"; // create URL
- File localFile = new File("C:\\Users\\maomao\\Pictures\\2.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();
- }
resteasy与spring真正集成发布我们的restful webservice 服务(实例、教程)
原本以为根据文档集成resteasy与spring很简单,但是却还是花费的一定时间,避免大家走弯路----现在网上有的相关的集成都只是,spring加入进项目,木有与resteasy真正集成
老规矩,先上MAVEN的配置文件中依赖包:
- <dependencies>
- <!-- core library -->
- <dependency>
- <groupId>org.jboss.resteasy</groupId>
- <artifactId>resteasy-jaxrs</artifactId>
- <version>2.2.1.GA</version>
- </dependency>
- <!-- optional modules -->
- <!-- Spring integration -->
- <dependency>
- <groupId>org.jboss.resteasy</groupId>
- <artifactId>resteasy-spring</artifactId>
- <version>2.2.1.GA</version>
- </dependency>
- <!-- JAXB support -->
- <dependency>
- <groupId>org.jboss.resteasy</groupId>
- <artifactId>resteasy-jaxb-provider</artifactId>
- <version>2.2.1.GA</version>
- </dependency>
- <!-- spring -->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring</artifactId>
- <version>2.5.6.SEC03</version>
- </dependency>
- </dependencies>
注意上图中得resteasy-spring模块依赖,和spring依赖
resteasy-spring直接配置似乎不能自动下载,如果不行可以自己去官网下载然后安装到私服仓库
还有spring的依赖必须是要有的,resteasy-spring只是提供集成代码
2.关键的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>
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath*:applicationContext*.xml</param-value>
- </context-param>
- <!--
- <context-param>
- <param-name>resteasy.scan.resources</param-name>
- <param-value>true</param-value>
- </context-param>
- -->
- <listener>
- <listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class>
- </listener>
- <listener>
- <listener-class>org.jboss.resteasy.plugins.spring.SpringContextLoaderListener</listener-class>
- </listener>
- <servlet>
- <servlet-name>Resteasy</servlet-name>
- <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>Resteasy</servlet-name>
- <url-pattern>/*</url-pattern>
- </servlet-mapping>
- </web-app>
- <listener-class>org.jboss.resteasy.plugins.spring.SpringContextLoaderListener</listener-class>
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath*:applicationContext*.xml</param-value>
- </context-param>
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 ">
- <!-- service point -->
- <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;
- /**
- * service point endpoint
- * @author
- *
- */
- @Path(value = "/")
- public 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;
- }
- public void setManager(Manager manager) {
- this.manager = manager;
- }
- }
- package com.jd.interfacce.manager.impl;
- import com.jd.interfacce.manager.Manager;
- public class ManagerImpl implements Manager{
- @Override
- public String getMessage(String message)
- {
- return message;
- }
- }
利用resteasy框架构建rest webservice----第五波:java代码调用乱码解决方案
- 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) {
- // TODO Auto-generated catch block
- e1.printStackTrace();
- } // create URL
- File localFile = new File("Z:\\tools\\eclipse-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);
- IOUtils.copy(fileInputStream, urlOutputStream);
- fileInputStream.close();
- urlOutputStream.close();
- System.out.println(urlConnection.getResponseCode());
- }
- catch(Exception e)
- {
- e.printStackTrace();
- }
这个原理比较简单因为中文时两个字节,而在网络进行传输的时候由于某种原因(具体原因就是编码的问题,请google)会进行单字节的编码,解析出来的中文就变乱码了。----浏览器在传输的时候都会对中文进行编码传输
实现文件下载
基于resteasy下载的实现,先贴出下载的代码
- /**
- * 下载对象
- * @param bucketName
- * @param objectName
- * @param request
- * @return
- */
- @Path(value = "/{bucketName}/{objectName}")
- @GET
- @Produces(MediaType.APPLICATION_OCTET_STREAM)
- public Response downloadObject(@PathParam(value = "bucketName") String bucketName,@PathParam(value = "objectName") String objectName,@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
- *
- */
- public class BigFileOutputStream implements javax.ws.rs.core.StreamingOutput {
- private InputStream inputStream;
- public BigFileOutputStream(){}
- public BigFileOutputStream(InputStream inputStream)
- {
- this.inputStream = inputStream;
- }
- @Override
- public void write(OutputStream output) throws IOException,
- WebApplicationException {
- // TODO Auto-generated method stub
- IOUtils.copy(inputStream, output);
- }
- public InputStream getInputStream() {
- return inputStream;
- }
- public void setInputStream(InputStream inputStream) {
- this.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();
- try{
- File localFile = new File("x:\\1142.png");
- //生成摘要用于签名
- String summary = httpMethod + "\n" // create StringToSign
- + "\n" // no Content-Md5 Filed
- + "\n" // no Content-Type Filed
- + requestDate + "\n" // Date Filed---must
- + urlResouce; //must
- //创建客户端签名
- 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(true);
- urlConnection.setRequestMethod(httpMethod);
- InputStream is = urlConnection.getInputStream();
- // FileUtils.copyInputStreamToFile(is, localFile);
- try {
- 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());
- }
- catch(Exception e)
- {
- 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:\\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,String> map = new HashMap<String,String>();
map.put("reqId", "650fce42dd024983b7e1b6a1a1e0b873");
map.put("result", "YES");
list.add(map);
map = new HashMap<String,String>();
map.put("reqId", "25a1df5e9fce4af1bc7f7dcd379d63bb");
map.put("result", "YES");
list.add(map);
map = new HashMap<String,String>();
map.put("reqId", "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>> list = new ArrayList<Map<String,String>>();
Map<String, String> map = new HashMap<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;
}
}