HttpServletRequest
HttpServletRequest
Web客户端发送给Web服务器的HTTP请求信息包含三部分:请求行、请求消息头、消息正文(实体内容)。消息正文只在以POST、PUT、DELETE等方式发出请求时才出现。Servlet的API定义了一个ServletRequest接口类来获取客户端请求信息以及客户机和服务器的网络环境信息。HttpServletRequest是专门用于HTTP协议的ServletRequest接口,用于封装HTTP请求信息,增加获取HTTP协议专有的头信息方法,支持Cookie和Session跟踪以及获取HTTP请求消息参数的功能。
4.1 获取请求行信息
4.1.1.1 GetMethod
返回HTTP请求信息终端请求方式:GET、POST、HEAD、PUT、DELETE等
4.1.1.2 getRequestURI
返回请求行中的资源名部分。
例:
http://localhost:8080/JSPProject/servlet/ServletRequestServlet?params1=¶ms2=2
返回的是:/servlet/ServletRequestServlet
4.1.1.3 getQueryString
返回请求行中的参数部分。
例:
http://localhost:8080/JSPProject/servlet/ServletRequestServlet?params1=¶ms2=2
返回的是: params1=¶ms2=2
4.1.1.4 getProtocol
返回请求行中的协议名称和版本。
4.1.1.5 getContextPath
返回请求URL所属的WEB应用程序的路径。
4.1.1.6 getPathInfo
返回请求URL中额外路径信息,额外路径信息室请求URL中的位于Servlet的路径之后和查询参数之前的内容。在MVC框架模式中,客户端所有请求都指向一个*控制器的Servlet,其他各个JSP页面则作为URL中的额外路径部分,由这个Servlet根据额外路径信息去调用其他各个JSP页面。
4.1.1.7 getPathTranslated
返回URL中的额外路径信息所对应的资源的物理路径。
4.1.1.8 getServletPath
返回Servlet的名称或Servlet所映射的路径
4.2 获取请求头信息
4.2.1.1 getHeader
返回一个指定名称的头字段值。
4.2.1.2 getHeaders
返回一个Enumeration集合,该集合对象由请求消息中出现的所有头字段值组成。
4.2.1.3 getHeaderName
返回一个包含请求信息中所有头字段名的Enumeration对象。
4.2.1.4 getIntHeader
获取指定名称的头字段并将其转换为Int型
4.2.1.5 getDateHeader
用于获取一个指定名称的头字段的值并将其转换为日期型
4.2.1.6 getContentType
返回Content-Type头字段值
4.2.1.7 getContentLength
返回Content-Length头字段值
4.2.1.8 getCharacterEncoding
返回请求消息的实体部分的字符集编码
4.3 获取请求参数
4.3.1.1 getParameter
返回某个指定名称的参数的值
4.3.1.2 getParameterValues
返回多个相同名称的参数
4.3.1.3 getParameterNames
返回一个包含请求消息中所有参数名的Enumeration对象。
4.3.1.4 getParameterMap
将请求消息中的所有参数名和值装入Map中
4.4 获取请求消息实体内容
4.4.1.1 getInputStream/getReader
getInputStream返回一个代表实体内容为ServletInputStreamd输入流对象。如果实体内容包含二进制数据,使用该方法。
getReader返回一个代表肢体内容的BufferedReader对象。在调用getReader方法之前可以调用setCharacterEncoding方法设置字符集编码。
4.5 利用请求域属性传递信息
4.5.1.1 setAttribute
用于将一个对象与一个名称关联后存储进ServletRequest对象中。
4.5.1.2 getAttribute
用于从ServletRequest中返回指定名称的属性对象。
4.5.1.3 removeAttribute
删除指定名称的属性。
4.5.1.4 getAttributeNames
获取属性名称返回一个Enumeration对象
注:Servlet对象中的属性只对当前请求有效,对于其他请求无效,也就说请求域属性只能用于在通过RequestDispatcher的forward和include方法贯穿起来的多个Servlet或JSP页面之间共享数据。
通过URL地址后面附加参数的方式可以在两个Servlet之间传递信息,但是只能传递简单的字符文本信息,不能像请求域那样传递复杂对象。
推荐阅读
-
HttpServletRequest
-
HttpServletRequest
-
HttpServletRequest request获取请求url等信息
-
mockito+testng Mock HttpServletRequest
-
直接获取HttpServletRequest和HttpSession对象
-
HttpServletRequest对象常用功能_动力节点Java学院整理
-
HttpServletRequest对象简介_动力节点Java学院整理
-
详解Spring框架下向异步线程传递HttpServletRequest参数的坑
-
基于HttpServletRequest 相关常用方法的应用
-
基于HttpServletRequest 相关常用方法的应用