博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用 Jersey 和 Apache Tomcat 7 构建 JAX-RS 环境
阅读量:7027 次
发布时间:2019-06-28

本文共 2076 字,大约阅读时间需要 6 分钟。

hot3.png

前两天开始看Web Service方面的资料,项目中使用的是Axis,Axis支持的是JAX-WS的API。现在比较流行RESTful,就顺便学习一下JAX-RS。

选择的框架是。比较了一下和,觉得Jersey比较简洁,符合我带点强迫症的心理。

在让Tomcat支持Annotation的过程中走了不少弯路,这方面做得相当糟糕。

主要参考资料:

最终搭建完成时候发现是相当的简单。。。

1.核心功能只用到了4个jar包,将它们放到WEB-INF/lib中:

asm.jarjersey-core.jarjersey-server.jarjersey-servlet.jar

2.在WEB-INF/web.xml中添加

com.sun.jersey.spi.container.servlet.ServletContainer
1

这就是配置的关键。它的作用是“Scanning for root resource and provider classes in the Web app resource paths”,这样代码中的Annotation配置就会生效。

 3.实现

JAX-RS 没有定义 Component 或是 VirtualHost,只是用 Application 来存放所有的 REST 资源。

package canghailan.jaxrs;import java.util.HashSet;import java.util.Set;import javax.ws.rs.ApplicationPath;import javax.ws.rs.core.Application;@ApplicationPath("/services")public class MyApplication extends Application {	@Override	public Set
> getClasses() { Set
> classes = new HashSet<>(); classes.add(HelloWorldService.class); return classes; }}

package canghailan.jaxrs;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.MediaType;@Path("/")public class HelloWorldService {	@Path("/welcome/{name}")	 	@Produces(MediaType.TEXT_PLAIN)	public String welcome(@PathParam("name") String name) {		return "Welcome, " + name + "!";	}}

启动Tomcat时,日志输出:“Root resource classes found”。 

访问:

Welcome, baby!

 4.添加json支持

jackson-core-asl.jarjackson-jaxrs.jarjackson-mapper-asl.jarjackson-xc.jar

启动Tomcat时,日志输出:“Provider classes found”。

在Application中添加Provider:

public Set
> getClasses() { Set
> classes = new HashSet<>(); classes.add(JacksonJsonProvider.class); classes.add(HelloWorldService.class); return classes; }

  在HelloWorldService中添加:

@Path("/auth/{name}")	 	@Produces(MediaType.APPLICATION_JSON)	public User auth(@PathParam("name") String name) {		return new User(name, "123456");	}

public class User {	private String name;	private String password;...}

访问 :

{"name":"baby","password":"123456"}

 

 

 

转载于:https://my.oschina.net/canghailan/blog/71923

你可能感兴趣的文章
设计模式之(Adapter)适配器模式
查看>>
python中函数的定义、返回值以及参数的简要介绍
查看>>
没有名字
查看>>
4/16 近期状态
查看>>
线程基础2
查看>>
【本周主题】第二期:浏览器组成及工作原理深度了解
查看>>
Unity Webplayer installation error- Unity Webplayer update finished, but installed..
查看>>
自定义美化滚动条
查看>>
idea之查看类的上下级继承关系
查看>>
preHandle 添加参数和重写参数的问题,重写HttpServletRequestWrapper和Filter
查看>>
〖Android〗依据资源信息,Mock Android资源
查看>>
Spring(一)容器
查看>>
给ASP.net程序配置代理服务器
查看>>
Java探索之旅(7)——对象的思考
查看>>
傻瓜都能看懂的网络流ek算法(poj1273)
查看>>
python简易web服务器学习笔记(二)
查看>>
结束进程的批处理文件
查看>>
获取select option的text
查看>>
第九周作业
查看>>
python中几个常见的黑盒子之“字典dict” 与 “集合set”
查看>>