泰仔在线

java学习,心情日记,缤纷时刻
posts - 100, comments - 34, trackbacks - 0, articles - 0

请求转发 请求重定向 包含

Posted on 2006-09-07 17:42 泰仔在线 阅读(2044) 评论(0)  编辑  收藏 所属分类: Java 相关
java  jsp学了几年了,今天突然发现这些最基础的东西都还没有弄清楚,赶紧抽点时间把它记下来,以便以后复习!
1、请求转发
   请求转发允许把请求转发给同一应用程序中的其他Web组件。这种技术通常用于Web应用控制层的Servlet流程控制器,它检查HTTP请求数据,并将请求转发到合适的目标组件,目标组件执行具体的请求处理具体的请求处理操作,并生成响应结果。
o_1.JPG

   Servlet类使用javax.servlet.RequestDispatcher.forward()方法来转发它所收到的HTTP请求。转发目标组件将处理该请求并生成响应结果,或者将请求继续转发到另一个组件。最初请求的ServletRequest和ServletResponse对象被传递给转发目标组件,这使得目标组件可以访问整个请求上下文。值得注意的是,只能把请求转发给同一Web应用中的组件,而不能转发给其他Web应用的组件。
   如果当前的Servlet组件要把请求转发给一个JSP组件,如hello.jsp,可以在Servlet的service()方法中执行以下代码:
         RequestDispatcher rd = request.getRequestDispatcher("hello.jsp");
         //Forward to requested URL
         rd.forward(request, response);
   在JSP页面中,可以使用<jsp:forward>标签来转发请求,例如:
         <jsp:forward page="hello.jsp">
   对于请求转发,转发的源组件和目标组件共享request范围内的共享数据。
2、URL重定向
   请求重定向类似于请求转发,但也有一些重要区别:
Web组件可以将请求重定向到任一URL,而不仅仅是同一应用中的URL。
重定向的源组件和目标组件之间不共用同一个HttpServletRequest对象,因此不能共享request范围内的共享数据。
o_2.JPG

   
   如果当前应用的Servlet组件要把请求转发给URL"http://jakarta.apache.org/struts",可以在Servlet的service()方法中执行以下代码:
response.sendRedirect("http://jakarta.apache.org/struts");
   HttpServletResponse的sendRedirect()方法向浏览器返回包含重定向的信息,浏览器根据这一信息迅速发出一个新HTTP请求,请求访问重定向目标组件。
3、包含
   包含关系允许一个Web组件聚集来自同一个应用中其他Web组件的输出数据,并使用被聚集的数据来创建响应结果。这种技术通常用于模板处理器,它可以控制网页的布局。模板中每个页面区域的内容来自不同的URL,从而组成单个页面。这种技术能够为应用程序提供一致的外观和感觉。包含关系的源组件和目标组件共用同一个HttpServletRequest对象,因此它们共享request范围内的共享数据。
o_3.JPG

   Servlet类使用javax.servlet.RequestDispatcher.include()方法包含其他的Web组件。例如,如果当前的Servlet组件包含了三个JSP文件:header.jsp、main.jsp和footer.jsp,则可以在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"%>
   <来自孙卫琴----精通 Struts :基于 MVC 的 JavaWeb 设计与开发>

只有注册用户登录后才能发表评论。


网站导航: