编程自学指南:java程序设计开发,常见 HTTP 状态码详解, HTTP 状态码的分类规则与核心含义,根据状态码排查常见问题,前端如何处理状态码

编程自学指南:java程序设计开发,常见 HTTP 状态码详解

一、课程信息

学习目标

  1. 理解 HTTP 状态码分类规则核心含义
  2. 掌握 5 大类别中最常用的 10 个状态码
  3. 能在 JavaWeb 开发手动设置状态码
  4. 学会根据状态码排查常见问题

二、课程导入:为什么需要状态码?

🌰 生活类比

  • 状态码 就像快递的物流状态:
    • 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/write200 OK
sendRedirect302 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:状态码实验

任务

  1. 编写 Servlet 返回以下状态码:
    • 201 Created(自定义响应头 Location: /success
    • 400 Bad Request(提示 “参数错误”)

练习 2:错误页配置

任务

  1. 在 web.xml 中配置 404 错误页
  2. 当访问不存在的路径时,跳转到 404.jsp

七、课程总结

知识图谱:

HTTP 状态码  
   ↳ 分类:1xx-5xx(按首位数字)  
   ↳ 核心码:  
      ✅ 200(成功)、301/302(重定向)  
      ✅ 404(未找到)、403(禁止访问)  
      ✅ 500(服务器错误)  
   ↳ Java 操作:`response.setStatus()` / `sendError()`  

口诀记忆:

“2 开头是成功,3 开头要重定向,
4 开头客户端错,5 开头服务器忙,
状态码记心上,调试错误有方向!”

八、课后作业

必做 1:状态码模拟器

要求

  1. 编写一个 Servlet,根据参数返回不同状态码
    • 访问 /status?code=404 返回 404 状态码
    • 支持代码:200、302、404、500

必做 2:电商场景状态码设计

任务

  1. 为电商网站设计以下场景的状态码:
    • 用户未登录访问订单页(401 Unauthorized)
    • 商品已下架(410 Gone)
    • 库存不足(409 Conflict)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zl515035644

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值