这里介绍一个jersey与jetty整合开发restful应用的知识。将过去和羁绊全部丢弃,不要吝惜那为了梦想流下的泪水。
jersey与jetty的整合
一、创建一个maven项目,pom.xml的内容如下
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.linux.huhx</groupId> <artifactId>SpringLearn2</artifactId> <version>1.0-SNAPSHOT</version> <properties> <jetty-version>8.1.19.v20160209</jetty-version> </properties> <dependencies> <!-- jersey的依赖 --> <dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-servlet</artifactId> <version>1.19.4</version> </dependency> <!-- jetty的依赖--> <dependency> <groupId>org.eclipse.jetty.aggregate</groupId> <artifactId>jetty-all-server</artifactId> <version>${jetty-version}</version> </dependency> <!-- 对返回json串的支持 --> <dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-json</artifactId> <version>1.19.4</version> </dependency> <!-- junit 测试框架 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> </dependencies> </project>
二、创建一个web容器,在main方法启动jetty
package com.linux.huhx.main; import com.sun.jersey.spi.container.servlet.ServletContainer; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.servlet.ServletHolder; public class HttpServer { public static void main(String[] args) throws Exception { Server server = new Server(8090); ServletHolder servlet = new ServletHolder(ServletContainer.class); servlet.setInitParameter("com.sun.jersey.config.property.resourceConfigClass", "com.sun.jersey.api.core.PackagesResourceConfig"); servlet.setInitParameter("com.sun.jersey.config.property.packages", "com.linux.huhx.business"); servlet.setInitParameter("com.sun.jersey.api.json.POJOMappingFeature", "true"); ServletContextHandler handler = new ServletContextHandler(ServletContextHandler.SESSIONS); handler.setContextPath("/"); handler.addServlet(servlet, "/*"); server.setHandler(handler); server.start(); System.out.println("start...in 82"); } }
三、定义restful网格的api接口
package com.linux.huhx.business.action; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import java.util.HashMap; import java.util.Map; @Path("hello") public class HelloHuhxResource { /** * 简单的get请求,返回json数据 * @return */ @GET @Path("huhx") @Produces(MediaType.APPLICATION_JSON) public Map<String, String> sayHelloHuhx() { Map<String, String> map = new HashMap<>(); map.put("returnCode", "000000"); map.put("returnMsg", "I love you"); return map; } /** * json的请求和json数据的返回 * @param paramMap * @return */ @POST @Path("linux") @Produces(MediaType.APPLICATION_JSON) public Map<String, String> sayHelloLinux(Map<String, String> paramMap) { Map<String, String> map = new HashMap<>(); map.put("username", paramMap.get("username")); map.put("password", paramMap.get("password")); return map; } }
四、用浏览器和postman测试的结果如下
- 访问:http://localhost:8090/hello/huhx
返回结果:{"returnCode":"000000","returnMsg":"I love you"}
- 访问:http://localhost:8090/hello/linux 参数:{ "username": "linux", "password": "12345"}
返回结果:{ "password": "12345", "username": "linux"}
友情链接
- 关于jersey的文档:https://jersey.github.io/documentation/latest/index.html
- 关于java EE规范的restful: https://www.safaribooksonline.com/library/view/java-ee-7/9781449370589/ch04.html