组团学

request请求

阅读 (236532)

一、请求响应流程图

image20200211143832773.png

二、请求响应对象概述

  • 当服务器接收到请求后,服务器会创建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对象的内部结构

image20200212125438225.png

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()

获取所有域属性的名称;

需要 登录 才可以提问哦