全国咨询/投诉热线: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

javaee

python

web

ui

cloud

test

c

netmarket

pm

Linux

movies

robot

uids

北京校区

    14天免费试学

    基础班入门课程限时免费

    申请试学名额

    15天免费试学

    基础班入门课程限时免费

    申请试学名额

    15天免费试学

    基础班入门课程限时免费

    申请试学名额

    15天免费试学

    基础班入门课程限时免费

    申请试学名额

    20天免费试学

    基础班入门课程限时免费

    申请试学名额

    8天免费试学

    基础班入门课程限时免费

    申请试学名额

    20天免费试学

    基础班入门课程限时免费

    申请试学名额

    5天免费试学

    基础班入门课程限时免费

    申请试学名额

    0天免费试学

    基础班入门课程限时免费

    申请试学名额

    12天免费试学

    基础班入门课程限时免费

    申请试学名额

    5天免费试学

    基础班入门课程限时免费

    申请试学名额

    5天免费试学

    基础班入门课程限时免费

    申请试学名额

    10天免费试学

    基础班入门课程限时免费

    申请试学名额