Request中的各種方法


前言

Request中方法眾多,對於Java Web程序員來說,種種方法都會在工作中常常用到。Request由於不是JDK的一部分,這些方法的用法也沒有專門的API可以查,所以在工作中遇到Request中方法的時候,所以常常感到困惑,因為覺得網上寫的不清楚,自己又懶得寫一個Web測試程序。這篇文章,一次性把Request中的各個方法的返回寫在這里並做一個詳細的總結,以備以后工作中用到可以隨時查看。

 

示例

為了讓后台可以取到queryString(這個專門在get和post的區別的文章中會講解的),做一個表單,用post方式提交:

<body>
    <form action="request?a=1&b=2&c=3" method="post">
        <input type="submit" value=" 提交 " />
    </form>
</body>

web.xml就不寫了,大家應該都會配置,看下后台doPost方法的寫法:

protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException
{
    System.out.println("request.getAuthType():" + request.getAuthType()); // 獲取保護servlet的認證方案名(BASIC或SSL),未受保護的servlet返回的就是null
    System.out.println("request.getCharacterEncoding():" + request.getCharacterEncoding()); // 獲取字符編碼
    System.out.println("request.getContentLength():" + request.getContentLength()); // 返回請求體內容的長度
    System.out.println("request.getContentType():" + request.getContentType()); // 獲取內容類型
    System.out.println("request.getContextPath():" + request.getContextPath()); // 獲取上下文路徑,就是"/"+工程名
    System.out.println("request.getLocalAddr():" + request.getLocalAddr()); // 獲取應用服務器的IP地址
    System.out.println("request.getLocalName():" + request.getLocalName()); // 獲取應用服務器的主機名
    System.out.println("request.getLocalPort():" + request.getLocalPort()); // 獲取應用服務器的端口號
    System.out.println("request.getMethod():" + request.getMethod()); // 獲取請求方式獲取請求方式(GET與POST為主,也會有PUT、DELETE、INPUT)
    System.out.println("request.getPathInfo():" + request.getPathInfo());
    System.out.println("request.getPathTranslated():" + request.getPathTranslated());
    System.out.println("request.getProtocol():" + request.getProtocol()); // 獲取客戶端向服務端傳送數據使用的協議名稱
    System.out.println("request.getQueryString():" + request.getQueryString()); // 獲取追加到Url后面的查詢字符串
    System.out.println("request.getRemoteAddr():" + request.getRemoteAddr()); // 獲取發出請求的客戶端的IP地址
    System.out.println("request.getRemoteHost():" + request.getRemoteHost()); // 獲取發出請求的客戶端的主機名
    System.out.println("request.getRemotePort():" + request.getRemotePort()); // 獲取發出請求的客戶端的端口號
    System.out.println("request.getRemoteUser():" + request.getRemoteUser()); // 如果用戶已經過認證,則返回發出請求的用戶登錄信息 
    System.out.println("request.getRequestedSessionId():" + request.getRequestedSessionId()); // 獲取sessionId
    System.out.println("request.getRequestURI():" + request.getRequestURI()); // 獲取"/"+工程名+請求路徑
    System.out.println("request.getRequestURL():" + request.getRequestURL()); // 獲取完整的請求地址,不帶queryString
    System.out.println("request.getScheme():" + request.getScheme()); // 獲取當前鏈接使用的協議,一般應用就是http,SSL返回https
    System.out.println("request.getServerName():" + request.getServerName()); // 獲取URL請求的名字(以Ip請求就是Ip,以域名請求就是域名)
    System.out.println("request.getServerPort():" + request.getServerPort()); // 獲取URL請求的端口號
    System.out.println("request.getServletPath():" + request.getServletPath()); // 獲取請求路徑
    System.out.println("request.isSecure():" + request.isSecure()); // 獲取此請求是否使用安全協議(比如https)
}

我從本地發起一個請求"http://localhost:8080/TestWeb/request?a=1&b=2&c=3",先看下用工具抓取的此次請求、響應的數據(火狐、360、谷歌都有,按F12即可):

再看一下后台的運行結果:

request.getAuthType():null
request.getCharacterEncoding():null
request.getContentLength():0
request.getContentType():application/x-www-form-urlencoded
request.getContextPath():/TestWeb
request.getLocalAddr():127.0.0.1
request.getLocalName():dell
request.getLocalPort():8080
request.getMethod():POST
request.getPathInfo():null
request.getPathTranslated():null
request.getProtocol():HTTP/1.1
request.getQueryString():a=1&b=2&c=3
request.getRemoteAddr():127.0.0.1
request.getRemoteHost():127.0.0.1
request.getRemotePort():3405
request.getRemoteUser():null
request.getRequestedSessionId():B198D2D352F2F23A1B3754246D68B803
request.getRequestURI():/TestWeb/request
request.getRequestURL():http://localhost:8080/TestWeb/request
request.getScheme():http
request.getServerName():localhost
request.getServerPort():8080
request.getServletPath():/request
request.isSecure():false

getParameter、getAttribute/setAttribute、getSession/setSession等類似方法,大家都比較熟悉,也比較不會搞錯,就不列了,列的都是一些相對不常用的request方法。很多方法都已經能看出返回的是什么了,但是有些方法由於我這里是從本地發到本地的,所以看不到效果,不過注釋上也給了詳細的解釋了,兩個沒寫注釋的方法查不到是什么意思,也試不出來怎么樣才不是null,以后會記得關注,知道了就會更新。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM