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

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

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

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

什么是 JSON?

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

  • JSON 是一种良好的人类可读格式
  • JSON 源自 JavaScript
  • JSON 是用于表示结构化数据的基于文本的格式
  • JSON 是键值对数据
  • 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
        <a href="jsonResponse">Get Json response from server</a>

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 响应。

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值