別途JSONへ変換するライブラリ(jacksonやGSON)を使います。
例えばAjaxを使わず、サーブレットでJSPに仏力する値をJSONに変換する場合は以下のようになります。
今回は jackson を使います。
java
1import java.io.IOException;
2import java.util.ArrayList;
3import java.util.List;
4
5import javax.servlet.ServletException;
6import javax.servlet.annotation.WebServlet;
7import javax.servlet.http.HttpServlet;
8import javax.servlet.http.HttpServletRequest;
9import javax.servlet.http.HttpServletResponse;
10
11import com.fasterxml.jackson.databind.ObjectMapper;
12
13import samplewebapp.model.User;
14
1517
18@WebServlet("/JacksonServlet")
19public class JacksonServlet extends HttpServlet {
20 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
21
22 List<User> users = getUsers();
23
24 ObjectMapper mapper = new ObjectMapper();
25 String result = mapper.writeValueAsString(users);
26
27 request.setAttribute("users", result);
28
29 request.getRequestDispatcher("jsonsample.jsp").forward(request, response);
30 }
31
32 private List<User> getUsers() {
33 List<User> users = new ArrayList<User>() {{
34 add(new User("alpha", 20));
35 add(new User("beta", 24));
36 add(new User("charlie", 30));
37 }};
38
39 return users;
40 }
41
42}
表示するJSPでは、簡単に値の表示と、JavaScript内で開発モードのコンソールで表に出力してみます。
html
1<%@ page language="java" contentType="text/html; charset=UTF-8"
2 pageEncoding="UTF-8"%>
3<!DOCTYPE html>
4<html>
5<head>
6<meta charset="UTF-8">
7<title>JsonSample</title>
8</head>
9<body>
10${users}
11</body>
12<script>
13var users = ${users};
14
15console.table(users, ['name', 'age']);
16</script>
17</html>
サーブレット内で出力しているUserクラスは以下です。
java
1public class User {
2
3 public User(String name, int age) {
4 this.name = name;
5 this.age = age;
6 }
7 private String name;
8 private int age;
9 public String getName() {
10 return name;
11 }
12 public void setName(String name) {
13 this.name = name;
14 }
15 public int getAge() {
16 return age;
17 }
18 public void setAge(int age) {
19 this.age = age;
20 }
21}
Ajaxでサーブレットを呼び出してJSONレスポンスを出力する場合の返す値をJacksonやGSONで変換した文字列を返すだけです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/10 04:41
2019/11/10 05:43