您的位置:首页 > 理论基础 > 计算机网络

HttpServletRequest的应用

2012-08-28 15:56 489 查看
公共接口类HttpServletRequest继承自ServletRequest.客户端浏览器发出的请求被封装成为一个HttpServletRequest对象。所有的信息包括请求的地址,请求的参数,提交的数据,上传的文件客户端的ip甚至客户端操作系统都包含在其内。HttpServletResponse继承了ServletResponse接口,并提供了与Http协议有关的方法,这些方法的主要功能是设置HTTP状态码和管理Cookie。

  一、HttpServletRequest接口

  定义

  public interface HttpServletRequest extends ServletRequest;

  用来处理一个对Servlet的HTTP格式的请求信息。

  方法

  1、getAuthType

  public String getAuthType();

  返回这个请求的身份验证模式。

  2、getCookies

  public Cookie[] getCookies();

  返回一个数组,该数组包含这个请求中当前的所有cookie。如果这个请求中没有cookie,返回一个空数组。

  3、getDateHeader

  public long getDateHeader(String name);

  返回指定的请求头域的值,这个值被转换成一个反映自1970-1-1日(GMT)以来的精确到毫秒的长整数。

  如果头域不能转换,抛出一个IllegalArgumentException。如果这个请求头域不存在,这个方法返回-1。

  4、getHeader

  public String getHeader(String name);

  返回一个请求头域的值。(译者注:与上一个方法不同的是,该方法返回一个字符串)

  如果这个请求头域不存在,这个方法返回-1。

  5、getHeaderNames

  public Enumeration getHeaderNames();

  该方法返回一个String对象的列表,该列表反映请求的所有头域名。

  有的引擎可能不允许通过这种方法访问头域,在这种情况下,这个方法返回一个空的列表。

  6、getIntHeader

  public int getIntHeader(String name);

  返回指定的请求头域的值,这个值被转换成一个整数。

  如果头域不能转换,抛出一个IllegalArgumentException。如果这个请求头域不存在,这个方法返回-1。

  7、getMethod

  public String getMethod();

  返回这个请求使用的HTTP方法(例如:GET、POST、PUT)

  8、getPathInfo

  public String getPathInfo();

  这个方法返回在这个请求的URL的Servlet路径之后的请求URL的额外的路径信息。如果这个请求URL包括一个查询字符串,在返回值内将不包括这个查询字符串。这个路径在返回之前必须经过URL解码。如果在这个请求的URL的Servlet路径之后没有路径信息。这个方法返回空值。

  9、getPathTranslated

  public String getPathTranslated();

  这个方法获得这个请求的URL的Servlet路径之后的额外的路径信息,并将它转换成一个真实的路径。在进行转换前,这个请求的URL必须经过URL解码。如果在这个URL的Servlet路径之后没有附加路径信息。这个方法返回空值。

  10、getQueryString

  public String getQueryString();

  返回这个请求URL所包含的查询字符串。一个查询字串符在一个URL中由一个“?”引出。如果没有查询字符串,这个方法返回空值。

  11、getRemoteUser

  public String getRemoteUser

  返回作了请求的用户名,这个信息用来作HTTP用户论证。

  如果在请求中没有用户名信息,这个方法返回空值。

  12、getRequestedSessionId

  public String getRequestedSessionId();

  返回这个请求相应的session id。如果由于某种原因客户端提供的session id是无效的,这个session id将与在当前session中的session
id不同,与此同时,将建立一个新的session。

  如果这个请求没与一个session关联,这个方法返回空值。

  13、getRequestURI

  public String getRequestURI();

  从HTTP请求的第一行返回请求的URL中定义被请求的资源的部分。如果有一个查询字符串存在,这个查询字符串将不包括在返回值当中。例如,一个请求通过/catalog/books?id=1这样的URL路径访问,这个方法将返回/catalog/books。这个方法的返回值包括了Servlet路径和路径信息。

  如果这个URL路径中的的一部分经过了URL编码,这个方法的返回值在返回之前必须经过解码。

  14、getServletPath

  public String getServletPath();

  这个方法返回请求URL反映调用Servlet的部分。例如,一个Servlet被映射到/catalog/summer这个URL路径,而一个请求使用了/catalog/summer/casual这样的路径。所谓的反映调用Servlet的部分就是指/catalog/summer。

  如果这个Servlet不是通过路径匹配来调用。这个方法将返回一个空值。

  15、getSession

  public HttpSession getSession();

  public HttpSession getSession(boolean create);

  返回与这个请求关联的当前的有效的session。如果调用这个方法时没带参数,那么在没有session与这个请求关联的情况下,将会新建一个session。如果调用这个方法时带入了一个布尔型的参数,只有当这个参数为真时,session才会被建立。

  为了确保session能够被完全维持。Servlet开发者必须在响应被提交之前调用该方法。

  如果带入的参数为假,而且没有session与这个请求关联。这个方法会返回空值。

  16、isRequestedSessionIdValid

  public boolean isRequestedSessionIdValid();

  这个方法检查与此请求关联的session当前是不是有效。如果当前请求中使用的session无效,它将不能通过getSession方法返回。

  17、isRequestedSessionIdFromCookie

  public boolean isRequestedSessionIdFromCookie();

  如果这个请求的session id是通过客户端的一个cookie提供的,该方法返回真,否则返回假。

  18、isRequestedSessionIdFromURL

  public boolean isRequestedSessionIdFromURL();

  如果这个请求的session id是通过客户端的URL的一部分提供的,该方法返回真,否则返回假。请注意此方法与isRequestedSessionIdFromUrl在URL的拼写上不同。

  以下方法将被取消

  19、isRequestedSessionIdFromUrl

  public boolean isRequestedSessionIdFromUrl();

  该方法被isRequestedSessionIdFromURL代替。

