A本来要去找C
但是它先去找了B
B说在C那 然后他又去找C
一个web资源收到客户端请求后,他会通知客户端去访问另外一个web资源,这个过程叫重定向
常见场景:
`用户登录
void sendRedirect(String var1) throws IOException;//关键方法
@Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.sendRedirect("/rs/img");//重定向 rs为项目路径 }
去webapp下做一个映射
运行测试
跳转到img url路径改变
重定向原理就是做了这两步
resp.setHeader("Location","/rs/img");
resp.setStatus(302);
问题:重定向和转发的区别
相同点
`页面都会实现跳转
不同点
`请求转发的时候,url不会产生变化
`重定向时候,url地址栏会发生变化;
练习:
<html> <body> <h2>Hello World!</h2> <%--快捷键 Ctrl+/--%> <%--这里提交的路径,需要寻找到项目的路径--%> <%--${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>
跳转页面
@Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("进入"); //处理请求 String username = req.getParameter("username");//从请求里面获取参数 String password = req.getParameter("password"); System.out.println(username+":"+password); //重定向时候一定要注意,路径问题,否则就会404: resp.sendRedirect("/rs/success.jsp"); }
设置webapp映射
运行测试
输入之后点提交 便会重定向到success.jsp页面
此时后台