Jersey + JSONP 示例
原文: https://howtodoinjava.com/jersey/jax-rs-jersey-jsonp-example/
本教程介绍了如何在 Jersey2.x 中使用 JSONP JSON 供应器。 就像我们在 Jersey MOXy 示例中讨论的一样,JSONP 也可以自动发现。
Table of Contents
JSONP maven dependencies/changes
REST API code
Model bean changes
Manually adding JsonProcessingFeature
JSONP Maven 依赖项/更改
JSONP 媒体模块是 Jersey2.x 中的模块之一,您无需明确注册其功能,例如JsonProcessingFeature
。 一旦 Jersey 检测到添加了它的存在,它就会自动注册。 因此,只需在pom.xml
中添加 JSONP 依赖项就可以完成一半的工作。
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-processing</artifactId>
<version>2.19</version>
</dependency>
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, "Lokesh Gupta"));
list.getEmployeeList().add(new Employee(2, "Alex Kolenchiskey"));
list.getEmployeeList().add(new Employee(3, "David Kameron"));
return list;
}
}
模型 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 + "]";
}
}
手动添加JsonProcessingFeature
尽管org.glassfish.jersey.jsonp.JsonProcessingFeature
是自动注册的,但是如果您希望手动注册,则可以按以下配置添加它。
public class CustomApplication extends ResourceConfig
{
public CustomApplication()
{
register(JsonProcessingFeature.class);
packages("com.howtodoinjava.jersey");
packages("org.glassfish.jersey.examples.jsonp");
register(LoggingFilter.class);
property(JsonGenerator.PRETTY_PRINTING, true);
}
}
并将此Application
类添加到web.xml
文件中。
<!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.howtodoinjava.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>
在下面将您的问题和评论发送给我。
祝您学习愉快!
参考: https://jersey.java.net/documentation/latest/media.html#json.json-p