request和request作用域

request

request对象可以获取请求携带的数据,分别获取请求行、请求头、请求体中的数据。

1、什么是HttpServletRequest

​ HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求中的所有信息都封装在这个对象中,开发人员通过这个对象的方法,可以获得客户这些信息。

2、HttpServletRequest的作用

通过Request对象进行的常用操作:

1. 获取请求行信息:请求方式,url和HTTP版本。
2. 获取请求头信息:浏览器类型,ip地址等。
3. 获取请求参数:url后面拼接的参数或者请求体中提交的参数;

2.1 获取请求行信息

请求行主要包括:请求方式url协议/版本 。HttpServletRequest对象提供了以下方法来获取这些信息:

方法说明
String getMethod()获取请求方式的类型
StringBuffer getRequestURL()获取客户端发出请求完整URL
String getRemoteAddr()获取IP地址
String getProtocol()获取当前协议的名称和版本

2.2 获取请求头信息

​ 浏览器的请求头信息是由很多:关键字:值 形式的数据组成的。HttpServletRequest对象给我们提供了两个方法用来获取请求的头信息。

方法作用
String getHeader(String name)根据请求头的k关键字获取请求头信息
Enumeration getHeaderNames()返回此请求包含的所有头信息的枚举

【说明】请求头的k关键字如下表所示:

请求头key请求头value
If-modified-Since浏览器通知服务器,本地缓存的最后变更时间。与另一个响应头组合控制浏览器页面的缓存。
cookie与会话有关技术,用于存放浏览器缓存的cookie信息。
user‐agent浏览器通知服务器,客户端浏览器与操作系统相关信息
connection保持连接状态。Keep-Alive 连接中,close 已关闭
host请求的服务器主机名
content-length请求体的长度
content-type如果是POST请求,会有这个头,默认值为application/x-www-form-urlencoded,表示请求体内容使用url编码
accept浏览器可支持的MIME类型。文件类型的一种描述方式。
mime格式浏览器请求数据的类型,例如: text/html ,html文件 text/css,css文件 text/javascript,js文件 image/*,所有图片文件
accept-encoding浏览器通知服务器,浏览器支持的数据压缩格式。如:GZIP压缩
accept-language浏览器通知服务器,浏览器支持的语言。各国语言(国际化i18n)

2.3 获取请求体

1.get请求:get请求提交的数据是拼接在url后面的,如下图所示:

2.post请求:post请求的数据是在请求体中发送到后台的:

(1)获取请求参数的方法

方法名描述
String getParameter(String name)getParameter获得指定参数名对应的值。如果没有返回null,如果只有多个获得第一个。 例如:username=jack
String[] getParameterValues(name)getParameterValues[] 获取请求数据key相同的多个数据
request.getParameterMap();获得所有表单的数据

3、request作用域

3.1、request的生命周期

【一次请求和响应的完整流程】
1、浏览器向servlet发送请求
2、tomcat收到请求后,创建Request和Response两个对象,并将请求数据封装到request对象中,然后传递给Servlet
3、Servlet接收到请求后,调用doget或者dopost方法。处理浏览器的请求信息,然后通过Response返回信息
4、tomcat接收到返回的信息,返回给浏览器。
5、浏览器接收到返回消息后,tomcat销毁Request和Response两个对象,同时销毁这两个对象所获得的信息。

  • 创建:浏览器给服务器发送请求后,tomcat创建request对象封装请求数据;

  • 销毁:服务器给浏览器响应信息结束后销毁;

特点:浏览器每次给服务器发送请求,服务器都会为这次请求创建一个request对象。

3.2 、request域对象

request域对象,一个存储数据的区域对象.是把request当成一个容器来存储数据,request域存储数据主要是用于在两个servlet之间传递数据。request作为域对象,常用的方法如下:

方法说明
void setAttribute(String name, Object o)往request域中设置值
Object getAttribute(String name)从request域中取值
void removeAttribute(String name)从request域中移除值

【注意】getParameter()方法和getAttribute()方法的区别

  1. getParameter()方法获取的是浏览器提交的数据(多是表单提交的数据);

  2. getAttribute()方法获取的是request域中的数据(通过request.setAttribute()设置的值);

3.3、 请求转发

其实,在Servlet中,请求也可以从一个Servlet发起,然后请求到另一个Servlet或静态页面。这项技术叫做请求转发。

​ 请求转发需要借助以下两个方法实现:

方法说明
RequestDispatcher getRequestDispatcher(String path)获取请求转发器(request对象方法)
void forward(ServletRequest request, ServletResponse response)将请求转发到另一个资源(Servlet)上

 3.4、重定向

  使用response.sendRedirect()方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值