在 JSP 中输出 JSON 数据,本质上就是把 JSON 字符串写到响应中,并设置正确的 Content-Type。常见做法如下:
<%@ page contentType="application/json;charset=UTF-8" language="java" %>
{
"name": "张三",
"age": 25,
"success": true
}
✅ 适合简单、固定的 JSON
❌ 不适合动态数据
<%@ page import="com.google.gson.Gson" %>
<%@ page contentType="application/json;charset=UTF-8" language="java" %>
<%
Gson gson = new Gson();
java.util.Map<String, Object> map = new java.util.HashMap<>();
map.put("code", 200);
map.put("msg", "成功");
map.put("data", "hello jsp");
String json = gson.toJson(map);
out.print(json);
%>
✅ 使用 Gson / Jackson 工具
✅ 适合动态数据
<%@ page import="com.fasterxml.jackson.databind.ObjectMapper" %>
<%@ page contentType="application/json;charset=UTF-8" language="java" %>
<%
ObjectMapper mapper = new ObjectMapper();
java.util.Map<String, Object> result = new java.util.HashMap<>();
result.put("id", 1);
result.put("name", "Tom");
mapper.writeValue(out, result);
%>
<script>
fetch('jsonServlet')
.then(res => res.json())
.then(data => console.log(data));
</script>
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
resp.setContentType("application/json;charset=UTF-8");
Map<String, Object> map = new HashMap<>();
map.put("status", "ok");
ObjectMapper mapper = new ObjectMapper();
mapper.writeValue(resp.getWriter(), map);
}
✅ 最佳实践
✅ 前后端分离、可维护性强
❌ 输出 JSON 却忘记设置 Content-Type
❌ JSP 中有空行、HTML 标签,导致 JSON 非法
❌ JS 端使用 eval() 解析 JSON(不安全)
| 场景 | 推荐方式 |
|---|---|
| 简单测试 | JSP 直接输出 JSON |
| 动态数据 | Gson / Jackson |
| 正式项目 | Servlet + JSON |
| Ajax 接口 | application/json |
如果你愿意,我可以给你一个完整可运行的 JSP + JSON + Ajax 示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。