温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java Servlet怎么响应

发布时间:2026-09-01 06:02:06 来源:亿速云 阅读:90 作者:小樊 栏目:编程语言

在 Java Servlet 中,“响应”通常指通过 HttpServletResponse 对象向客户端(浏览器、前端、其他系统)返回数据。下面从常见场景给你一个清晰说明。


一、Servlet 响应的基本方式

1️⃣ 返回文本 / HTML(最常见)

@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws IOException {

        resp.setContentType("text/html;charset=UTF-8");
        resp.getWriter().write("<h1>Hello Servlet</h1>");
    }
}

✅ 关键点:

  • resp.getWriter():字符输出流
  • setContentType:告诉浏览器返回什么类型

2️⃣ 返回 JSON(后端接口常用)

resp.setContentType("application/json;charset=UTF-8");
resp.getWriter().write("{\"code\":200,\"msg\":\"success\"}");

实际开发中常用:

Map<String, Object> map = new HashMap<>();
map.put("code", 200);
map.put("msg", "ok");

new ObjectMapper().writeValue(resp.getWriter(), map);

3️⃣ 设置响应状态码

resp.setStatus(HttpServletResponse.SC_OK); // 200
resp.sendError(404, "Not Found");

常见状态码:

  • 200 OK
  • 400 Bad Request
  • 401 Unauthorized
  • 404 Not Found
  • 500 Internal Server Error

4️⃣ 响应重定向(Redirect)

resp.sendRedirect("index.jsp");

特点:

  • 浏览器地址栏会变
  • 是一次新的请求

5️⃣ 请求转发(Forward,服务端)

req.getRequestDispatcher("success.jsp").forward(req, resp);

特点:

  • 地址栏不变
  • 只在服务器内部跳转

6️⃣ 设置响应头(Header)

resp.setHeader("Cache-Control", "no-cache");
resp.setHeader("Token", "abc123");

7️⃣ 下载文件(二进制响应)

resp.setContentType("application/octet-stream");
resp.setHeader("Content-Disposition", "attachment;filename=test.txt");

OutputStream os = resp.getOutputStream();
os.write("Hello".getBytes());
os.flush();

二、响应对象核心 API 总结

方法 作用
getWriter() 输出字符(HTML / JSON)
getOutputStream() 输出二进制(文件)
setContentType() 设置响应类型
setStatus() 设置状态码
sendRedirect() 重定向
setHeader() 设置响应头

三、常见错误

❌ 同时调用 getWriter() 和 getOutputStream()
❌ 忘记设置 charset=UTF-8(中文乱码)
❌ 在 forward 之后继续写响应


如果你愿意,我可以:

  • 给你一个 完整 CRUD Servlet 示例
  • 讲 Servlet + Ajax / Vue 前后端交互
  • 对比 Servlet vs Spring MVC 响应方式

你可以直接说你用的是什么(原生 Servlet / Tomcat / Spring Boot)。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手