HttpServletRequest类主要处理:
1.读取和写入HTTP头标
2.取得和设置cookies
3.取得路径信息
4.标识HTTP会话方法:

String getAuthType() 如果servlet由一个鉴定方案所保护,如HTTP基本鉴定,则返回方案名称。

String getContextPath() 返回指定servlet上下文(web应用)的URL的前缀。
Cookie[] getCookies() 返回与请求相关cookie的一个数组。

Long getDateHeader(String name) 将输出转换成适合构建Date对象的long类型取值的getHeader()的简化版。

String getHeader(String name) 返回指定的HTTP头标指。如果其由请求给出,则名字应为大小写不敏感。

Enumeration getHeaderNames() 返回请求给出的所有HTTP头标名称的权举值。

Enumeration getHeaders(String name) 返回请求给出的指定类型的所有HTTP头标的名称的枚举值,它对具有多取值的头标非常有用。

int getIntHeader(String name) 将输出转换为int取值的getHeader()的简化版。

String getMethod() 返回HTTP请求方法(例如GET、POST等等)

String getPathInfo() 返回在URL中指定的任意附加路径信息。

String getPathTranslated() 返回在URL中指定的任意附加路径信息,被子转换成一个实际路径。

String getQueryString() 返回查询字符串,即URL中?后面的部份。

String getRemoteUser() 如果用户通过鉴定,返回远程用户名,否则为null。

String getRequestedSessionId() 返回客户端的会话ID

String getRequestURI() 返回URL中一部分,从“/”开始,包括上下文,但不包括任意查询字符串。

String getServletPath() 返回请求URI上下文后的子串

HttpSession getSession() 调用getSession(true)的简化版。

HttpSession getSession(boolean create) 返回当前HTTP会话,如果不存在,则创建一个新的会话,create参数为true。

Principal getPrincipal() 如果用户通过鉴定,返回代表当前用户的java.security.Principal对象,否则为null。

boolean isRequestedSessionIdFromCookie() 如果请求的会话ID由一个Cookie对象提供,则返回true,否则为false。

boolean isRequestedSessionIdFromURL() 如果请求的会话ID在请求URL中解码,返回true,否则为false

boolean isRequestedSessionIdValid() 如果客户端返回的会话ID仍然有效,则返回true。

Boolean isUserInRole(String role) 如果当前已通过鉴定用户与指定角色相关,则返回true,如果不是或用户未通过鉴定,则返回false。

HttpServletRequest简介

获取请求行的相关信息

获取网络连接信息

获取请求头信息

浏览器传递参数信息的细节

获取请求参数

获取请求消息的实体内容

利用请求域属性传递信息

请求参数的中文读取问题

WEB客户端发送给WEB服务器的HTTP请求消息分为三个部分:

请求行 POST /demo/login HTTP/1.1

请求消息头

消息正文(也叫实体内容) username=xxxx&password=1234

Servlet API中定义的ServletRequest接口类用于封装请求消息。

HttpServletRequest是专用于HTTP协议的ServletRequest子接口,它用于封装HTTP请求消息。

在service()方法内部调用HttpServletRequest对象的各种方法来获取请求消息。


HTTP请求消息的请求行包括请求方式、资源路径和HTTP协议版本:

GET /it315/servlet/RequestURI?param1=a¶m2=b HTTP/1.1

getMethod方法返回HTTP请求消息中的请求方式。

getRequestURI方法返回请求行中的资源名部分。

getQueryString 方法返回请求行中的参数部分。

getProtocol方法返回请求行中的协议名和版本。

getContextPath方法返回请求资源所属于的WEB应用程序的路径。

getPathInfo方法返回请求URL中的额外路径信息。额外路径信息是请求URL中的位于Servlet的路径之后和查询参数之前的内容,它以“/”开头。

getPathTranslated方法返回URL中的额外路径信息所对应的资源的真实路径。


getServletPath方法返回Servlet的名称或Servlet所映射的路径。


getRemoteAddr方法返回发出请求的客户机的IP地址,其格式为“192.168.0.3”这种形式的字符文本。 (*)

getRemoteHost方法返回发出请求的客户机的完整主机名,即“pc1.it315.org”这种格式。

getRemotePort方法返回发出请求的客户机所使用的网络接口的端口号。

getLocalAddr方法返回WEB服务器上接收当前请求的网络接口的IP地址。

getLocalName方法返回WEB服务器上接收当前请求的网络接口的IP地址所对应的主机名。

getLocalPort方法返回WEB服务器上接收当前请求的网络接口的端口号。

getServerName方法返回当前请求所指向的主机名。

getServerPort方法返回当前请求所连接的服务器端口号。

getScheme方法返回请求的协议名,例如http、https或ftp。

getRequestURL方法返回客户端发出请求时的完整URL。

getHeader方法

getHeaders方法

getHeaderNames方法

getIntHeader方法

getDateHeader方法

getContentType方法

getContentLength方法

getCharacterEncoding方法

Enumeration headerNames = request.getHeaderNames();

while(headerNames.hasMoreElements()){

String headerName = (String)headerNames.nextElement();

out.print(headerName + " : " + request.getHeader(headerName) + "<br>");

/*如果要考虑同一个请求头名可能出现多次,

那么应该用下面的代码段代替上面一行程序代码*/

/*Enumeration values = request.getHeaders(headerName);

while(values.hasMoreElements()) {

out.print(headerName + " : " + (String)values.nextElement() + "<br>");

}*/

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: