Web 服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的 request对象和代表响应的 response对象。
request和response 对象代表请求和响应:获取客户端数据,需要通过request对象;向客户端输出数据,需要通过 response对象。
1、HttpServletReques 作为 域对象equest作为域对象 通过该对象可以在一个请求中传递数据,作用范围:在一次请求中有效,即服务器跳转有效。
request.setAttribute():设置域对象内容;
request.getAttribute(String name):获取域对象内容;
request.removeAttribute(String name): 删除域对象内容。
request 域对象中的数据在一次请求中有效,则经过请求转发,request 域中的数据依然 存在,则在请求转发的过程中可以通过 request 来传输/共享数据。
public class Servlet05 extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("Servlet05....");
// 设置request域对象
req.setAttribute("user", "zhangsan");
req.setAttribute("user2", "aa");
req.setAttribute("user3", "bb");
req.setAttribute("user4", "cc");
// 移除域对象
req.removeAttribute("user2");
// 获取域对象的值
String user = (String) req.getAttribute("user");
System.out.println(user);
String user2 = "lisi";
// 请求转发跳转到index.jsp
req.getRequestDispatcher("index.jsp").forward(req, resp);
}
}
2、response对象的功能分为以下四种:
(1)设置响应头信息
(2)发送状态码
(3)设置响应正文
(4)重定向
3、HttpSession对象
javax.servlet.http.HttpSession接口表示一个会话,我们可以把一个会话内需要共享的数据保存到HttSession对象中HttpSession是域对象
1. HttpServletRequest:一个请求创建一个request对象,所以在同一个请求中可以共享request,例如一个请求从AServlet转发到BServlet,那么AServlet和BServlet可以共享request域中的数据;
2. HttpSession:一个会话创建一个HttpSession对象,同一会话中的多个请求中可以共享session中的数据;
下面是session的域方法:
1. void setAttribute(String name, Object value):用来存储一个对象,也可以称之为存储一个域属性,例如:session.setAttribute(“xxx”, “XXX”),在session中保存了一个域属性,域属性名称为xxx,域属性的值为XXX。请注意,如果多次调用该方法,并且使用相同的name,那么会覆盖上一次的值,这一特性与Map相同;
2. Object getAttribute(String name):用来获取session中的数据,当前在获取之前需要先去存储才行,例如:String value = (String) session.getAttribute(“xxx”);,获取名为xxx的域属性;
3. void removeAttribute(String name):用来移除HttpSession中的域属性,如果参数name指定的域属性不存在,那么本方法什么都不做;
4. Enumeration getAttributeNames():获取所有域属性的名称;
4、Model/ModelMap对象1.Spring MVC在调用方法前会创建一个隐含的模型对象作为模型数据的存储容器。2.如果方法的入参为Map,Model类型,Spring MVC会将隐含模型的引用传递给这些入参。在方法体内,开发者可以通过这个入参对象访问到模型中的所以数据,也可以向模型中添加新的属性数据。