servletrequest

簡介

servletrequest由tomcat建立傳遞給servlet的service函數,包含了客戶端的信息。 httpServletRequest是基於http協議的java

servletrequest相關函數介紹

  1. Object getAttribute(String name);void setAttribute(String name, Object o);void removeAttribute(String name)返回域對象。這個域對象跟context的相似,只是針對於requestdespatcher中的函數來調用的。
  2. Enumeration getAttributeNames()同上
  3. String getCharacterEncoding()頭部信息,編碼方式。
  4. void setCharacterEncoding(String env)同上,只是設置編碼方法
  5. int getContentLength()調取內容長度,若是長度位置返回-1
  6. long getContentLengthLong()同上
  7. String getContentType()內容的類型
  8. ServletInputStream getInputStream()獲取請求的輸入流
  9. Enumeration getParameterNames();String getParameter(String name);String[] getParameterValues(String name);Map<String,String[]> getParameterMap()獲取query對象信息
  10. String getProtocol()返回協議例如:HTTP/1.1
  11. String getScheme()例如Http
  12. String getServerName()
  13. int getServerPort()打開端口號
  14. BufferedReader getReader()打開字符輸入流
  15. String getRemoteAddr()
  16. String getRemoteHost()
  17. void removeAttribute(String name);Enumeration getLocales()返回客戶端的local信息Accept-Language ,若是沒有直接調用本都的
  18. boolean isSecure()是否採用安全協議
  19. RequestDispatcher getRequestDispatcher(String path)調用請求處理器
  20. ServletContext getServletContext()調用環境
  21. AsyncContext startAsync();AsyncContext startAsync(ServletRequest servletRequest, ServletResponse servletResponse)異步模式,還不是很瞭解
  22. boolean isAsyncStarted()檢測是否在異步模式
  23. boolean isAsyncSupported()是否支持異步
  24. AsyncContext getAsyncContext()返回進入的異步模式
  25. DispatcherType getDispatcherType()調度器相關,與listener相關

httpservletrequest相關函數介紹

  1. String getAuthType() 認證方式:有三種認證方式:基本、表單、 客戶端認證、其餘診斷認證。若是無認證null。對認證暫沒有學習,不深刻。
  2. Cookie[] getCookies():返回cookie,會有cookie的專題。cookie是服務器發給客戶端的信息,進行標記
  3. long getDateHeader(String name)返回時間對象,例如If-Modified-Since.
  4. String getHeader(String name)返回header爲name的字符對象。記住name是大小寫敏感的
  5. Enumeration getHeaders(String name)返回多值的對象
  6. Enumeration getHeaderNames()返回全部頭部
  7. int getIntHeader(String name)返回正數頭部
  8. String getMethod()返回方法
  9. String getPathInfo()返回地址信息,這個用在地址匹配的目錄的時候用,返回servlet地址與query之間的信息,以/開頭
<servlet>
        <servlet-name>xxxa</servlet-name>
        <servlet-class>AServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>xxxa</servlet-name>
        <url-pattern>/aservlet/*</url-pattern>
    </servlet-mapping>
    
http://localhost:8080/web11/aservlet/234234/4312

print:/234234/4312
複製代碼
  1. String getPathTranslated()將extra地址信息組成真正的地址。沒啥用好像。例如上面的返回D:\java_temp\plug1\out\artifacts\web11_war_exploded\234234\4312
  2. String getContextPath()返回servlet地址,若是是root地址,返回空字符串。可能有多個與context的getContextPath()對象的返回值可能不一樣
  3. String getRemoteUser()認證以後的名字
  4. boolean isUserInRole(String role)認證相關的
  5. Principal getUserPrincipal()認證相關的安全等級
  6. String getRequestedSessionId()返回sessionID
  7. String getRequestURI()返回協議與query之間東西
  8. StringBuffer getRequestURL()返回完整的url,不包含query信息
  9. String getServletPath()返回servlet地址,以/開頭
  10. HttpSession getSession(boolean create)返回一個session,若是沒有就根據create的值是否建立一個新的
  11. HttpSession getSession()等同於HttpSession getSession(true)
  12. String changeSessionId()返回一個新的session
  13. boolean isRequestedSessionIdValid()session相關
  14. isRequestedSessionIdFromCookie
  15. boolean isRequestedSessionIdFromURL()
  16. boolean authenticate(HttpServletResponse response)受權相關
  17. void logout();void login(String username, String password)
  18. Collection getParts();Part getPart(String name)這兩個函數主要針對於post命令中 multipart/form-data的處理。
  19. T upgrade(Class handlerClass)這個是協議升級,用一個類對象返回一個新的對象。好像沒啥用

相關類RequestDispatcher

RequestDispatcher是一個請求資源調度器,在request中調用相關servlet與jsp程序。裏面有兩個函數:web

  • void forward(ServletRequest request,ServletResponse response)forward函數在response提交以前進行調用,而且會清理數據緩存,不清理狀態碼與頭部
  • void include(ServletRequest request,ServletResponse response)函數不改變response的頭部與狀態碼。

URL編碼

對於url中參數,默認採用application/x-www-form-urlencoded類型的方法。瀏覽器

  • 針對post命令,參數是以數據形式提取的,因此要設置requestcharsettpye爲utf-8類型(來的編碼類型爲空,若是直接讀取數據的話會採用默認方式ISO8895,歐洲編碼),數據顯示亂碼。因此必選提早set類型
  • get命令:數據也會採用url編碼方式,由瀏覽器與服務器自動進行,參數數據時放到url中的。可是沒有get的類型數據中沒有application/x-www-form-urlencoded,編碼方式爲utf-8,因此不用設置,直接讀取參數就能夠。這個不用設置,緣由很奇怪。多是tomcat的默認設置utf-8
  • 相關編碼:URLEncode.code() URLDecode.decode()
  • 還有URI編碼,與url編碼不一樣點爲空格,URI編碼空格爲%20 URL編碼爲+
相關文章
相關標籤/搜索