HttpServletRequest:Servlet容器把HTTP请求信息保存在HttpServletRequest对象中,Servlet组件从request对象中读取用户的请求数据。此外,HttpServletRequest可以存放request范围内的共享数据。
HttpServletResponse:用于生成HTTP响应结果。
HttpSession:Servlet容器为每个WEB应用创建一个ServletContext实例,ServletContext可以存放application范围的共享数据。
HttpServletRequest、HttpSession、ServletContext分别提供在request、session、application范围内保存和读取共享数据的方法:
//save shared data
setAttribute(String key,Object value);
//get shared data
getAttribute(String key);
在保存共享数据时,应该指定属性KEY。在读取共享数据时,将根据这个属性KEY来检索共享数据。
例:
把ShoppingCart对象(购物车)存放在session范围内,存放时指定属性KEY卫“cart”,然后再通过这个属性KEY把ShoppingCart对象检索出来:
ShoppingCart shoppingCart=new ShoppingCart();
ShoopingCart myCart=null;
//sava cart
session.setAttribute("cart",shoppingCart);
//get cart
myCart=(ShoppingCart)session.getAttribute("cart");
请求转发:
Servlet的service()方法中执行以下代码:
RequestDispatcher rd=request.getRequestDispatcher("hello.jsp");
//Forward to requested URL
rd.forward(request,response);
在JSP页面中,可以使用<jsp:forward>标签来转发请求
例如:
<jsp:forward page="hello.jsp"/>
请求重定向:
WEB组件可以将请求重定向到任意URL,而不仅仅是同一应用中的URL。
重定向的源组件和目标组件之间不共用同一个HttpServletRequest对象,因此不能共享request范围内的共享数据。
response.sendRedirect("http://jakarta.apache.org/struts/");
包含:
Servlet类使用javax.servlet.RequestDispatcher.include()
RequsetDispatcher rd;
rd=req.getRequestDispatcher("/header.jsp");
在JSP文件中,可以通过<include>指令来包含其他的WEB资源,
<%@ include file="header.jsp"%>