首先,我们简单的了解一下Jersey(其实我也不太懂,百度的)
Jersey RESTful 框架是开源的RESTful框架, 实现了JAX-RS (JSR 311 & JSR 339) 规范。它扩展了JAX-RS 参考实现, 提供了更多的特性和工具, 可以进一步地简化 RESTful service 和 client 开发。尽管相对年轻,它已经是一个产品级的 RESTful service 和 client 框架。与Struts类似,它同样可以和hibernate,spring框架整合。
由于Struts2+hibernate+spring整合在市场的占有率太高,所以很少一部分人去关注Jersey。所以网上有关于Jersey的介绍很少。但是它确实是一个非常不错的框架。对于请求式服务,对于GET,DELETE请求,你甚至只需要给出一个URI即可完成操作。
举个简单的例子:如果你想获得服务器数据库中的所有数据;那么你可以在浏览器或者利用Ajax的GET方法,将路径设置好;例如:localhost:8080/Student(项目名称)/studentinfo(项目服务总体前缀)/student(处理student对象的签注)/getStudentInfo(最后前缀)。这样就可以获取所有学生信息。你可以选择GET获取的数据的返回类型:JSON,XML,TEXT_HTML(String)..获取之后,你可以通过JS将这些数据塞到html或者jsp页面上。
上面是纯粹的百度百科资料,有想详细了解使用jersey的优点的可以搜搜看,下面是配置过程:
首先当然是maven引入jar包
<!-- jersey -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jersey</artifactId>
</dependency>
然后是配置类-JerseyConfig
import org.glassfish.jersey.server.ResourceConfig;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.filter.RequestContextFilter;
@Configuration
public class JerseyConfig extends ResourceConfig{
public JerseyConfig(){
//两种注册方式都可以
packages("com.zng");//注册包路径
register(RequestContextFilter.class);//注册类
}
}
然后是引用方式:
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
@Path("/rest")
public class PathResource {
@GET
@Path("say")
@Produces(MediaType.APPLICATION_JSON)
public String test(){
return "Say Hello";
}
}
具体注解含义可以对照上面的表格看看
这样基本上就可以了,浏览器输入相应路径就可以访问了
有一点比较坑的就是:
集成了Jersey之后,原有的通过@Controller来进行的访问控制就无法使用了,两者好像无法共存,我试了很多方法,想要实现通过不同的拦截url来区别达到共存的状态,结果都失败了,jersey在springboot的配置文件中可以设置一些参数,不清楚有什么作用,没有继续尝试,后续有时间再玩玩吧