JSONP Maven 依赖项/更改
JSONP 媒体模块是 Jersey 2.x 中的模块之一,我们无需显式注册它的功能,例如 JsonProcessingFeature。
一旦 Jersey 检测到它在类路径中的存在,它会自动注册它。
所以只需在 pom.xml
中添加 JSONP 依赖就可以完成一半的工作。
<dependency> <groupId>org.glassfish.jersey.media</groupId> <artifactId>jersey-media-json-processing</artifactId> <version>2.19</version> </dependency>
手动添加 JsonProcessingFeature
虽然 org.glassfish.jersey.jsonp.JsonProcessingFeature
是自动注册的,如果你想手动注册它,你可以在配置中添加它,如下所示。
public class CustomApplication extends ResourceConfig { public CustomApplication() { register(JsonProcessingFeature.class); packages("com.onitroad.jersey"); packages("org.glassfish.jersey.examples.jsonp"); register(LoggingFilter.class); property(JsonGenerator.PRETTY_PRINTING, true); } }
并在 web.xml
文件中添加这个 Application 类。
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Archetype Created Web Application</display-name> <servlet> <servlet-name>jersey-serlvet</servlet-name> <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> <init-param> <param-name>javax.ws.rs.Application</param-name> <param-value>com.onitroad.jersey.CustomApplication</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>jersey-serlvet</servlet-name> <url-pattern>/rest/*</url-pattern> </servlet-mapping> </web-app>
REST API 代码
在编写 API 的服务端,我们需要使用 @Produces(MediaType.APPLICATION_JSON)
注释启用 JSON 媒体类型。
JerseyService.java
@Path("/employees") public class JerseyService { @GET @Produces(MediaType.APPLICATION_JSON) public Employees getAllEmployees() { Employees list = new Employees(); list.setEmployeeList(new ArrayList<Employee>()); list.getEmployeeList().add(new Employee(1, "JackLi Gupta")); list.getEmployeeList().add(new Employee(2, "JackLi Kolenchiskey")); list.getEmployeeList().add(new Employee(3, "Tomm Kameron")); return list; } }
欢迎 on
it
road
模型 bean 更改
在模型 bean 端,我们不需要放置任何注释或者任何配置。
默认情况下它将起作用。
我们甚至不需要放置任何根注释。
Employees.java
public class Employees { private List<Employee> employeeList; public List<Employee> getEmployeeList() { return employeeList; } public void setEmployeeList(List<Employee> employeeList) { this.employeeList = employeeList; } }
Employee.java
public class Employee { private Integer id; private String name; public Employee() { } public Employee(Integer id, String name) { this.id = id; this.name = name; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Employee [id=" + id + ", name=" + name + "]"; } }
日期:2020-09-17 00:16:32 来源:oir作者:oir