美文网首页
Response之重定向

Response之重定向

作者: CoderHong | 来源:发表于2017-11-11 11:20 被阅读31次

    在开发中会经常用到客户端访问一个服务器地址,服务器内部将请求做了一个重定向,从而访问到另一个页面。

    重定向流程

    1. 浏览器发送一个请求到服务器,服务端做了一次响应,响应头包含字段"location"对应的重定向地址。
    2. 浏览器内部会自动再次发送请求,访问重定向地址。
    重定向流程

    重定向特点

    1. 完成整个流程 浏览器发送了两次请求。
    2. 冲定向浏览器地址会变成重定向地址。
    3. 重定向可以跨域访问。

    重定向示例

    创建两个Servlet, locationServlet 、Location2与之对应的<url-pattern>分别是 location、location。

    在locationServlet写入一下代码:

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            
            response.setContentType("text/html;charset=utf-8");
            
            /**
             * 重定向
             *  流程:
             *          当浏览器请求服务器的时候 如果设置了重定向的链接地址 浏览器会自动再次发送请求到响应的重定向定制
             */
            // 1. 重定向必须设置状态码为302 如果只设置 "location"没有作用
            response.setStatus(302);
            // 2. 注意重定向 跳转本项目的Servlet的路径写法 /项目名/servlet的url-pattern
            response.setHeader("location", "/locationProj/location2");
        }
    

    当了浏览器访问/location 就会再次发送请求访问本项目的重定向的Servlet。

    从上面可以看出,重定向需要两个步骤。比较繁琐。但是Respose已经帮我们做了封装。提供了sendRedirect方法,来实现重定向。

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            
            response.setContentType("text/html;charset=utf-8");
            
            // 以上设置重定向比较麻烦 需要两个步骤 response内部已经帮我们封装好了
            response.sendRedirect("/day10/location2");  
        }
    

    相关文章

      网友评论

          本文标题:Response之重定向

          本文链接:https://www.haomeiwen.com/subject/hiaimxtx.html