概述
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组件的输出数据,并使用被聚集的数据来创建响应结果。
Sorry, the comment form is closed at this time.
No comments yet.