WEB组件间的三种关系

概述
WEB组件间存在三种关系:

(1)请求转发

(2)URL重定向

(3)包含

存在以上三种关系的Web组件可以是JSP或Servlet,对于Struts应用,则还包括Action。这些Web组件都可以访问HttpServletRequest和HttpServletResponse对象,具有处理请求、生成响应结果的功能。

请求转发

请求转发允许把请求转发给同一应用程序中的其他Web组件。这种技术通常用于Web应用控制层的Servlet流程控制器,它检查HTTP请求数据,并将请求转发到合适的目标组件,目标组件执行具体的请求处理操作,并生成响应结果。

当起始端为JSP页面的时候,有如下两种情况:
(1)从JSP页面转发到JSP页面



NOTE:
1:只能跳转到本Web应用的其他组件,而不能跳转到其他Web应用,即使是位于统一主机下的其他Web应用也不可以;
2:最初请求的HttpServletRequest和HttpServletResponse会别传递到目标组件,因此目标组件可以访问整个请求的上下文;

(2)从JSP跳转到Servlet


当起始端为Servlet类是有如下两种情况:
(1)从Servlet跳转到JSP

String contextPath = request.getContextPath();
RequestDispatcher rd = request.getRequestDispatcher(contextPath + "/test.jsp");
rd.forward(request, response);

(2)从Servlet跳转到Serevlet

RequestDispatcher rd = request.getRequestDispatcher("/servlet/ToServlet");
rd.forward(request, response);

在struts中请求转发如下配置:



请求重定向如下配置:



即默认为请求转发,配置请求重定向需要设置redirect="true"

请求重定向
请求重定向类似于请求转发,但也有一些重要区别:
1、Web组件可以将请求重定向到任一URL,而不仅仅是同一应用中的URL。
2、重定向的源组件和目标组件之间不共用同一HttpServletRequest对象,因此不能共享request范围内的共享数据。

response.sendRedirect("http://www.baidu.com");

包含
包含关系允许一个Web组件聚集来自同一个应用中其他Web组件的输出数据,并使用被聚集的数据来创建响应结果。

此条目发表在java/j2ee分类目录,贴了, 标签。将固定链接加入收藏夹。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据