servlet应用2

来源:互联网 发布:w7电脑找不到wifi网络 编辑:程序博客网 时间:2024/05/29 15:14
 

Servlet的应用(二)

重定向和请求分派

•      重定向

–     HttpServletRequest接口提供的sendRedirect()方法用于生成302响应码和Location响应头,从而通知客户端去重新访问Location响应头中指定的URL,其完整的定义语法如下:

•      public void sendRedirect(String location) throws IOException;

–     其中的location参数指定了重定向的URL,它可以使用绝对URL和相对URL,Servlet容器会自动将相对URL转换成绝对URL后,再生成location头字段。

•      请求分派

–     Servlet API中定义了一个RequestDispatcher接口,俗称请求分派器。它定义了如下两个方法:

•      public void forward(ServletRequest request, ServletResponse response)

•           throws ServletException,IOException;

•      public void include(ServletRequest request, ServletResponse response)

•           throws ServletException,IOException;

–     获取RequestDispatcher实例的方式主要有两种:

•      调用ServletContext接口提供的getRequestDispatcher(String url)方法。

•      调用ServletRequest接口提供的getRequestDispatcher(String url)方法。

•      RequestDispatcher接口的forward()方法用于将请求转发到RequestDispatcher实例封装的资源,由新的资源对客户端作出响应,它的原理可以用图4.16来表示。

•      同样使用“http://localhost:8080/jsp_04_servlet/servlet1?name=test”路径访问这个Servlet1,客户端浏览器将得到如图4.17所示的效果。

•      重定向和请求分派的比较
HttpServletResponse的sendRedirect()方法实现的重定向和RequestDispatcher的forward()方法实现的请求转发的比较:

–     请求分派只能将请求转发给同一个Web应用中的其他组件;而重定向不仅可以定向到当前应用程序中的其他资源,也可以重定向到其他站点的资源上。

–     重定向的访问过程结束后,浏览器地址栏中显示的URL会发生改变,由初始的URL地址变成重定向的目标URL;而请求转发过程结束后,浏览器地址栏保持初始的URL地址不变。

–     请求分派的发起者和被调用者之间共享相同的request实例和response实例,它们属于同一个“请求/响应”过程;而重定向的发起者和被调用者使用各自的request实例和response实例,它们各自属于独立的“请求/响应”过程。

–      

 

原创粉丝点击