J2EE HttpServletRequest详解
- 格式:doc
- 大小:62.00 KB
- 文档页数:5
servlet请求方法Servlet是用Java编写的服务器端程序,它可以处理来自客户端(浏览器)的请求并生成相应的响应。
在Servlet中,我们可以使用不同的请求方法来处理不同类型的请求。
下面是一些相关参考内容,介绍了常用的Servlet请求方法。
1. doGet方法:doGet方法用于处理客户端的GET请求。
在这种情况下,查询字符串会被附加到URL后面,并且可以通过getParameter方法来访问这些参数的值。
这个方法通常用于获取信息,而不是对服务器上的数据进行修改。
例如,一个简单的例子可以是根据用户的请求来返回一个HTML页面。
2. doPost方法:doPost方法用于处理客户端的POST请求。
与GET请求不同,POST请求将数据作为请求体的一部分发送给服务器。
在Servlet中,可以使用getParameter方法来访问这些参数的值。
这个方法通常用于在服务器上创建或更改数据。
例如,当用户提交一个表单时,表单数据会通过POST请求发送给服务器。
3. doPut方法:doPut方法用于处理客户端的PUT请求。
PUT请求用于向服务器添加新的资源或更新现有资源。
在Servlet中,可以使用getInputStream方法来读取请求的正文,并使用请求参数来访问表单字段的值。
这个方法通常用于在服务器上更新数据。
4. doDelete方法:doDelete方法用于处理客户端的DELETE请求。
DELETE请求用于删除服务器上的资源。
在Servlet中,可以使用getParameter方法来访问请求参数的值。
例如,当用户点击"删除"按钮时,可以通过发送DELETE请求来删除特定的数据。
5. doOptions方法:doOptions方法用于处理客户端的OPTION请求。
OPTION请求用于获取服务器支持的请求方法、请求头字段和响应头字段。
在Servlet中,可以使用setHeader方法来设置响应头字段,并使用getHeader方法来获取请求头字段的值。
java中的request的用法Java是一种广泛使用的编程语言,被广泛应用于web开发中。
在Java中,request对象是一个非常重要的对象,用于处理客户端与服务器之间的通信。
本文将介绍Java中request对象的基本用法和相关注意事项。
1. request对象的概述request对象用于封装HTTP请求的信息,包括请求的URL、头部信息、请求参数等。
在Java中,可以通过HttpServletRequest类来实例化request对象。
它是一个接口,定义了访问请求信息的方法。
通常,我们从服务器端接收到request对象,然后根据请求的参数来进行相应的逻辑处理。
2. 获取请求参数request对象提供了多个方法来获取请求参数。
常用的方法有:- getParameter(String name):根据参数名获取单个参数值。
- getParameterValues(String name):根据参数名获取多个参数值,返回一个数组。
- getParameterMap():返回一个包含所有参数名和值的Map对象。
- getParameterNames():返回一个包含所有参数名的Enumeration对象。
3. 获取请求头信息request对象还提供了一系列方法来获取请求头信息。
常用的方法有:- getHeader(String name):根据头部信息名获取对应的值。
- getHeaders(String name):根据头部信息名获取对应的所有值,返回一个Enumeration对象。
- getHeaderNames():返回一个包含所有头部信息名的Enumeration 对象。
4. 获取请求的URL和URIrequest对象中也包含了获取请求URL和URI的方法。
常用的方法有:- getRequestURL():返回一个StringBuffer对象,包含请求的URL。
- getRequestURI():返回一个字符串,包含请求的URI。
java 之Request0x01、Request什么是request在Servlet API 中,定义了⼀个HttpServletRequest 接⼝,它继承⾃ServletRequest 接⼝,专门⽤来封装HTTP 请求消息。
由于HTTP 请求消息分为请求⾏、请求头和请求体三部分,因此,在HttpServletRequest 接⼝中定义了获取请求⾏、请求头和请求消息体的相关⽅法.Web 服务器收到客户端的http 请求,会针对每⼀次请求,分别创建⼀个⽤于代表请求的request 对象、和代表响应的response 对象。
1、操作请求⾏和请求头操作请求⾏getMethod();获取请求⽅式getRemoteAddr() ;获取客户机的IP 地址(知道是谁请求的)getContextPath(); 获得当前应⽤⼯程名(部署的路径);getRequestURI();获得请求地址,不带主机名getRequestURL();获得请求地址,带主机名getServerPort();获得服务端的端⼝getQueryString();获的请求参数(get 请求的,URL 的?后⾯的. eg:username=zs&password=123456)实例代码:操作请求头User-Agent: 浏览器信息Referer:来⾃哪个⽹站(防盗链)等等2、操作请求参数获得请求参数请求参数乱码的处理使⽤BeanUtils 封装请求参数到JavaBean@WebServlet("/demo01")public class ServletDemo01 extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//使⽤request 对象获取请求⾏的信息://1. 获取请求的⽅式(可能会⽤)String method = request.getMethod();//System.out.println("请求⽅式为:" + method);//2. 获取客户端的ip 地址String remoteAddr = request.getRemoteAddr();//System.out.println("客户端的ip 地址是:" + remoteAddr);//3. 获取项⽬部署的路径(以后可能⽤到)String contextPath = request.getContextPath();//System.out.println("项⽬部署路径是:" + contextPath);//4. 获取请求的url: 统⼀资源定位符 http://localhost:8080/requestDemo/demo01String url = request.getRequestURL().toString();//System.out.println("此次请求的url 是:" + url);//5. 获取请求的uri: 统⼀资源标识符,在url 的基础上省略了服务器路径"http://loaclhost:8080"String uri = request.getRequestURI();System.out.println(uri);}}@WebServlet("/demo02")public class ServletDemo02 extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//根据请求头的name 获取value//⽬标:获取name 为user-agent 的请求头的信息String header = request.getHeader("user-agent");System.out.println("获取的请求头agent 为:" + header);}}法名描述String getParameter(String name)获得指定参数名对应的值。
request知识点Request对象 request对象的原型是javax.servlet.http.HttpServletRequest.此对象由服务器⾃动创建。
在Servlet API中,定义了⼀个HttpServletRequest接⼝,它继承⾃ServletRequest接⼝,专门⽤来封装HTTP请求消息。
服务器在创建此对象时把Http请求的三样数据已经封装给了request对象。
所以想获得请求的数据只要调⽤request对象的getXXX⽅法即可。
Web服务器收到客户端的http请求,会针对每⼀次请求,分别创建⼀个⽤于代表请求的request对象、和代表响应的response对象。
请求参数: get请求: 数据存在于请求⾏中,⽹址中?后⾯部分; post请求:数据存在于请求正⽂中; 常⽤的获取数据的⽅法(请求体): parameter:参数. parameter的相关⽅法是获取表单数据的. String getParameter(String name) 获得指定参数名对应的⼀个值。
如果有返回字符串,如果没有则返回null。
String[] getParameterValues(String name) 获得指定参数名对应的⼀个数组。
如果有返回字符串数组,如果没有则返回null。
Map<String,String[]> getParameterMap(); 获取表单中所有的数据。
//框架⽤ setCharacterEncoding(String env) 设置请求体的编码,⽤于解决POST请求参数乱码问题,只解决post请求正⽂的乱码问题 new String(username.getBytes("iso-8859-1"),"UTF-8"); 解决get⽅式提交的乱码 与请求⾏相关的⽅法 getMethod(); //获取请求⽅式 getRequestURL(); //获取URL getRequestURI(); //获取URI getContextPath();// 获取项⽬名 getRemoteAddr(); // 获取客户机IP地址 与请求头相关的⽅法 getHeader(String name); 以字符串形式返回请求头的值 request的⽣命周期: 当服务器收到客户端发送的请求时,就会创建request对象,当服务器对这次请求做出回应了,呢么request对象就会被销毁.存的数据只能在⼀次请求范围内有效 request作为域对象的相关⽅法 request.setAttribute(String name,Object value); 向request中添加<key,value> Object request.getAttribute(String name); 请求转发 request.getRequestDispatcher("/XXXServlet").forward(request,response); 当下⼀个资源需要传递过来的数据时适合使⽤; 重定向 respnose.sendRedirect(request.getContextPath()+"/XXXServlet"); 当下⼀个资源不需要传递过来的数据时适合使⽤。
Request常⽤⽅法(总结)⼀、HttpServletRequest介绍 HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象提供的⽅法,可以获得客户端请求的所有信息。
⼆、Request常⽤⽅法2.1、获得客户机信息 getRequestURL⽅法返回客户端发出请求时的完整URL。
getRequestURI⽅法返回请求⾏中的资源名部分。
getQueryString ⽅法返回请求⾏中的参数部分。
getPathInfo⽅法返回请求URL中的额外路径信息。
额外路径信息是请求URL中的位于Servlet的路径之后和查询参数之前的内容,它以“/”开头。
getRemoteAddr⽅法返回发出请求的客户机的IP地址。
getRemoteHost⽅法返回发出请求的客户机的完整主机名。
getRemotePort⽅法返回客户机所使⽤的⽹络端⼝号。
getLocalAddr⽅法返回WEB服务器的IP地址。
getLocalName⽅法返回WEB服务器的主机名。
2.2、获得客户机请求头 getHeader(string name)⽅法:String getHeaders(String name)⽅法:Enumeration getHeaderNames()⽅法2.3、获得客户机请求参数(客户端提交的数据)getParameter(String)⽅法(常⽤)getParameterValues(String name)⽅法(常⽤)getParameterNames()⽅法(不常⽤)getParameterMap()⽅法(编写框架时常⽤)3.6、提交中⽂数据乱码问题总结 1、如果提交⽅式为post,想不乱码,只需要在服务器端设置request对象的编码即可,客户端以哪种编码提交的,服务器端的request对象就以对应的编码接收,⽐如客户端是以UTF-8编码提交的,那么服务器端request对象就以UTF-8编码接收(request.setCharacterEncoding(“UTF-8”)) 2、如果提交⽅式为get,设置request对象的编码是⽆效的,request对象还是以默认的ISO8859-1编码接收数据,因此要想不乱码,只能在接收到数据后再⼿⼯转换,步骤如下: 1).获取获取客户端提交上来的数据,得到的是乱码字符串,data=”è??” String data = request.getParameter(“paramName”); 2).查找ISO8859-1码表,得到客户机提交的原始数据的字节数组 byte[] source = data.getBytes(“ISO8859-1”); 3).通过字节数组以指定的编码构建字符串,解决乱码 data = new String(source, “UTF-8”); 通过字节数组以指定的编码构建字符串,这⾥指定的编码是根据客户端那边提交数据时使⽤的字符编码来定的,如果是GB2312,那么就设置成data = new String(source, “GB2312”),如果是UTF-8,那么就设置成data = new String(source, “UTF-8”)四、Request对象实现请求转发4.1、请求转发的基本概念 请求转发:指⼀个web资源收到客户端请求后,通知服务器去调⽤另外⼀个web资源进⾏处理。
Request的包装类HttpServletRequestWrapper的使⽤说明⽬录Request的包装类HttpServletRequestWrapper使⽤⼤致的意思是:上述⽅案解决了HttpServletRequestWrapper和HttpServletResponseWrapper使⽤时的坑WrapperRequest和WrapperResponse的使⽤这⾥涉及到的坑坑1坑2解决问题问题延伸Request的包装类HttpServletRequestWrapper使⽤在使⽤zuul进⾏鉴权的时候,我们希望从请求Request中获取输⼊流,解析⾥⾯的内容,奈何InputStream只能被读取⼀次。
为啥呢?源码⾥是这样说的:public int read(byte[] b,int off, int len) Reads up to len bytes of data into an array of bytes from this input stream. Ifpos equals count, then -1 is returned to indicate end of file.Otherwise, the number k of bytes read is equal to the smaller of len and count-pos.If k is positive, then bytes buf[pos] through buf[pos+k-1] are copied into b[off] through b[off+k-1] in the manner performed by System.arraycopy. The value k is added into pos and k is returned. ⼤致的意思是:在InputStream读取的时候,会有⼀个pos指针,它指⽰每次读取之后下⼀次要读取的起始位置。
HttpServletRequest对象⽅法的⽤法⼩结深⼊体验JavaWeb开发内幕——关于HttpServletRequestRequest对象HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,开发⼈员通过这个对象的相关⽅法,即可以获得客户的这些信息。
⼀、通过request常⽤⽅法获得相关信息:1、通过request常⽤⽅法获得客户机信息getRequestURL⽅法返回客户端发出请求时的完整URL。
getRequestURI⽅法返回请求⾏中的资源名部分。
getQueryString ⽅法返回请求⾏中的参数部分。
getRemoteAddr⽅法返回发出请求的客户机的IP地址getRemoteHost⽅法返回发出请求的客户机的完整主机名getRemotePort⽅法返回客户机所使⽤的⽹络端⼝号getLocalAddr⽅法返回WEB服务器的IP地址。
getLocalName⽅法返回WEB服务器的主机名getMethod得到客户机请求⽅式例如在Request.Java中加⼊如下代码://返回相关请求的信息String uri=request.getRequestURI();Stringrad = request.getRemoteAddr();Stringrh = request.getRemoteHost();Stringru = request.getRemoteUser();intrp = request.getRemotePort();Stringcp = request.getContextPath();Stringla = request.getLocalAddr();Stringce = request.getCharacterEncoding();Stringgm = request.getMethod();Stringqs = request.getQueryString();System.out.println(uri);System.out.println(rad);System.out.println(rh);System.out.println(ru);System.out.println(rp);System.out.println(cp);System.out.println(la);System.out.println(ce);System.out.println(gm);System.out.println(qs);即可获取相关信息。
简述request 对象在Web开发中,"request"对象通常是指在服务器端接收到客户端请求时所创建的对象,它包含了有关请求的信息。
具体的实现可能因编程语言和Web框架而异,下面是一个简要的概述,以常见的Web 开发环境(如Java Servlet、Python Flask等)为例:HTTP请求方法: Request对象包含了HTTP请求的方法,例如GET、POST、PUT等。
这告诉服务器客户端期望执行的操作。
请求头(Headers): Request对象包含了HTTP请求的头部信息,其中包括了诸如用户代理、内容类型、授权信息等。
请求参数:对于GET请求,参数通常包含在URL中;而对于POST 请求,参数则包含在请求体中。
Request对象使开发者能够方便地访问这些参数。
Cookie:如果请求中包含了Cookie,Request对象也会包含这些信息。
这对于处理用户会话非常重要。
会话信息:对于基于会话的应用,Request对象可能包含了与会话相关的信息,如用户身份验证、会话ID等。
文件上传信息(对于文件上传):如果请求中包含文件上传,Request对象会提供访问这些文件的接口。
路径信息:对于RESTful风格的应用,请求的路径信息可能包含在Request对象中,以便服务器能够识别和处理不同的资源请求。
协议和主机信息: Request对象通常还包含有关请求的协议(HTTP或HTTPS)以及主机信息(域名或IP地址)。
在Java Servlet中,可以使用HttpServletRequest类表示Request对象。
在Python Flask等框架中,request对象提供了类似的功能。
具体的使用方式可能因框架和编程语言的不同而异,但基本原理和信息都是类似的。
通过处理Request对象,开发者可以获取客户端请求的各种信息,以便服务器能够做出相应的响应。
Java中Request对象的常用方法
在Java中,HttpServletRequest对象是用于获取客户端发送给服务器的HTTP 请求信息的。
以下是HttpServletRequest对象中常用的10个方法及其作用:
1.getMethod() - 返回请求中的HTTP方法(如GET、POST等)。
2.getHeader(String name) - 返回请求头中指定名称的值。
3.getHeaderNames() - 返回请求头中所有名称的Enumeration。
4.getCookies() - 返回客户端发送的所有cookies。
5.getIntParameter(String name) - 返回请求参数中指定名称的整数值。
6.getStringParameter(String name) - 返回请求参数中指定名称的字符
串值。
7.getProtocol() - 返回使用的协议名和版本。
8.getScheme() - 返回使用的方案名(如http、https)。
9.getServerName() - 返回接收请求的服务器的主机名。
10.getServerPort() - 返回接收请求的服务器的端口号。
这些方法为Java Web开发提供了方便的途径,使得开发者可以轻松地获取和处理HTTP请求中的信息。
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默认的localeEnumeration 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"DIGEST_AUTH: Value "DIGEST"方法详解:String getAuthType(): 返回用来保护servlet的authentication机制的名字, 所有的servlet支持basic, form和client certificate认证, 其他的支持digest认证, 如果servlet没有认证,将返回null.Cookie[] getCookies():返回包含客户端请求所有Cookie对象的数组,如果没有发送cookie,那么本方法将返回null.long getDateHeader(String name): 返回以长整数的形式返回一个特定的请求头(request header),该长整数代表一个Date对象. 该方法可以用在包含时间信息的header中, 如: If-Modified-Since.header name是大小写敏感的.如果请求没有一个特定名字的header,这个方法将返回-1, 如果header不能够被转化为date,那么该方法将抛出一个IllegalArgumentException.String getHeader(String name): 以字符串的形式返回指定的request header的值, 如果请求不包含指定名字的header, 本方法将返回null, 如果有多个header有相同的名字,本方法返回第一个, 本方法是大小写敏感的,你可以对任何request header使用本方法.Enumeration getHeaders(String name):Enumeration getHeaderNames():int getIntHeader(String name)String getMethod() :返回发送请求使用的方法, 如GET, POST, or PUT. 和CGI变量REQUEST_METHOD相同.String getPathInfo(): 返回客户端发送请求时使用URL的额外路径信息. 额外的路径信息是servlet后,查询子串前的部分,以"/"开头.如果没有额外的路径信息,将返回null.和CGI变量PATH_INFO的值相同.String getPathT ranslated() :返回额外的路径信息,并且将它转化成实际路径, 同CGI变量PATH_TRANSLATED值相同.如果URL没有额外的路径信息, 本方法将返回null, 或者servlet container因某些原因不能够将virtual path转化成real path(例如, web application是在压缩包中运行时), web container不会解码这个字符串.String getContextPath(): 返回URI中,指示request context的部分, Context一百年首先出现在请求URI中, 该路径以"/"起始, 但是不以"/"结尾. 对于位于default (root) context中的servlet, 本方法返回"", container不解析该字符串.可能一个servlet匹配多个context path, 这种情况下, 本方法将返回请求的实际context, 并且这将和使用ServletContext.getContextPath()方法返回的值不同. ServletContext.getContextPath()返回的context path可以认为是程序的prime或首先context path.getQueryString(): request URL包含的路径后面的查询字符串. 本方法将返回null, 如果URL不包含query string. 和CGI变量QUERY_STRING相同.String getRemoteUser(): 返回发送本请求用户的login, 如果用户已经被认证. 如果没有被人整,返回null. 用户名是否在后续的请求中每次都被发送和使用的浏览器和认证方式有关, 和CGI变量REMOTE_USER值相同.boolean isUserInRole(String role):指示验证的用户是否是包含在特定的逻辑"role"中, Roles和role membership可以通过deployment descriptors中定义. 如果用户没有被认证,将返回false.Principal getUserPrincipal(): 返回一个java.security.Principal对象, 包含当前认证用户的用户名. 如果user没有认证, 这个方法将返回null.String getRequestedSessionId():返回客户端确定的session ID, 这可能和本次请求的当前有效session的ID不同. 如果client没有确定session ID, 这个方法将返回null.String getRequestURI(): 返回在请求的首行中URL的从协议名到查询字串的部分. web container不解析这个字串.StringBuffer getRequestURL(): 重构用户发送请求的URL, 返回的URL包含protocol, server name, port number和server path. 但是不包含query string参数.如果这个请求通过RequestDispatcher.forword(javax.servlet.ServletRequest, javax.servlet.ServletResponse), 进行了转发, 重构URL的server path必须反映获取RequestDispatcher的路径, 而不是客户端确定的server path.String getServletPath(): 返回request URL中请求服务器的部分. 该路径以"/"开头, 包含servlet名字,或到该servlet的路径,但是不包含任何额外路径信息,或查询字符串, 和CGI变量SCRIPT_NAME相同.如果用来处理请求的servlet符合"/*"的样式,本方法将返回空串("").HttpSession getSession(boolean create): 返回和当前请求相关的HttpSession对象, 如果当前没有session且create是true, 返回一个新的session.如果create是false且当前的请求没有有效的HttpSession, 这个方法返回null.为了确保session被正确的保持,你应该在提交响应之前调用本方法. 如果container使用cookies保持session的完整性, 且要求提交响应的时候产生新的session, 将抛出IllegalStateException.HttpSession getSession(): 获取当前请求对象的request, 如果请求没有session, 那么产生一个.boolean isRequestedSessionIdValid(): 检查被要求的session ID是否有效.富国client没有确定任何的session ID, 这个方法将返回false.boolean isRequestedSessionIdFromCookie():检查要求的session ID是否以cookie的形式传递过来的boolean isRequestedSessionIdFromURL(): 检查需要的session ID是否是作为URL的一部分传递过来的.。