首页 > 代码库 > Servlet技术-请求转发,重定向和包含的关系
Servlet技术-请求转发,重定向和包含的关系
Web组件之间的关系包含3种,请求转发,URL重定向和包含
1.请求转发
请求转发允许把请求转发给同一应用程序的其他web组件,这种技术通常用于Web应用控制层的Servlet流程控制器,可检查HTTP请求的数据,并将请求转发到合适的目标组件,目标组件执行具体的请求处理操作并生成响应结果。
实例:
如果当前的Servlet组件要把请求转发给一个jsp组件,如hello.jsp,可在Servlet中的service方法中执行一下代码:
RequestDispatcher rd=request.getRequestDispatcher("hello.jsp");
//forward to request URL
rd.forward(request,resposne);
在jsp页面中,可以使用<jsp:forward>标签来转发请求
<jsp:forward page="hello.jsp">
对于请求转发,转发的源组件和目标组件可以共享request范围内的数据
2.URL重定向
请求重定向类似与请求转发,但有一些重要区别,Web组件可以将请求定向到任意的URL,而不仅仅是同一应用中URL。重定向的源组件和目标组件不能共享同一个
HttpServletRequest对象,因此不能共享request范围内的共享数据
实例:
若当前应用的Servlet组件要把请求转发给URL,如http://www.csdn.net/可以在Servlet中的service()方法中执行一下代码
response.sendRedirect("http://www.csdn.net");
HttpServletResponse的sendRedirect()向浏览器返回包含重定向的信息,浏览器根据这一信息迅速发出一个新的新Http请求,请求访问重定向内容
3.包含
包含关系允许一个web组件聚集来自同一个应用中其他Web组件的输出数据,并使用被聚集的数据来创建响应结果,这种技术通常用于模版处理器,它可以控制网页布局。模版中每个页面区域的内容来自不同的URL,从而组成单个页面,这种技术能够为应用程序提供一致的外观和感觉
实例:
Servlet类使用javax.Servlet.RequestDispatcher.include()方法包含其他的web组件,如当前的Servlet组件包含3个jsp组件,header.jsp main.jsp footer.jsp则可以在service中执行一下代码:
RequestDispatcher rd;
rd=response.getRequestDispatcher("\header.jsp");
rd.include(request,response);
rd=response.getRequestDispatcher("\main.jsp");
rd.include(request,response);
rd=response.getRequestDispatcher("\footer.jsp");
rd.include(request,response);
在jsp文件中可以通过<include>指令来包含其他资源<%@ include file="header.jsp"%>
<%@ include file="main.jsp"%>
<%@ include file="footer.jsp"%>