日期:2014-05-19  浏览次数:20752 次

J2EE中的请求转发、重定向和包含关系

一、请求转发

使用javax.servlet.RequestDispatcher.forward()方法来转发收到的Http请求。
将最初请求的ServletRequest和ServletResponse对象传递给转发目标组件。
只能把请求转发给同一Web应用中的组件,不能转发给其他Web应用的组件。
请求转发的源组件和目标组件共享request范围内的共享数据。
eg:
Servlet的service()方法中:
RequestDispatcher rd = request.getRequestDispatcher("hello.jsp");
rd.forward(request,response);
在JSP页面中,使用<jsp:forward>标签来转发:
<jsp:forward page="hello.jsp" />

二、请求重定向

可以将请求重定向到任一URL
重定向的源组件和目标组件之间不共用同一个HttpServletRequest对象,因此不能共享request范围内的共享数据。
eg:
Servlet的service()方法中:
response.sendRedirect("http://www.163.com ");


三、包含

使用javax.servlet.RequestDispatcher.include()方法包含其他Web组件。
允许一个Web组件聚集来自同一个应用中其他Web组件的输出数据,并使用被聚焦的数据来创建响应结果。通常用于模板处理器,可控制网页的布局。

eg:
Servlet的service()方法中:
RequestDispatcher rd;
rd = req.getRequestDispatcher("/header.jsp"))
rd.include(req,res);
rd = req.getRequestDispatcher("/main.jsp"))
rd.include(req,res);
rd = req.getRequestDispatcher("/footer.jsp"))
rd.include(req.res);
在JSP页面中,可通过<include>指令来包含其他Web资源
<%@ include file="header.jsp" %>
<%@ include file="main.jsp" %>
<%@ include file="footer.jsp" %>

?

http://blog.sina.com.cn/s/blog_53bdd5aa01000618.html