重定向和转发的区别
相同点
页面都会实现跳转
不同点
请求转发的时候,URL地址栏不会发生变化重定向的时候,URL地址栏会发生变化
HttpServletRequest代表客户端的请求,用户通过Http协议访问服务器,HTTP请求中的所有信息会被封装到HttpServletRequest,通过这个HttpServletRequest的方法,获得客户端的所有信息
重定向:
public class RequestTest extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//处理请求String username = req.getParameter("username");String password = req.getParameter("password");//重定向resp.sendRedirect("/success.jsp");//转发//req.getRequestDispatcher("success.jsp").forward(req,resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {super.doGet(req, resp);}
web.xml
<servlet><servlet-name>request</servlet-name><servlet-class>com.kuang.servlet.RequestTest</servlet-class></servlet><servlet-mapping><servlet-name>request</servlet-name><url-pattern>/</url-pattern></servlet-mapping>
index.jsp
<%--设置编码类型为utf-8,不然会乱码--%><%@ page contentType="text/html; charset=UTF-8" %><html><body><h2>登录</h2><%--这里提交的路径,需要寻找到项目的路径--%><%--${pageContext.request.contextPath}代表当前的项目--%><form action="${pageContext.request.contextPath}/login" method="get">用户名:<input type="text" name="username"><br>密码:<input type="password" name="password"><br><input type="submit"></form></body></html>
success.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>Title</title></head><body><h1>success</h1></body></html>
运行结果:
响应状态码
200:请求响应成功 200
3xx:请求重定向
4xx:找不到资源 404
5xx:服务器代码错误 500 网关错误 502