在web.xml里加入以下代码
<!-- Jersey 配置 -->
<servlet>
<servlet-name>JerseyServlet</servlet-name>
<servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<!-- 系统启动时扫描的包的路径-->
<param-value>com.goodsoft</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>JerseyServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
测试类
package com.goodsoft;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import javax.ws.rs.Consumes;
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 javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
import com.sun.jersey.core.header.FormDataContentDisposition;
import com.sun.jersey.multipart.FormDataParam;
@Path("/test")
public class TestService {
/**
* http://localhost:8080/webservice/test
*/
@GET
@Produces(MediaType.TEXT_PLAIN)
public String helloWorld() {
String ret = "Hello World!";
return ret;
}
/**
* http://localhost:8080/webservice/test/userlist
*/
@Path("/userlist")
@GET
@Produces( { MediaType.APPLICATION_XML })
public List<User> getUsers() {
List<User> users = new ArrayList<User>();
for (long i = 1; i < 5; i++) {
User user = new User();
user.setUserId(i);
user.setUserName("yuhan" + i);
user.setNickName("supben" + i);
users.add(user);
}
return users;
}
// 解析path中的参数id 用@PathParam
/**
* http://localhost:8080/webservice/test/userinfo/1
*/
@Path("/userinfo/{id}")
@GET
@Produces( { MediaType.APPLICATION_XML })
public User getUserById(@PathParam("id") Long id) {
User user = new User();
user.setUserId(id);
user.setUserName("yuhan");
user.setNickName("supben");
return user;
}
/**
* http://localhost:8080/webservice/test/upload
* 有几个文件,就有几对参数,InputStream注解封装了文件的二进制流
* ,FormDataContentDisposition注解封装了对于文件的解析结果(包括文件名,文件后缀等) 演示一次获取多个文件的方法
*/
@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response upload(@FormDataParam("file1") InputStream in1, @FormDataParam("file1") FormDataContentDisposition fd1,
@FormDataParam("file2") InputStream in2, @FormDataParam("file2") FormDataContentDisposition fd2) {
System.out.println(fd1.getFileName() + "------");
FileUtils.writeToFile(in1, "d:/1.jpg");
FileUtils.writeToFile(in2, "d:/2.jpg");
return Response.ok().build();
}
/**
* http://localhost:8080/webservice/test/params/3/4?id=1&name=shen&age=3
* 演示一次获取多个path参数(跟在/后面的)和query参数(跟在?后面的) 的方法
*/
@GET
@Path("/params/{a}/{b}")
@Produces(MediaType.TEXT_PLAIN)
public String params(@Context UriInfo ui) {
MultivaluedMap<String, String> pathvalueMap = ui.getPathParameters();
MultivaluedMap<String, String> queryvalueMap = ui.getQueryParameters();
for (String s : pathvalueMap.keySet()) {
System.out.println("path参数名称为" + s + ",参数的值为" + pathvalueMap.get(s));
}
for (String s : queryvalueMap.keySet()) {
System.out.println("query参数名称为" + s + ",参数的值为" + queryvalueMap.get(s));
}
return "params method invoke success!";
}
/**
* http://localhost:8080/webservice/test/form演示获取form的全部参数的方法
*/
@POST
@Path("/form")
@Produces(MediaType.TEXT_PLAIN)
public String form(MultivaluedMap<String, String> formParams) {
for (String s : formParams.keySet()) {
System.out.println("form参数名称为" + s + ",参数的值为" + formParams.get(s));
}
return "form method invoke success!";
}
/**
* http://localhost:8080/webservice/test/formupload演示获取form的全部参数和上传的文件的方法
*/
@POST
@Path("/formupload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.TEXT_PLAIN)
public String formupload(@FormDataParam("file") InputStream in, @FormDataParam("file") FormDataContentDisposition fd,
@FormDataParam("name") String name) {
System.out.println(name);
System.out.println(fd.getFileName() + "------");
FileUtils.writeToFile(in, "d:/3.jpg");
return "formupload method invoke success!";
}
}
分享到:
相关推荐
NULL 博文链接:https://1197581932.iteye.com/blog/2400218
集成jersey、spring、mybatis、redis、struts、druid等框架
Restful Jersey webservice:包括Jersey实现的Restful webservice工程,这是一个比较实用的实例项目,在Tomcat中能实际正常运行起来。
基于rest的jersey的webservice 包含mvc设计模式 单例模式 工厂模式
ssh rest ws jax-rs jersey 做的小网站后台及web service接口用到了kindeditor编辑器 goouploader控件 代码完整,有sql代码。
jersey restful webservice最新版资源共享,欢迎下载!
java项目REST方式使用Jersey技术实现webservice远程调用,内附使用说明文档和Jersey包,方便学习和查阅,最重要的是我的资源优势就是物美价廉哟~~
使用Jersey创建XML,JSON格式的RESTful WebService的时候,要用到的jar库文件大集合。使用的时候只需要把这些文件放在WEB-INF\lib目录,并在Java Build Path中添加引用就可以了。
在这个框架中包含base认证,日志,rest,eclipselink jpa等等。但是有个问题就是我在利用@PersistenceUnit注解是总是无法成功,也只能自己亲自完成这块代码。
那么首先需要了解jersey和webservice的关系,捋顺webservice框架的各种实现,通过查阅相关博客,我个人总结webservice的结构图如下:通过上图,大概可以了解到webservice和jersey的关系了,然后我们需要了解RESTful...
jersey-1.1.2 restful webservice
Jersey和Tomcat构建RESTful WebService及其调用
一个使用Jersey和Tomcat搭建的RESTful WebService,实现了使用Get,POST,PUT,DELETE方法来操作资源,极具构建RESTful WebService的参考价值。
在Eclipse中使用Jersey和Tomcat构建RESTful WebService及其调用
NULL 博文链接:https://liangyingying1117.iteye.com/blog/2061846
自己找了资料整合了一份 jersey+spring rest webservice web maven服务器架构,希望有需要的人可以下载使用;
NULL 博文链接:https://1197581932.iteye.com/blog/2409545
用Jersey写的移动端WebService接口
这是一个restful风格的webservice框架,使用官方的jersey 整合mybatis和spring,需要用tomcat8才能运行,