Jersey框架的使用---使用环境的搭建和基础使用
一·Jersey 简介
引用维基百科的介绍 :"Jersey RESTful Web Services框架是一个用Java开发RESTful Web服务的开源框架。它提供对JAX-RS API的支持,并用作JAX-RS(JSR 311和JSR 339)参考实现" 维基百科网页链接
引用维基百科的介绍 :"表现层状态转换(REST,英文:Representational State Transfer)是Roy Thomas Fielding博士于2000年在他的博士论文[1] 中提出来的一种万维网软件架构风格,目的是便于不同软件/程序在网络(例如互联网)中互相传递信息。表现层状态转换(REST,英文:Representational State Transfer)是根基于超文本传输协议(HTTP)之上而确定的一组约束和属性,是一种设计提供万维网络服务的软件构建风格。" 维基百科网页链接
二·IDE、编译环境、工具的配置与使用
Demo使用的IDE为STS(spring tool suit),使用maven工具管理项目,JVM环境为JDK 8.0,Tomcat版本8.0。由于使用的maven,在此附上Jersey框架的依赖(为节省篇幅,代码格式缩进及排版暂时不考虑,使用时直接复制粘贴到正确位置就行)
<dependency><groupId>org.glassfish.jersey.containers</groupId><artifactId>jersey-container-servlet-core</artifactId><version>2.0</version></dependency><dependency><groupId>org.codehaus.jackson</groupId><artifactId>jackson-core-asl</artifactId><version>1.9.12</version></dependency><dependency><groupId>org.codehaus.jackson</groupId><artifactId>jackson-mapper-asl</artifactId><version>1.9.12</version></dependency><dependency><groupId>org.codehaus.jackson</groupId><artifactId>jackson-jaxrs</artifactId><version>1.9.12</version></dependency>
三·创建web项目
由于maven的默认依赖版本较旧,需要配置一番才能进行接下来的配置,具体细节详见我的上一篇博文:https://blog.csdn.net/LJX_ahut/article/details/82118704,按照该帖子可解决大部分新建maven web工程的问题。
首先在pom文件中添加Jersey框架依赖,代码已在上面给出。工程目录如图所示
四·jersey的初始化
修改web.xml文件,配置jersey servlet,下面附上完整代码
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<display-name>Archetype Created Web Application</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!--注册jersey 框架 servlet-->
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<!-- 配置默认的资源包路径,多个包路径用逗号或者分号隔开,使用默认的配置类去加载资源 -->
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>org.lujx.server</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
编写自定义servlet,需继承HttpServlet,代码和注释如下
package org.lujx.server;
import javax.inject.Inject;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import org.apache.log4j.Logger;
import org.lujx.utils.Result;
@Path("/jersey")
public class RestServlet extends HttpServlet {
//配置日志对象
private static final Logger LOGGER = Logger.getLogger("RestServlet");
// @Fields serialVersionUID : TODO
private static final long serialVersionUID = 4874619228969961679L;
//注入请求对象
//其中@Inject为JSR 注入标准,由JSR 330提供注解支持;@Context 功能基本相同,由Jersey框架提供解释支持
// @Context
@Inject
private HttpServletRequest request;
//注入回应对象。
@Context
private HttpServletResponse response;
@Path("test")
@POST
@Produces(MediaType.APPLICATION_JSON)
public String testRestFramework() {
String r = new String("testRestFramework");
LOGGER.info("a request named jersey_test has been received");
return r;
}
}
将项目add到tomcat环境中并启动,在浏览器中输入http://localhost:8080/master/rest/jersey/test ,即可调用testRestFramework方法。
五·知识点小结
(1).jersey的初始化配置有两种方法,前文用的是默认包资源的配置方式,在参考了其他一些前辈的博客之后,提供了一种更加优化的配置方式-->使用自定义配置类。自定义配置类继承自ResourceConfig,源码如下,可以看到,自定义servlet的资源加载方式同样有两种方式,一种是直接注册类的class对象,还有一种就是直接注册其所在的包。
package org.lujx.utils;
import org.codehaus.jackson.jaxrs.JacksonJsonProvider;
import org.glassfish.jersey.filter.LoggingFilter;
import org.glassfish.jersey.server.ResourceConfig;
import org.lujx.server.ResourceServlet;
import org.lujx.server.RestServlet;
public class APIApplication extends ResourceConfig {
public APIApplication() {
//加载类资源
register(RestServlet.class);
register(ResourceServlet.class);
//给出要扫描的包,也就是上面heloword所在的包,扫描多个包使用分号隔开
// packages("org.lujx.server");
//注册数据转换器
register(JacksonJsonProvider.class);
// Logging.
register(LoggingFilter.class);
}
}
(2).相关注解的解释
注解 | 解释 | 示例 |
---|---|---|
@Path("pathName") | 访问URL,带有"pathName"的根url可访问有该注解的servlet | 例如:在本例中,工程的根url是 :http://localhost:8080/master/rest ,在其后添加“/jersey” + "/test" 即可访问该类中注解了@Path("test") 的方法 |
@Inject | 表示资源注入,由JSR 330支持解释 | 与@Context功能大致相同 |
@POST | 配置访问该方法的请求方式 | 其他类别有@GET、@DELETE、@PUT,分别对应post、get、delete、put类型的请求 |
@Produces | 配置方法返回的数据类型 | 参数为MediaType.APPLICATION_JSON表示返回的是Json类型的数据 |
项目源码地址:https://download.csdn.net/download/ljx_ahut/10631245
参考资料:
https://blog.csdn.net/u012706811/article/details/52054153
https://blog.csdn.net/cc41798520101/article/details/72910327
https://www.cnblogs.com/jiang1995/p/5141908.html
也有的同学没有maven环境,重新配置又嫌麻烦,可以直接去 官方网站 下载相应的jar包,这里提供csdn的资源下载链接:https://download.csdn.net/download/ljx_ahut/10631330 本想免费,但是网站限制好像最少一分,所及还是建议您从官方网站下载吧。
更多推荐
所有评论(0)