温故知新--Servlet(五)--HttpServletRequest对象

在前面的几篇文章中,介绍了servlet的一些基本的知识。接下来的几篇开始介绍一下servlet中的几个常用的对象。本文主要先简单的了解一下HttpServletRequest对象。

HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求中的所有信息都封装在这个对象中。HttpServletReques代表请求象,其中封装了对请求中具有请求行、请求头、实体内容的操作的方法。(对于请求行、请求头、请求实体内容这里不做过多的解释,后期会补上一片讲解HTTP协议的文章围绕这个知识点再做详细的分析和学习。)

下面从一下几个方面来介绍该对象的一些特性:

一、获取请求头信息

getHeader(name)方法 --- String ,获取指定名称的请求头的值

getHeaders(String name)方法 --- Enumeration<String> ,获取指定名称的请求头的值的集合,因为可能出现多个重名的请求头

getHeaderNames()方法 --- Enumeration<String> ,获取所有请求头名称组成的集合

getIntHeader(name)方法 --- int ,获取int类型的请求头的值

getDateHeader(name)方法 --- long(日期对应毫秒) ,获取一个日期型的请求头的值,返回的是一个long值,从1970年1月1日0时开始的毫秒值

二、获取客户端相关信息

1.资源路径

getRequestURL 方法返回客户端发出请求完整URL【网络地址,eg:http://****:8080/……】

getRequestURI 方法返回请求行中的资源名部分,在权限控制中常用【服务器端地址】

2. 协议和版本号

getScheme 协议--http

getProtocal版本号--http/1.1

3.请求信息

getQueryString方法返回请求行中的参数部分

getRemoteAddr 方法返回发出请求的客户机的IP地址

getRemotePort 方法返回发出请求的客户机的端口号

4.请求方式

getMethod 得到客户机请求方式

5. 项目名称

getContextPath 获得当前web应用虚拟目录名称

三、获取请求实体内容

getParameter(name) --- String 通过name获得值

getParameterValues(name) --- String[ ] 通过name获得多值 checkbox

getParameterNames() --- Enumeration<String> 获得所有请求参数名称组成的枚举

getParameterMap() --- Map<String,String[ ]> 获取所有请求参数的组成的Map集合,注意,其中的键为String,值为String[]

四、request实现请求转发

ServletContext可以实现请求转发,request也可以。在forward之前输入到response缓冲区中的数据,如果已经被发送到了客户端,forward将失败,抛出异常。

在forward之前输入到response缓冲区中的数据,但是还没有发送到客户端,forward可以执行,但是缓冲区将被清空,之前的数据丢失。注意丢失的只是请求体中的内

容,头内容仍然有效。在一个Servlet中进行多次forward也是不行的,因为第一次forward结束,response已经被提交了。

总之,一条原则,一次请求只能有一次响应,响应提交走后,就再没有机会输出数据给浏览器了。

五、利用请求域传递对象

作用域:就是在某一个范围中可以使用。作为作用域对象,一般都有getAttribute(),setAttribute,removeAttribute三个方法,其内部就是维持了一个

Map<String,Object>对象。

对于HttpServletRequest作用域对象有一下特点:

1. 生命周期:在service方法调用之前由服务器创建,传入service方法。整个请求结束,request生命结束。

2.作用范围:整个请求链。

3.作用:在整个请求链中共享数据。

六、RequestDispatcher进行include操作【了解即可】

forward没有办法将多个servlet的输出组成一个输出,因此RequestDispatcher提供了include方法,可以将多个Servlet的输出组成一个输出返回个浏览器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值