zoukankan      html  css  js  c++  java
  • HttpServletRequest详解

    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方法返回。



    HttpServletRequest 接口是 ServletRequest 接口的子接口。HttpServlet 类的重载service()方法及doGet()和doPost()等方法都有一个HttpServletRequest类型的参数:

    HttpServletRequest接口提供了用于读取HTTP请求中的相关信息的方法:

    getContextPath():返回客户端所请求访问的Web应用的URL入口。例如,如果客户端访问的 UR为 http://localhost:8080/helloapp/info,那么该方法返回“/helloapp”

    getCookies():返回HTTP请求中的所有Cookie。

    getHeader(String name):返回HTTP请求头部的特定项。

    getHeaderNames():返回一个Enumeration对象,它包含了HTTP请求头部的所有项目名。

    getMethod():返回HTTP请求方式。

    getRequestURI():返回HTTP请求的头部的第1行中的URI。

    getQueryString():返回 HTTP 请求中的查询字符串,即 UR中的“?”后面的内容。例如,如果客户端访问的 UR为 http://localhost:8080/helloapp/info?username=Tom,那么该方法返回“username=Tom”。

    本书第1章的1.6.4节(提供服务器端与用户的动态交互功能)自行设计了一个能运行 Servlet 的简单 Web 服务器 HTTPServer1。在第 1 章自定义的 Servlet 接口的service(byte[] requestBuffer, OutputStream out)方法中,参数requestBuffer代表客户端发送的原始请求数据。Web服务器HTTPServer1在接收到客户请求后,直接把原始的请求数据传给Servlet具体实现类,因此,Servlet具体实现类还得花大量功夫去解析复杂的HTTP请求数据。从第1章的1.8节的例程1-12的UploadServlet类的源代码中可以看出,解析原始请求数据非常烦琐。

    而依据SUN的Servlet API来创建Servlet,则无需费力地解析原始HTTP请求。解析原始HTTP请求的工作完全由Servlet容器代劳了。Servlet容器把HTTP请求包装成HttpServletRequest对象,Servlet只需调用该对象的getXXX()方法,就能轻轻松松地读取到HTTP请求中的各种数据。

    例程4-3的RequestInfoServlet类通过访问HttpServletRequest对象的各种方法来读取HTTP请求中的特定信息,并且把它们写入到HTML文档中。

    例程4-3  RequestInfoServlet.java

    
    package mypack;
    
    
    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.io.*;
    import java.util.*;
    
    public class RequestInfoServlet extends HttpServlet {
    
    
      
    public void doGet(HttpServletRequest request,HttpServletResponse response)
    throws ServletException, IOException {
    //设置HTTP响应的正文的数据类型
    response.setContentType("text/html;charset=GB2312");
    
      
    PrintWriter out = response.getWriter();
    out.println("
    ");
    out.println("");
    //打印服务器端的IP地址
    out.println("
    LocalAddr: "+request.getLocalAddr());
    //打印服务器端的主机名
    out.println("
    LocalName: "+request.getLocalName());
    //打印服务器端的FTP端口号
    out.println("
    LocalPort: "+request.getLocalPort());
    //打印客户端与服务器端通信所用的协议的名称及版本号
    out.println("
    Protocol: "+request.getProtocol());
    //打印客户端的IP地址
    out.println("
    RemoteAddr: "+request.getRemoteAddr());
    //打印客户端的主机名
    out.println("
    RemoteHost: "+request.getRemoteHost());
    //打印客户端的FTP端口号
    out.println("
    RemotePort: "+request.getRemotePort());
    
        //打印HTTP请求方式
    out.println("
    Method: "+request.getMethod());
    //打印HTTP请求中的URI
    out.println("
    URI: "+request.getRequestURI());
    //打印客户端所请求访问的Web应用的URL入口
    out.println("
    ContextPath: "+request.getContextPath());
    //打印HTTP请求中的查询字符串
    out.println("
    QueryString: "+request.getQueryString());
    
        
    out.println("
    ***打印HTTP请求头***");
    Enumeration eu=request.getHeaderNames();
    while(eu.hasMoreElements()){
    String headerName=(String)eu.nextElement();
    out.println("
    "+headerName+": "+request.getHeader(headerName));
    }
    out.println("
    ***打印HTTP请求头结束***
    ");
    //打印请求参数username
    out.println("
    username: "+request.getParameter("username"));
    out.println("");
    
        //关闭输出流
    out.close();
    }
    }
    
    在web.xml文件中为RequestInfoServlet类映射的URL为“/info”,通过浏览器访问http://localhost:8080/helloapp/info?username=Tom,将出现如图 4-3 所示的由RequestInfoServlet生成的HTML页面。
    
  • 相关阅读:
    GTK+ 3.6.2 发布,小的 bug 修复版本
    RunJS 新增 Echo Ajax 测试功能
    Mozilla 发布 Popcorn Maker,在线创作视频
    Sina微博OAuth2框架解密
    Mina状态机State Machine
    Mozilla 发布 Shumway —— 纯JS的SWF解析器
    Code Browser 4.5 发布,代码浏览器
    ROSA 2012 "Enterprise Linux Server" 发布
    ltrace 0.7.0 发布,程序调试工具
    Artifactory 2.6.5 发布,Maven 扩展工具
  • 原文地址:https://www.cnblogs.com/luckForever/p/7254268.html
Copyright © 2011-2022 走看看