简介
RESTful Web Service是轻量级的service,可以通过HTTP的方式来实现对后台数据库的CRUD,
在Web开发和移动开发时使用的比较广泛,非常方便。
在Java世界里, JAX-RS规范定义了对RESTful Web Service的实现。
Oracle的Jersey框架则是对JAX-RS的一个实现。
下面我们学习如何使用Jersey来创建RESTful WebService。
使用
准备环境
下载jersey
创建一个 Dynamic Web Project.
- 把刚刚下载的jersey解压,把lib目录下面的jar包放到WEB-INF/lib下面
配置
在web.xml配置文件里面,配置如下信息
<servlet> <servlet-name>Jersey REST Service</servlet-name> <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> <init-param> <param-name>com.sun.jersey.config.property.packages</param-name> <param-value>com.aplex.web</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>
创建java类
package com.aplex.web; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; @Path("/hello") public class FindUsers { // This method is called if TEXT_PLAIN is request @GET @Produces(MediaType.TEXT_PLAIN) public String sayPlainTextHello() { System.out.println("hello"); return "Hello Jersey"; } // This method is called if XML is request @GET @Produces(MediaType.TEXT_XML) public String sayXMLHello() { return "<?xml version=\"1.0\"?>" + "<hello> Hello Jersey" + "</hello>"; } // This method is called if HTML is request @GET @Produces(MediaType.TEXT_HTML) public String sayHtmlHello() { return "<html> " + "<head><title>" + "Hello Jersey" + "</title>" +"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"></head>" + "<body><h1>" + "say Hello to 小胖 from webserivce base on jersey" + "</body></h1>" + "</html> "; } }
访问
http://localhost:8080/RestfulDemo/rest/hello
拓展
jersey还有个强大之处就是能完成bean和 (XML与json的映射,类似于Android的Gson;
使用
新建一个类ResponseJson.java
package com.aplex.web; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import com.aplex.web.bean.User; @Path("/getjson") public class ResponseJson { @GET @Produces({MediaType.APPLICATION_JSON }) public User getUser(){ User u = new User(); u.setUsername("cmz8888"); u.setPassword("888888"); return u; } }
新建一个类User.java
package com.aplex.web.bean; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement public class User { private String username; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
访问
http://localhost:8080/RestfulDemo/rest/getjson