多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# Jersey + JSONP 示例 > 原文: [https://howtodoinjava.com/jersey/jax-rs-jersey-jsonp-example/](https://howtodoinjava.com/jersey/jax-rs-jersey-jsonp-example/) 本教程介绍了如何在 Jersey2.x 中使用 [**JSONP**](https://en.wikipedia.org/wiki/JSONP) JSON 供应器。 就像我们在 [Jersey MOXy 示例](//howtodoinjava.com/jersey/jax-rs-jersey-moxy-json-example/)中讨论的一样,JSONP 也可以自动发现。 ```java Table of Contents JSONP maven dependencies/changes REST API code Model bean changes Manually adding JsonProcessingFeature ``` ## JSONP Maven 依赖项/更改 JSONP 媒体模块是 Jersey2.x 中的模块之一,您无需明确注册其功能,例如[`JsonProcessingFeature`](https://jersey.java.net/apidocs/2.0/jersey/org/glassfish/jersey/jsonp/JsonProcessingFeature.html)。 一旦 Jersey 检测到添加了它的存在,它就会自动注册。 因此,只需在`pom.xml`中添加 JSONP 依赖项就可以完成一半的工作。 ```java <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` ```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` ```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 ```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`是自动注册的,但是如果您希望手动注册,则可以按以下配置添加它。 ```java 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`文件中。 ```java <!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](https://jersey.java.net/documentation/latest/media.html#json.json-p)