HttpServletRequest简介

本文记录Java学习过程中遇到的HttpServletRequest简介~

在Servlet的API中,定义了一个HttpServletRequest接口,它继承自ServletRequest接口,专门用来封装HTTP请求消息。由于HTTP请求分为请求行、请求消息头和请求体三部分。因此,在HttpServletRequest接口中定义了获取请求行、请求头和请求体的相关方法。

获取请求行信息的相关方法

当访问Servlet时,会在请求消息的请求行中,包含请求方法、请求资源名和请求路径等信息。为了获取这些信息,在HttpServletRequest接口中,定义了一系列用于获取请求行的方法,如下:

1.getMethod()方法

该方法用于获取HTTP请求消息中的请求方式(如GET和POST等)。

2.getRequestURI()方法

该方法用于获取请求行中资源名称部分,即位于URL的主机和端口之后、参数部分之前的部分。

3.getQueryString()方法

该方法用于获取请求行中的参数部分,也就是资源路径后面问号(?)以后的所有内容。

4.getProtocol()方法

该方法用于获取请求行中的协议名和版本,例如HTTP/1.0或者HTTP/1.1。

5.getContextPath()方法

该方法用于获取请求URL中属于Web应用程序的路径,这个路径以"/"开头,表示相对于整个Web站点的根目录,路径结尾不含"/"。如果请求URL属于Web站点的根目录,那么返回结果为空字符串("")。

6.getServletPath()方法

该方法用于获取Servlet的名称或Servlet所映射的路径。

7.getRemoteAddr()方法

该方法用于获取请求客户端的IP地址,其格式类似于"127.0.0.1"。

8.getRemoteHost()方法

该方法用于获取请求客户端的完整主机名,其格式类似于"www.oliver.ren"。需要注意的是,如果无法解析出客户端的完整主机名,该方法将会返回客户端的IP地址。

9.getRemotePort()方法

该方法用于获取请求客户端的网络连接的端口号。

10.getLocalAddr()方法

该方法用于获取Web服务器上接收当前请求网络连接的IP地址。

11.getLocalName()方法

该方法用于获取Web服务器上接收当前请求网络连接IP对应的主机名。

12.getLocalPort()方法

该方法用于获取Web服务器上接收当前请求网络连接的端口号。

13.getServerName()方法

该方法用于获取当前请求所指向的主机名,即HTTP请求消息中Host头字段所对应的主机名部分。

14.getServerPort()方法

该方法用于获取当前请求所连接的服务器端口号,即HTTP请求消息中Host头字段所对应的端口号部分。

15.getScheme()方法

该方法用于获取请求的协议名,例如http、https和ftp等。

16.getRequestURL()方法

该方法用于获取客户端发出请求时的完整URL,包括协议、服务器名、端口号、资源路径等信息,但不包括后面的查询参数部分。注意,getRequestURL()方法返回的结果是StringBuffer类型,而不是String类型,这样更便于对结果进行修改。

获取请求消息头的相关方法​

当请求Servlet时,需要通过请求头向服务器传递附加信息。例如,客户端可以接收的数据类型、压缩方式和语言等。为此,在HttpServletRequest接口中,定义了一系列用于获取HTTP请求头字段的方法,如下所示:

1.getHeader(String name)方法

该方法用于获取一个指定头字段的值,如果请求消息中没有包含指定的头字段,getHeader()方法返回null;如果请求消息中包含有多个指定名称的头字段,getHeader()方法返回其中第一个头字段的值。

2.getHeaders(String name)方法

该方法返回一个Enumeration集合对象,该集合对象由请求消息中出现的某个指定名称的所有头字段值组成。在多数情况下,一个头字段名在请求消息中只出现一次,但有时候可能会出现多次。

3.getHeaderNames()方法

该方法用于获取一个包含所有请求头字段的Enumeration对象。

4.getIntHeader(String name)方法

该方法用于获取指定名称的头字段,并且将其值转为int类型。需要注意的是,如果指定名称的头字段不存在,返回值为-1;如果获取到的头字段的值不能转为int类型,将发生NumberFormatException异常。

5.getDateHeader(String name)方法

该方法用于获取指定头字段的值,并将其按GMT时间格式转换成一个代表日期/时间的长整数,这个长整数是自1970年01月01日00点00分00秒算起的以毫秒为单位的时间值。

6.getContentType()方法

该方法用于获取Content-Type头字段的值,结果为String类型。

7.getCharacterEncoding()方法

该方法用于返回请求消息的实体部分的字符集编码,通常是从Content-Type头字段中进行提取,结果为String类型。

获取请求参数相关的方法

在实际开发中,经常需要获取用户提交的表单数据。例如,用户名、密码和电子邮件等,为了方便获取表单中的请求参数,在HttpServletRequest接口中定义类一系列获取请求参数的方法,如下所示:

1.getParameter(String name)方法

该方法用于获取某个指定名称的参数值,如果请求消息中没有包含指定名称的参数,则返回null;如果指定名称的参数存在但没有设置值,则返回一个空串;如果请求消息中包含有多个该指定名称的参数,放回第一个出现的参数值。

2.getParameterValues(String name)方法

HTTP请求消息中可以有多个相同名称的参数(通常由一个包含有多个同名的字符元素的form表单生成),如果要获得HTTP请求消息中的同一个参数名所对应的所有参数值,那么就应该使用getParameterValues()方法,该方法用于返回一个String类型的数组。

3.getParameterNames()方法

该方法用于返回一个包含请求消息中所有参数名的Enumeration对象,在此基础上,可以对请求消息中的所有参数进行遍历处理。

4.getParameterMap()方法

该方法用于将请求消息中的所有参数名和值装入一个Map对象中返回。

标签: none