概述
使用javax.servlet.ServletRequest定义一个对象,可以向servlet提供客户端信息。servlet容器创建ServletRequest对象,将其作为参数传递给servlet的service方法。
SerlvetRequest对象提供了包含参数名及参数值,属性以及输入流在内的数据。继承自ServletRequest的接口可以提供特定协议的额外数据(例如,HTTP数据由javax.http.HttpServletRequest提供)。
getContentLength方法
返回由输入流提供的请求体的长度(以字节为单位),如果长度未知,则返回-1。对于HTTP servlet与CGI变量CONENT_LENGHT的值相同。
返回代表请求体长度的整数,如果长度不明或大于Integer.MAX_VALUE则返回-1。
getContentLengthLong
getContentLength返回的是int类型,对于一些过长的数据会返回-1,使用该方法可以获取正确的长度。
getCharacterEncoding方法
返回请求体中使用的字符编码,如果没有指定字符编码,方法返回null。将按照以下的优先级顺序探测指定的编码:
- 每个请求
- 部署描述符中默认指定的,或者ServletContext.setRequestCharacterEncoding(String)
- 通过容器配置指定的容器默认编码
getContentType
返回请求体的MIME类型,如果类型未知则返回null。对于HTTP servlet跟CGI变量CONTENT_TYPE的值一样。
getProtocol
返回请求体的协议名称及版本,格式如下:协议/主版本.小版本,例如HTTP/1.1。对于HTTP servlet 该值与CGI的变量SERVER_PROTOCOL值一样。
getScheme
返回生成请求所使用schema名,例如 http,https, ftp。不同的schema有不同的生成URL的规则。
getServerName
返回请求发往的服务器的主机名。它是请求头Host中“:”之前的部分,可以是以及解析过的服务器名,或者服务器的IP地址。
getServerPort
返回请求发往的端口号。是请求头Host值中“:”之后的部分,是客户端连接被接收的服务器端口。
getRemoteAddr
返回客户端的IP地址或发送请求的最后一个代理的IP地址。对于HTTPservlet跟CGI变量REMOTE_ADDR部分是一样的。
getRemoteHost
返回发送请求的客户端的全标识名或者最后一个代理的全限定名。如果引擎没有或者不能解析主机名(为提高性能),返回的是以逗号分隔的IP地址。对于HTTPservlet其值与CGI变量的REMOTE_HOST一致。