一、请求响应流程图
二、请求响应对象概述
- 当服务器接收到请求后,服务器会创建request和response对象,把请求数据封装到request对象中;
- 然后调用Servlet的service()方法时把这两个对象传递给service()方法;
- 在service()方法中可以通过request对象获取请求数据,可以使用response对象向客户端完成响应;
三、注意事项
每次请求服务器都会创建新的request和response对象,即每个请求有自己独自的request和response对象。
四、request对象的介绍
request是Servlet.service()方法的一个参数,类型为javax.servlet.http.HttpServletRequest。在客户端发出每个请求时,服务器都会创建一个request对象,并把请求数据封装到request中,然后在调用Servlet.service()方法时传递给service()方法,这说明在service()方法中可以通过request对象来获取请求数据。
五、request对象的内部结构
request的功能可以分为以下几种:
封装了请求头数据;
封装了请求正文数据,如果是GET请求,那么就没有正文;
request是一个域对象,可以把它当成Map来添加获取数据;
request提供了请求转发和请求包含功能。
六、request域介绍
request是域对象!在JavaWeb中一共四个域对象,其中ServletContext就是域对象,它在整个应用中只创建一个ServletContext对象。request是其中一个,request可以在一个请求中共享数据。
一个请求会创建一个request对象,如果在一个请求中经历了多个Servlet,那么多个Servlet就可以使用request来共享数据。现在我们还不知道如何在一个请求中经历多个Servlet,后面在学习请求转发和请求包含后就知道了。
七、request的域方法:
void setAttribute(String name, Object value)
用来存储一个对象,也可以称之为存储一个域属性,例如:servletContext.setAttribute(“xxx”, “XXX”),在request中保存了一个域属性,域属性名称为xxx,域属性的值为XXX。请注意,如果多次调用该方法,并且使用相同的name,那么会覆盖上一次的值,这一特性与Map相同;
Object getAttribute(String name)
用来获取request中的数据,当前在获取之前需要先去存储才行,例如:
String value = (String)request.getAttribute(“xxx”);,获取名为xxx的域属性;
void removeAttribute(String name)
用来移除request中的域属性,如果参数name指定的域属性不存在,那么本方法什么都不做;
Enumeration getAttributeNames()
获取所有域属性的名称;