Java Servlet实现输出json

渡星河
2023-02-16 / 0 评论 / 9 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2023年02月16日,已超过581天没有更新,若内容或图片失效,请留言反馈。

实现效果

{
    "status": 1,
    "msg": "登录成功",
    "data": {
        "userAccount": 10001,
        "nickname": "admin",
        "motto": "心中无女人代码自然神",
        "userqq": "10001",
        "power": 1
    }
}

实现方法

在 Java Servlet 中实现输出 JSON 格式的数据可以使用 JSON 序列化框架,如 Jackson、Gson 等。下面以 Jackson 为例,介绍一下如何实现在 Java Servlet 中输出一个 JSON 格式的数据。

首先,在 pom.xml 中添加 Jackson 序列化库的依赖:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>${jackson.version}</version>
</dependency>

然后,我们可以在 Java Servlet 中定义一个包含需要输出的数据的 Java 类,如下所示:

public class User {
    private int userAccount;
    private String nickname;
    private String motto;
    private String userqq;
    private int power;

    // 省略构造方法、getter 和 setter
}

接下来,在登录成功后,我们可以创建一个 User 对象,并将需要输出的数据填充进去:

User user = new User();
user.setUserAccount(10001);
user.setNickname("admin");
user.setMotto("心中无女人代码自然神");
user.setUserqq("10001");
user.setPower(1);

最后,我们使用 Jackson 将 User 对象序列化成 JSON 格式的字符串,并输出到客户端:

ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(user);
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(json);

上面的代码中,我们首先创建了一个 ObjectMapper 对象,它是 Jackson 序列化库中的核心类,用于将 Java 对象序列化成 JSON 格式的字符串。然后,我们调用 ObjectMapper 对象的 writeValueAsString() 方法将 User 对象序列化成 JSON 格式的字符串。最后,我们设置响应头的 Content-Type 为 application/json,告诉客户端返回的是 JSON 格式的数据,并将 JSON 字符串写入响应的输出流中。

整个代码示例如下所示:

@WebServlet("/login")
public class LoginServlet extends HttpServlet {

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String username = request.getParameter("username");
        String password = request.getParameter("password");

        if ("admin".equals(username) && "password".equals(password)) {
            HttpSession session = request.getSession();
            session.setAttribute("loggedIn", true);
            session.setAttribute("username", username);

            User user = new User();
            user.setUserAccount(10001);
            user.setNickname("admin");
            user.setMotto("心中无女人代码自然神");
            user.setUserqq("10001");
            user.setPower(1);

            ObjectMapper mapper = new ObjectMapper();
            String json = mapper.writeValueAsString(user);

            response.setContentType("application/json");
            response.setCharacterEncoding("UTF-8");
            response.getWriter().write(json);
        } else {
            response.sendRedirect("login.jsp");
        }
    }

}
0

评论 (0)

取消