文档章节

基于Jersey的RESTful学习

longload
 longload
发布于 2016/07/12 17:49
字数 888
阅读 14
收藏 0
  1. Jersey与Spring整合依赖的jar
    <dependency>
    			  <groupId>org.glassfish.jersey.ext</groupId>
    			  <artifactId>jersey-spring3</artifactId>
    			  <version>${jersey.version}</version>
    			  <exclusions> <!-- 移除jersey自己的spring库 -->
    			    <exclusion>
    			      <groupId>org.springframework</groupId>
    			      <artifactId>spring-core</artifactId>
    			    </exclusion>			
    			    <exclusion>
    			      <groupId>org.springframework</groupId>
    			      <artifactId>spring-web</artifactId>
    			    </exclusion>
    			    <exclusion>
    			      <groupId>org.springframework</groupId>
    			      <artifactId>spring-beans</artifactId>
    			    </exclusion>
    			  </exclusions>			
    			</dependency>
    			
    			<dependency>
    			  <groupId>org.glassfish.jersey.media</groupId>
    			  <artifactId>jersey-media-json-jackson</artifactId>
    			  <version>${jersey.version}</version>
    			</dependency>
     
  2.  web.xml配置
    <servlet>
    	  <servlet-name>jersey-serlvet</servlet-name>
    	  <servlet-class>
    	    org.glassfish.jersey.servlet.ServletContainer
    	  </servlet-class>
    	  <!-- 配置自己的资源加载类去加载资源,在类中设置 -->
    		<init-param>
    		<param-name>javax.ws.rs.Application</param-name>
    		<param-value>com.sj.webservice.RestServiceApplication</param-value>
    		</init-param>
    	<!-- 配置默认的资源包路径,使用默认的配置类去加载资源,包下面所有的类将查找服务 -->
    	  <!-- <init-param>
    	   <param-name>jersey.config.server.provider.packages</param-name> 
    	   <param-value>com.sj.webservice.service</param-value>   
    	  </init-param>  -->
    	  <load-on-startup>1</load-on-startup>
    	 </servlet>
    	
    	 <servlet-mapping>
    	  <servlet-name>jersey-serlvet</servlet-name>
    	  <url-pattern>/services/*</url-pattern>
    	 </servlet-mapping>
     上面有两种加载资源的方式,一种是使用自己的资源加载器去加载资源,需要给出自己资源加载器的位置。另一种是使用默认的资源加载器加载,需要给出资源所在的package。个人偏好第一种,写一个自己的资源加载器去加载想要加载的资源,这样感觉可控性强一点,自己写的时候也可以指定包路径。
  3.  RestServiceApplication代码
    package com.sj.webservice;
    
    import org.glassfish.jersey.server.ResourceConfig;
    
    import com.sj.webservice.service.TestRestService;
    
    public class RestServiceApplication  extends ResourceConfig{
    	public RestServiceApplication() {
    		// 加载resources单个服务
    		register(TestRestService.class);
    		
    		//packages("cn.com.vs.service");//服务类所在的包路径(以包的方式)
    		// 注册数据转换器
    		//register(JacksonJsonProvider.class);
    		// 注册日志
    		//register(LoggingFilter.class);
    		 
    		}
    }
     
  4. 测试类代码
    package com.sj.webservice.service;
    
    
    import javax.ws.rs.GET;
    import javax.ws.rs.Path;
    import javax.ws.rs.Produces;
    import javax.ws.rs.core.MediaType;
    
    import org.springframework.context.annotation.Scope;
    import org.springframework.stereotype.Component;
    
    import com.sj.webservice.service.modal.Test;
    
    @Component
    @Scope("prototype")
    @Path(value = "/processes")
    @Produces(MediaType.APPLICATION_JSON)
    public class TestRestService {
    
    
    	@GET
    	@Path("/create")
    	public Test createProcess() {
    		Test t=	new Test();
    		t.setName("哈哈哈");
    		return t;
    	}
    }
     
  5. 输入路径测试 http://127.0.0.1:8080/xxx/services/processes/create
  6. webservice和jersey的关系

     jersey1.X的版本是sun公司提供的独立的jar包,在2.X版本中,已经将jersey放在glassfish下。同时Java也支持jersey的webservice,支持webservice的注解的包都在javax.ws.rs.*包中。
  7. jersey常用注解解释:                                                                             

     

    Annotation 作用 说明
    @GET 查询请求 相当于数据库的查询数据操作
    @POST 插入请求 相当于数据库的插入数据操作
    @PUT 更新请求 相当于数据库的更新数据操作
    @DELETE 删除请求 相当于数据的删除数据操作
    @Path uri路径 定义资源的访问路径,client通过这个路径访问资源。比如:@Path("user")
    @Produces 指定返回MIME格式 资源按照那种数据格式返回,可取的值有:MediaType.APPLICATION_XXX。比如:@Produces(MediaType.APPLICATION_XML)
    @Consumes 接受指定的MIME格式 只有符合这个参数设置的请求再能访问到这个资源。比如@Consumes("application/x-www-form-urlencoded")
    @PathParam uri路径参数 写在方法的参数中,获得请求路径参数。比如:@PathParam("username")  String userName
    @QueryParam uri路径请求参数 写在方法的参数中,获得请求路径附带的参数。比如:@QueryParam("desc")  String desc
    @DefaultValue 设置@QueryParam参数的默认值 如果@QueryParam没有接收到值,就使用默认值。比如:@DefaultValue("description") @QueryParam("desc") String desc
    @FormParam form传递的参数 接受form传递过来的参数。比如:@FormParam("name")  String userName
    @BeanParam 通过Bena的形式传递参数 接受client传递的bean类型的参数,同时这个bean可以在属性上配置@FormParam用以解决client的属性名称和bean的属性名称不一致的问题。比如:@BeanParam  User user
    @Context 获得一些系统环境信息 通过@Context可以获得以下信息:UriInfo、ServletConfig、ServletContext、HttpServletRequest、HttpServletResponse和HttpHeaders等
    @XmlRootElement 将bean转换为xml 如果要讲bean以xml或json的格式返回,必须要这个注解。比如:

    @XmlRootElement

    public class User{...}

    @XmlElements    
    @XmlElement

© 著作权归作者所有

共有 人打赏支持
longload
粉丝 3
博文 66
码字总数 104702
作品 0
成都
程序员
私信 提问
Jersey中@PathParam和@QueryParam的区别

前言 图书馆项目controller层代码是由swagger工具定义好的api生成的,在实现接口的时候,出现了@PathParam和@QueryParam,这两个都可以实现功能,究竟有什么不一样呢? 正文 Jersey RESTful 框...

zt15732625878
2017/10/16
0
0
最好的8个Java RESTful框架

过去的每一year,涌现出越来越多的Java框架。就像JavaScript,每个人都认为他们知道一个好的框架的功能应该是怎么样的。连我的老祖母现在也使用 一个我从来没有听说过而且可能永远不会使用的...

李景枫
2016/05/03
8.6K
27
【用jersey构建REST服务】系列文章

1.用Jersey构建RESTful服务1--HelloWorldhttp://www.waylau.com/jersey-restful-helloworld/2.用Jersey构建RESTful服务2--JAVA对象转成XML输出http://www.waylau.com/jersey-restful-java-x......

waylau
2014/08/23
0
1
waylau/rest-in-action

REST in Action 《REST 实战》 REST in Action base on Jersey.Learning REST step by step with a large number of samples and finally build a complete RESTful application.There is al......

waylau
2016/05/05
0
0
【2016-05-08】Jersey vs. SpringMVC

当前Web Service 常用的风格有两种,RESTful风格和RPC风格。 一、RESTful与RPC简介 RPC的中心是方法,REST的中心是资源。 RPC:其中RPC风格中常见的有XML-RPC和JSON-RPC,JSON以其简洁、传输...

rathan0
2016/05/08
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

C++ vector和list的区别

1.vector数据结构 vector和数组类似,拥有一段连续的内存空间,并且起始地址不变。 因此能高效的进行随机存取,时间复杂度为o(1); 但因为内存空间是连续的,所以在进行插入和删除操作时,会造...

shzwork
今天
3
0
Spring之invokeBeanFactoryPostProcessors详解

Spring的refresh的invokeBeanFactoryPostProcessors,就是调用所有注册的、原始的BeanFactoryPostProcessor。 相关源码 public static void invokeBeanFactoryPostProcessors(Configu......

cregu
昨天
4
0
ibmcom/db2express-c_docker官方使用文档

(DEPRECIATED) Please check DB2 Developer-C Edition for the replacement. What is IBM DB2 Express-C ? ``IBM DB2 Express-C``` is the no-charge community edition of DB2 server, a si......

BG2KNT
昨天
3
0
Ubuntu 18.04.2 LTS nvidia-docker2 : 依赖: docker-ce (= 5:18.09.0~3-0~ubuntu-bionic)

平台:Ubuntu 18.04.2 LTS nvidia-docker2 版本:2.0.3 错误描述:在安装nvidia-docker2的时候报dpkg依赖错误 nvidia-docker2 : 依赖: docker-ce (= 5:18.09.0~3-0~ubuntu-bionic) 先看一下依......

Pulsar-V
昨天
4
0
学习笔记1-goland结构体(struct)

写在前面:若有侵权,请发邮件by.su@qq.com告知。 转载者告知:如果本文被转载,但凡涉及到侵权相关事宜,转载者需负责。请知悉! 本文永久更新地址:https://my.oschina.net/bysu/blog/3036...

不最醉不龟归
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部