首页 > 代码库 > 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"%>