Servlet重定向

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页面

此时后台


浙公网安备 33010602011771号