乐鱼电竞



    教育行业A股IPO第一股(股票代码 003032)

    全国咨询/投诉热线:400-618-4000

    Java培训之重定向

    更新时间:2016年07月27日15时26分 来源:乐鱼播客Java培训学院 浏览次数:

    1.什么是重定向

    所谓的重定向是将请求重新定个方向转到其他位置。例如,客户端访问AServlet,然后立刻自动访问BServlet。这个过程其实就是重定向。下面通过一张图来了解重定向,如图1-1所示:
    图1-1 重定向
    由图1-1可知,重定向共有两次请求,两次响应。当客户端接收到AServlet的响应之后立刻去请求BServlet,这个过程很迅速。可以发现,地址栏发生变化,由AServlet变成BServlet。

    2.重定向案例练习

    了解了重定向的原理,现在使用302状态码和Location响应头来完成重定向案例,具体步骤如下所示:
    (1)创建web应用,Example02。在该应用下新建一个Servlet类,LocationServlet,代码如例1-1所示:
    例1-1 LocationServlet.java
    public class LocationServlet extends HttpServlet {
        public void doGet(HttpServletRequest request, HttpServletResponse response)
               throws ServletException, IOException {
           System.out.println("LoactionServlet......");
           response.setHeader("Location", "/Example02/TargetServlet");
           response.setStatus(302);
        }
    }
    例1-1中,Location响应头的值为”/Example02/TargetServlet”。其中,Example02是应用名称,以后客户端路径都需要加上应用名称,例如超链接和表单中的url都包含应用名。“/TargetServlet“是TargetServlet类的访问路径。
    (2)在Example02应用下,再次新建一个Servlet类,TartServlet,主要代码如例1-2所示:
    例1-2 TargetServlet.java
        public void doGet(HttpServletRequest request, HttpServletResponse response)
               throws ServletException, IOException {
           //浏览器重定向到TargetServlet
           System.out.println("TargetServlet...");
        }
    }
    (3)LocationServlet在web.xml文件中配置的访问路径是“/LocationServlet“,TargetServlet在web.xml文件中配置的访问路径为”/TargetServlet“。
    (4)将Example02应用发布到Tomcat服务器,然后启动Tomcat服务器,在浏览器地址栏上输入:http://localhost:8080/Example02/TargetServlet,浏览器显示结果,如图1-2所示:
    图1-2 浏览器显示结果
    (5)控制台的打印结果如图1-3所示:
    图1-3 控制台打印结果

    3.快捷的重定向方法

    上面实现重定向的方法是通过302状态码和Location响应头实现的,现在我们学习一种更加简单的方法实现重定向:调用response对象的sendRedirect(String location)方法。下面通过一个案例来学习如何使用该方法,如下所示:
    (1)在Example02应用下新建一个Servlet类,RedirectServlet,主要代码如例1-3所示:
    例1-3 RedirectServlet.java
    public class RedirectServlet extends HttpServlet {
        public void doGet(HttpServletRequest request, HttpServletResponse response)
               throws ServletException, IOException {
             response.sendRedirect("/Example02/index.jsp");
        }
    }
    例1-3中,由RedirectServlet重定向到Example02应用的index.jsp页面。
    (2)RedirectServlet在web.xml文件中其访问路径配置为:“/RedirectServlet“。
    (3)重新启动服务器,在浏览器端访问:http://localhost:8080/RedirectServlet,浏览器显示结果如图1-4所示:
    图1-4 浏览器显示结果
    response的sendRedirect(String location )方法底层也是向浏览器端发送302状态码,然后再将参数的值传递Location响应头从而实现重定向。使用这个方法比原始的要简单方便,以后的开发中我们使用就是该方法。

    本文版权归乐鱼播客Java培训学院所有,欢迎转载,转载请注明作者出处。谢谢!
    作者:乐鱼播客Java培训学院
    首发:http://www.itcast.cn/javaee
    0 分享到:
    和我们在线交谈!
    【网站地图】【sitemap】