`
Before_Morning
  • 浏览: 36871 次
文章分类
社区版块
存档分类
最新评论

温故知新--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的输出组成一个输出返回个浏览器。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics