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

     

     

  • 相关阅读:
    nginx实现负载均衡load balance
    C++基类与派生类构造和析构顺序以及虚函数的调用
    JavaScript算法41- 回环句(leetCode:6253easy)周赛
    Python学习笔记-字符串
    C++中的中介者模式
    离散卡尔曼滤波实现
    洛谷题单 【入门1】顺序结构
    CSS3 选择器、Sass选择器、在小程序中使用的选择器(wxss为例)
    【RocketMQ中延时消息的生产与消费、批量消息的生产与消费、消息的过滤、消息的Tag过滤和SQL过滤、SQL过滤解决SQL92问题,代码样例实战】
    C#基础入门教程-数据类型
  • 原文地址:https://blog.csdn.net/allway2/article/details/125562306