J2EE HttpServletRequest详解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ServletRequest详解
一个用来向服务器提供客户端请求信息的对象. servlet container产生一个ServletRequest,然后将它作为参数传递给servlet的service方法.
Servlet可以提供如下数据:参数和对应值,属性,输入流. 实现ServletRequest的接口可以提供另外的协议有关的数据(例如,HttpServletRequest可以提供HTTP数据).
方法详解:
Object getAttribute(String name):
以对象的形式返回指定的属性值,如果属性值不存在,则返回null.
属性值可以通过两种方法设置: servlet container可能设置属性,以便请求的特定信息可以被访问. 例如, 使用HTTPS发送的请求, javax.servlet.request.X509Certificate能够被用来查询客户端certificate信息. 属性同样可以使用setAttribute()方法进行设置. 这可以在调用RequestDispatcher之前将信息嵌入到request中.
属性的名字,应该同样遵循报名的传统.
getAttributeNames():
返回请求所有可用属性的枚举. 如果request没有可用的属性, 那么将返回空枚举. getCharacterEncoding():
返回本请求中字符编码的名字. 如果请求没有指定字符编码,那么将返回null.
void setCharacterEncoding(String env):
重写本请求所使用的字符编码. 本方法必须在读取请求参数或使用getReader()方法读取输入之前调用, 不然没有效果.
int getContentLength(): 以字节的形式返回request body的长度并且made available by the input stream. 如果长度未知,将返回-1. 对于HTTPservlet, 其值和CGI变量CONTENT_LENGTH 值相同.
String getContentType():
返回request body的MIME类型. 如果类型未知, 返回null. 对于HTTP servlet,其值和CGI 变量CONTENT_TYPE相同.
ServletInputStream getInputStream(): 使用ServletInputStream返回请求体的二进制数据. 本方法或者getReader()可能被调用, 来读取请求体,但是不会同时使用.
String getParameter(String name): 以字符串的形式返回请求参数的值,如果参数不存在,返回null, 请求参数是请求发送的而外信息, 对于HTTP servlet, 参数包含在查询字串(query string)或发送的表格数据中.
应当确定参数只有一个值的时候才使用本方法. 如果参数可能有多个值,硬挨使用getParameterValues(ng.String)
如果你对有多个值的参数使用本方法, 返回的值和getParameterValues方法返回数组的第一个值相同.
如果参数是在请求体中发送的(当使用HTTP POST方法的时候, 会出现这中情况), 通过getInputStream()或getReader()直接读取body,将会干扰本方法的执行.
Enumeration getParameterNames(): 返回请求中所有参数名的包含字符串数据的枚举, 如果请求没有参数, 本方法返回空枚举.
String[] getParameterValues(String name):
返回给定参数的所有值. 如果参数不存在,返回null. 如果参数只有一个值, 数组长度为1. Map getParameterMap(): 返回请求所有参数的映射.
String getProtocol(): 以protocol/majorVersion.minorVersion的格式返回请求使用的协议. 该方法返回的值和CGI变量SERVER_PROTOCOL的值相同.
String getScheme(): 发送这个请求的时候使用的scheme, 例如http,https或ftp, 不同的scheme有不同的构造URL的方式, 在RFC 1738中注解的那样.
String getServerName(): 返回所请求的server的主机名, 是Host header中":"前的部分. 可能是解析后的server name, 也可能时server IP地址.
int getServerPort():Host Header ":"之后的值, 如果有的话, 或者是服务器接收客户端连接的端口.
BufferedReader getReader(): 使用BufferedReader以字符数据的形式返回the body of request. Reader按照body总字符的编码方式对字符进行翻译. 可以使用本方法或是getInputStream()方法来读取body,但是不能够两者一块使用.
String getRemoteAddr(): 返回客户端的IP或者最后一个代理的IP地址. 对于HTTP servlet,拥有和CGI变量REMOTE_ADDR相同的值.
String getRemoteHost(): 返回客户端或最后一个代理的全名, 如果不能够解析出主机名,将返回点分的IP地址, 对于HTTP servlet, 返回值和CGI变量REMOTE_HOST的值相同.
void setAttribute(String name,
Object o)
在请求中存储一个属性, 不同的请求之间见重置Attribute, 这个方法和RequestDispatcher一块使用. 属性名应该遵循和报名一样的传统. 如果设置的属性值为null, 效果同removeAttribute.
指的注意的是,如果request是从属于别的web application的servlet通过RequestDispatcher 派发的, 这个方法设置的属性对象, 在caller servlet中可能不能够正确查询到.
void removeAttribute(String name): 删除属性,一般用不到本方法,因为属性一般只在请求处理的期间存在.
Locale getLocale(): 基于Accept-language header返回首选的Locale,client按照这种方式接收内容. 如果client request没有提供Accept-Language header, 比本方法将返回server默认的locale
Enumeration getLocales():
boolean isSecure(): 指示请求是否是使用安全的通道发送的, 例如HTTPS. RequestDispatcher getRequestDispatcher(String path): 本方法和ServletContext.getRequestDispatcher(ng.String)区别是本方法可以使用相对路径. String getRealPath(String path):Deprecated, 使用ServletContext.getPath(ng.String)替代. int getRemotePort()
String getLocalName()
String getLocalAddr()
int getLocalPort()
HttpServletRequest详解:
HttpServletRequest: 是对ServletRequest的扩展, 提供了HTTP servlet的信息.
servlet container产生一个HttpServletRequest对象并将其作为参数传递给servlet的service 方法(doGet, doPost, etc).
字段详解:
static final String BASIC_AUTH:BASIC authentication标识符, 值是"BASIC".
FORM_AUTH: 值是"FORM"
CLIENT_CERT_AUTH: 值是"CLIENT_CERT"