一、HTTP 请求状态码
状态码 | 说明 |
---|---|
200 | 正常访问 |
400 | 请求类型不匹配 |
404 | 资源找不到 |
500 | Java 程序抛异常 |
二、response 常用方法
response 就是响应的,作用就是响应客户端请求。
-
sendRedirect(String path) 重定向方法。
-
新建两个 jsp 文件:forward.jsp 、target.jsp。从 forward 访问 target。
response.sendRedirect("target.jsp")
-
重定向:response.sendRedicit(String path),创建一个请求的传给下一个页面。
-
转发:request.getRequestDispatcher(String path).forward(request, response),将请求传给下一个页面。
-
重定向与转发的区别:
- 浏览器访问 forward.jsp ,这是一次请求 forward.jsp 的请求,记成
chrmoe->forward.jsp
, 如果是转发,那么加上响应的应该是
chrome->forward.jsp->target.jsp->chrmoe
。地址栏不变 - 如果是重定向,那么在 forward.jsp 重新向到 target.jsp 这个过程中,
chrmoe->forward.jsp
这个请求会被杀死,重建生成一个
chrome->target.jsp
,地址栏会改变 - 如果说两个页面之间需要通过 request 来传递值,则必须使用转发,不能使用重定向。如果用户名和密码正确,则跳转到首页(转发),并且展示用户名,否则重新回到登录页面。(重定向)
- 浏览器访问 forward.jsp ,这是一次请求 forward.jsp 的请求,记成
-
重定向与转发小案例:新建
login.jsp
、check.jsp
、weclome.jsp
<%-- login.jsp --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>login</title> </head> <body> <form action="/check.jsp" method="post"> 用户名: <input type="text" name="username" /> 密码: <input type="password" name="password" /> <input type="submit" value="登录"> </form> </body> </html>
<%-- check.jsp --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>check</title> </head> <body> <% String username = request.getParameter("username"); String password = request.getParameter("password"); if (username.equals("admin") && password.equals("123456")){ // 登录成功 request.setAttribute("name", username); request.getRequestDispatcher("welcome.jsp").forward(request, response); }else { // 登录失败 response.sendRedirect("login.jsp"); } %> </body> </html>
<%-- welcome.jsp --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Welcome</title> </head> <body> <% String username = (String) request.getAttribute("name"); %> <%=username%> <h2>Welcome</h2> </body> </html>
-