簡介
servletrequest由tomcat建立傳遞給servlet的service函數,包含了客戶端的信息。 httpServletRequest是基於http協議的java
servletrequest相關函數介紹
- Object getAttribute(String name);void setAttribute(String name, Object o);void removeAttribute(String name)返回域對象。這個域對象跟context的相似,只是針對於requestdespatcher中的函數來調用的。
- Enumeration getAttributeNames()同上
- String getCharacterEncoding()頭部信息,編碼方式。
- void setCharacterEncoding(String env)同上,只是設置編碼方法
- int getContentLength()調取內容長度,若是長度位置返回-1
- long getContentLengthLong()同上
- String getContentType()內容的類型
- ServletInputStream getInputStream()獲取請求的輸入流
- Enumeration getParameterNames();String getParameter(String name);String[] getParameterValues(String name);Map<String,String[]> getParameterMap()獲取query對象信息
- String getProtocol()返回協議例如:HTTP/1.1
- String getScheme()例如Http
- String getServerName()
- int getServerPort()打開端口號
- BufferedReader getReader()打開字符輸入流
- String getRemoteAddr()
- String getRemoteHost()
- void removeAttribute(String name);Enumeration getLocales()返回客戶端的local信息Accept-Language ,若是沒有直接調用本都的
- boolean isSecure()是否採用安全協議
- RequestDispatcher getRequestDispatcher(String path)調用請求處理器
- ServletContext getServletContext()調用環境
- AsyncContext startAsync();AsyncContext startAsync(ServletRequest servletRequest, ServletResponse servletResponse)異步模式,還不是很瞭解
- boolean isAsyncStarted()檢測是否在異步模式
- boolean isAsyncSupported()是否支持異步
- AsyncContext getAsyncContext()返回進入的異步模式
- DispatcherType getDispatcherType()調度器相關,與listener相關
httpservletrequest相關函數介紹
- String getAuthType() 認證方式:有三種認證方式:基本、表單、 客戶端認證、其餘診斷認證。若是無認證null。對認證暫沒有學習,不深刻。
- Cookie[] getCookies():返回cookie,會有cookie的專題。cookie是服務器發給客戶端的信息,進行標記
- long getDateHeader(String name)返回時間對象,例如If-Modified-Since.
- String getHeader(String name)返回header爲name的字符對象。記住name是大小寫敏感的
- Enumeration getHeaders(String name)返回多值的對象
- Enumeration getHeaderNames()返回全部頭部
- int getIntHeader(String name)返回正數頭部
- String getMethod()返回方法
- 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
複製代碼
- String getPathTranslated()將extra地址信息組成真正的地址。沒啥用好像。例如上面的返回D:\java_temp\plug1\out\artifacts\web11_war_exploded\234234\4312
- String getContextPath()返回servlet地址,若是是root地址,返回空字符串。可能有多個與context的getContextPath()對象的返回值可能不一樣
- String getRemoteUser()認證以後的名字
- boolean isUserInRole(String role)認證相關的
- Principal getUserPrincipal()認證相關的安全等級
- String getRequestedSessionId()返回sessionID
- String getRequestURI()返回協議與query之間東西
- StringBuffer getRequestURL()返回完整的url,不包含query信息
- String getServletPath()返回servlet地址,以/開頭
- HttpSession getSession(boolean create)返回一個session,若是沒有就根據create的值是否建立一個新的
- HttpSession getSession()等同於HttpSession getSession(true)
- String changeSessionId()返回一個新的session
- boolean isRequestedSessionIdValid()session相關
- isRequestedSessionIdFromCookie
- boolean isRequestedSessionIdFromURL()
- boolean authenticate(HttpServletResponse response)受權相關
- void logout();void login(String username, String password)
- Collection getParts();Part getPart(String name)這兩個函數主要針對於post命令中 multipart/form-data的處理。
- 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編碼爲+