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

 此时后台

 

原文地址:https://www.cnblogs.com/nuliyao123/p/14418732.html