素材巴巴 > 程序开发 >

Java Servlet JSP使用Gson 输出JSON格式数据

程序开发 2023-09-02 22:54:53

在现代 Web 应用程序中,我们以 JSON 格式从服务器获取数据,并使用前端库或 Angular、React 等框架在 jsp 或 html 页面中显示数据。

这与移动应用程序开发类似。

在这里,我们将看到如何从 servlet 获取 JSON 响应并在 jsp 中显示。

什么是 JSON?

Java S cript Object Notation ( JSON ) 是一种用于交换数据的轻量级格式。

这些是 JSON 的特性。

JSON 可用于在不同平台之间交换数据。

由于轻量级,在不同应用程序(即基于 Web 的应用程序)之间交换信息非常快。

所以知道如何将 JSON 与 servlet 一起使用会很好

在 NetBeans 中创建 Java Web 项目

我们已经知道如何使用 netbeans 创建简单的项目,请参阅使用 maven创建项目和在 netbeans 中创建简单的 Web 项目。

我们创建了一个 Java Web 项目ServletJson来从 Servlet JSON 获取响应

项目浏览器

 

在上述项目中

  1. 为 Studnet 创建 Pojo
  2. 为地址创建 Pojo
  3. 为主题创建 Pojo
  4. 创建 JsonResponse Servlet
  5. 创建 index.jsp

在 Netbeans 中创建类和页面

索引.Jsp

该文件包含一个点击链接,该链接将转到 url

localhost:8084/ServletJson/jsonResponse

<%@page contentType=”text/html” pageEncoding=”UTF-8′′%>

1         Get Json response from server

JsonResponse.Java

在这里,我们要从 servlet 发送 json 数据响应。
这里有一个链接在 jsp 页面上的链接单击它正在调用/jsonResponseurl,其中 JsonResponse 的 doGet() 方法被调用。

如何设置 HttpServletResponse 设置正文 Json

要生成 json 响应,我们正在设置response.setContentType("application/json");用于将响应设置为application/json.

这里的响应是 的参考变量HttpServletResponse

在 servlet 中,学生对象是使用名称性别手机号码和三个科目标记创建的。创建对象后,我们使用gson 库将对象转换为 json 。

response.setContentType("application/json");用于以 json 格式发送响应。

response.setCharacterEncoding("utf-8");是字符编码方式。

我们创建了包含学生 ID、姓名、性别、地址、手机号以及一组科目和地址的学生对象。

我们使用 Gson 对象将此数据发送到 jsp。

该方法 gson.toJson(student);是将对象转换为 json 字符串

然后我们将 json 数据传递给PrintWriter对象以在浏览器中写入

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 package ebhor.servlet;   import com.google.gson.Gson; import java.io.IOException; import java.io.PrintWriter; import java.util.HashSet; import java.util.Set; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;   @WebServlet(urlPatterns = {"/jsonResponse"}) public class JsonResponse extends HttpServlet {       @Override     protected void doGet(HttpServletRequest request, HttpServletResponse response)             throws ServletException, IOException {         response.setContentType("application/json");         response.setCharacterEncoding("utf-8");         Student student = new Student(12, "Ram Kumar", "Male", "1234565678");         Subject subject1 = new Subject(1, "Computer Fundamentals");         Subject subject2 = new Subject(2, "Computer Graphics");         Subject subject3 = new Subject(3, "Data Structures");         Set subjects = new HashSet();         subjects.add(subject1);         subjects.add(subject2);         subjects.add(subject3);         student.setSubjects(subjects);         Address address = new Address(1, "Street 23 NN West ", "Bhilai", "Chhattisgarh", "India");         student.setAddress(address);         Gson gson = new Gson();         String jsonData = gson.toJson(student);         PrintWriter out = response.getWriter();         try {             out.println(jsonData);         } finally {             out.close();         }       } }

Student.java

该类包含学生数据,如身份证、姓名、性别、地址、手机号码和多个科目标记。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 package ebhor.servlet;   import java.io.Serializable; import java.util.Set; import java.util.HashSet;   public class Student implements Serializable {       private long id;     private String name;     private String gender;     private Address address;     private Set subjects = new HashSet(0);     private String mobileNo;       public Student() {     }       public Student(long id, String name, String gender, String mobileNo) {         this.id = id;         this.name = name;         this.gender = gender;         this.mobileNo = mobileNo;     }       public long getId() {         return id;     }       public void setId(long id) {         this.id = id;     }       public String getName() {         return name;     }       public void setName(String name) {         this.name = name;     }       public String getGender() {         return gender;     }       public void setGender(String gender) {         this.gender = gender;     }       public Address getAddress() {         return address;     }       public void setAddress(Address address) {         this.address = address;     }       public Set getSubjects() {         return subjects;     }       public void setSubjects(Set subjects) {         this.subjects = subjects;     }       public String getMobileNo() {         return mobileNo;     }       public void setMobileNo(String mobileNo) {         this.mobileNo = mobileNo;     }   }

Subject.java

包含主题的 ID 和名称。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 package ebhor.servlet;   import java.io.Serializable;   public class Subject implements Serializable {       private long id;     private String name;       public Subject() {     }       public Subject(long id, String name) {         this.id = id;         this.name = name;     }       public long getId() {         return id;     }       public void setId(long id) {         this.id = id;     }       public String getName() {         return name;     }       public void setName(String name) {         this.name = name;     }   }

地址

包含地址字段 id 、街道、城市、州和国家字段

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 package ebhor.servlet;   import java.io.Serializable;   public class Address implements Serializable{       private long id;     private String street;     private String city;     private String state;     private String country;       public Address() {     }       public Address(long id, String street, String city, String state, String country) {         this.id = id;         this.street = street;         this.city = city;         this.state = state;         this.country = country;     }       public long getId() {         return id;     }       public void setId(long id) {         this.id = id;     }       public String getStreet() {         return street;     }       public void setStreet(String street) {         this.street = street;     }       public String getCity() {         return city;     }       public void setCity(String city) {         this.city = city;     }       public String getState() {         return state;     }       public void setState(String state) {         this.state = state;     }       public String getCountry() {         return country;     }       public void setCountry(String country) {         this.country = country;     }   }

结果

这是点击链接运行项目后的 index.jsp 页面,它将在浏览器中显示 json 数据

Jsp页面生成JSON响应

来自 Servlet 的 JSP 页面中的 JSON 响应

上面的 java servlet 返回 JSON 响应。

 

 


标签:

素材巴巴 Copyright © 2013-2021 http://www.sucaibaba.com/. Some Rights Reserved. 备案号:备案中。