编程自学指南:java程序设计开发,常见 HTTP 状态码详解
一、课程信息
学习目标
- 理解 HTTP 状态码的分类规则与核心含义
- 掌握 5 大类别中最常用的 10 个状态码
- 能在 JavaWeb 开发中手动设置状态码
- 学会根据状态码排查常见问题
二、课程导入:为什么需要状态码?
🌰 生活类比
- 状态码 就像快递的物流状态:
- 200(已签收)
- 301(地址变更)
- 404(查无此件)
- 500(仓库系统故障)
三、状态码分类与核心状态码
🔍 1. 分类规则(第一位数字)

🔥 2. 重点状态码详解
✅ 200 OK
- 含义:请求成功,返回正常响应
- 场景:正常访问网页、API 成功返回数据
- Java 实现:
response.setStatus(HttpServletResponse.SC_OK);
✅ 301 Moved Permanently(永久重定向)
- 含义:资源永久移动,浏览器自动跳转到新地址
- 场景:网站域名变更(如
http://old.com→https://new.com) - Java 实现:
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY); response.setHeader("Location", "https://new.com");
✅ 404 Not Found(未找到)
- 含义:请求的资源不存在
- 场景:用户输入错误的 URL、文件被删除
- Java 实现:
response.sendError(HttpServletResponse.SC_NOT_FOUND, "页面不存在");
✅ 500 Internal Server Error(服务器内部错误)
- 含义:服务器发生未预期的错误
- 场景:代码抛出异常、数据库连接失败
- Java 实现:
try { int i = 1 / 0; // 故意制造异常 } catch (Exception e) { response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "服务器繁忙"); }
四、JavaWeb 中的状态码实践
🔧 1. 手动设置状态码
案例 1:自定义错误页
@WebServlet("/error")
public class ErrorServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// 设置 403 状态码
resp.setStatus(HttpServletResponse.SC_FORBIDDEN);
resp.getWriter().write("权限不足,无法访问");
}
}
案例 2:重定向流程
@WebServlet("/redirect")
public class RedirectServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// 302 临时重定向
resp.sendRedirect("/target"); // 等价于:
/*
resp.setStatus(302);
resp.setHeader("Location", "/target");
*/
}
}
🔧 2. 自动状态码
Servlet 自动返回的状态码:
| 操作 | 自动返回的状态码 |
|---|---|
正常 forward/write | 200 OK |
sendRedirect | 302 Found |
request.getRequestDispatcher().forward() | 200 OK |
五、关联知识:状态码与前端交互
🔗 1. 前端如何处理状态码?
JavaScript 示例:
fetch('/api/data')
.then(response => {
if (!response.ok) { // 检查状态码是否为 2xx
throw new Error(`请求失败:${response.status}`);
}
return response.json();
})
.then(data => console.log(data))
.catch(error => console.error(error));
🔗 2. 常见状态码对应页面
| 状态码 | 推荐页面路径 | 页面内容示例 |
|---|---|---|
| 404 | /404.jsp | 显示 “页面不存在”+ 网站地图 |
| 500 | /500.jsp | 显示 “服务器繁忙,请稍后再试” |
六、课堂练习
练习 1:状态码实验
任务:
- 编写 Servlet 返回以下状态码:
- 201 Created(自定义响应头
Location: /success) - 400 Bad Request(提示 “参数错误”)
- 201 Created(自定义响应头
练习 2:错误页配置
任务:
- 在
web.xml中配置 404 错误页 - 当访问不存在的路径时,跳转到
404.jsp
七、课程总结
知识图谱:
HTTP 状态码
↳ 分类:1xx-5xx(按首位数字)
↳ 核心码:
✅ 200(成功)、301/302(重定向)
✅ 404(未找到)、403(禁止访问)
✅ 500(服务器错误)
↳ Java 操作:`response.setStatus()` / `sendError()`
口诀记忆:
“2 开头是成功,3 开头要重定向,
4 开头客户端错,5 开头服务器忙,
状态码记心上,调试错误有方向!”
八、课后作业
必做 1:状态码模拟器
要求:
- 编写一个 Servlet,根据参数返回不同状态码
- 访问
/status?code=404返回 404 状态码 - 支持代码:200、302、404、500
- 访问
必做 2:电商场景状态码设计
任务:
- 为电商网站设计以下场景的状态码:
- 用户未登录访问订单页(401 Unauthorized)
- 商品已下架(410 Gone)
- 库存不足(409 Conflict)

1574

被折叠的 条评论
为什么被折叠?



