具體方法如下: 請求行相關方法: getMethod()獲得請求行的方法,如:get,post等 getRequestURI()獲得請求的統一資源標識符(相對的,不包含QueryString)(URL是一種具體的URI,它不僅唯一標識資源,而且還提供了定位該資源的信息。URI是一種語義上的抽象概念, ...
- 當伺服器接收到一個HTTP請求,判斷請求的是靜態網頁還是動態網頁
- 如果是靜態網頁則由伺服器查詢資源文件並響應給客戶端,如果是動態,交由web容器處理
- web容器找到對應的Servlet,調用HttpServlet的service(),再調用一個實例對象的service(),再具體調用doXXX方法
- 如果能處理,就將響應XMLHttpResponse對象的屬性處理,不能處理就將請求轉發(需要得到一個具體路徑的RequestDispatcher對象)。
具體方法如下:
請求行相關方法:
- getMethod()獲得請求行的方法,如:get,post等
- getRequestURI()獲得請求的統一資源標識符(相對的,不包含QueryString)(URL是一種具體的URI,它不僅唯一標識資源,而且還提供了定位該資源的信息。URI是一種語義上的抽象概念,可以是絕對的,也可以是相對的,而URL 則必須提供足夠的信息來定位,所以,是絕對的,而通常說的relative URL,則是針對另一個absolute URL,本質上還是絕對的。),例如/lovo/index.html
- getRequestURL()獲得統一資源定位符(用於絕對位置定位,即不知道根目錄也能定位,可以有?和後面的數據)例如http://127.0.0.1:8080/lovo/index.html?name=string。
- getProtocol()獲取協議及版本。
- getContextPath()獲得上下文路徑,即虛擬路徑,web應用的供外部訪問的根路徑,如 http://localhost:8080/sun 的/sun
- getServletPath()獲取Servlet 的映射路徑。
請求頭相關方法:
-
getHeader(String name) 返回指定的請求頭的值,如request.getHeader("Accept");訪問Accept的HTTP頭;request.getHeader("Host")輸出:192.168.0.1:8080;request.getHeader("Referer");request.getHeader("Accept-Language");request.getHeader("Accept-Encoding");request.getHeader("User-Agent");request.getHeader("Connection");request.getHeader("Cookie")
-
getHeaderNames() 該方法獲得一個Enumeration包含特定請求中接受到的所有請求頭的名稱
-
getIntHeader(String name) 獲取特定請求頭的值,並轉化為INT類型
-
getDateHeader(String name) 獲得特定請求頭的值,並轉化為Date類型
消息體相關方法:
- getParameter(String name) 獲取表單參數的值
- getParameterValues(String parameterName) 獲取同一個參數名的多個參數值返回字元串數組對象
- getParameterNames() 以枚舉的方式返回請求中所有的表單參數名列表
請求轉發和請求範圍:
請求轉發:
getRequestDispatcher(String path) 返回給定路徑的RequestDispatcher對象
getNamedDispatcher(String name) 返回某個名稱的Servlet的RequestDispatcher 對象
forward(ServletReqeust,ServletResponse) 派發請求和響應對象到RequestDispatcher 對象所確定的新資源
include(ServletReqeust,ServletResponse) 類似forward() 不過有一些限制,該方法包含伺服器端得資源,被包含的資源不能改變響應狀態代碼或設置頭信息
請求範圍:
請求範圍僅僅作用在與一個請求相關的兩個資源之間,如果需要繼續傳遞到第三個或者更多的Servlet,應當繼續調用HttpServletRequest對象的setAttribute()和getAttribute()方法
附:request方法大全:
協議:request.getProtocol()
輸出:HTTP/1.1
伺服器信息 getServletConfig().getServletContext().getServerInfo()
輸出:JavaServer Web Dev Kit/1.0 EA (JSP 1.0; Servlet 2.1; Java 1.2; Windows NT 5.0 x86; java.vendor=Sun Microsystems Inc.)
客戶端IP: request.getRemoteAddr()
輸出:192.168.0.106
客戶端主機名:request.getRemoteHost()
輸出:abc
編碼:request.getCharacterEncoding()
輸出:GB2312
所發送的位元組數:request.getContentLength()
輸出:-1
數據類型:request.getContentType()
輸出:null
Authorization頭:request.getAuthType()
輸出:basic或者digest
請求類型:request.getMethod()
輸出:通常是GET或者POST。但偶爾也會出現HEAD,PUT, Delete,OPTIONS,或者 TRACE.
URL中的附加路徑信息: request.getPathInfo()
輸出:URL中Servlet路徑之後、查詢字元串之前的那部分。
request.getPathTranslated()
映射到伺服器實際路徑之後的路徑信息。
request.getQueryString()
這是字元串形式的附加到URL後面的查詢字元串,數據仍舊是URL編碼的。在Servlet中很少需要用到未經解碼的數據,一般使用getParameter訪問各個參數。
request.getRemoteUser()
如果提供了Authorization頭,則代表其用戶部分。它代表發出請求的用戶的名字。
request.getRequestedSessionId()
輸出SessionId
request.getRequestURI()
請求URL
request.getServletPath()
URL中調用Servlet的那一部分,不包含附加路徑信息和查詢字元串。
request.getHeader("Accept")
訪問Accept的HTTP頭。
request.getHeader("Host")
輸出:192.168.0.1:8080
request.getHeader("Referer")
request.getHeader("Accept-Language")
request.getHeader("Accept-Encoding")
request.getHeader("User-Agent")
request.getHeader("Connection")
request.getHeader("Cookie")
返回協議名稱:request.getScheme()
輸出:HTTP
Web伺服器名字:request.getServerName()
輸出:192.168.0.1
伺服器監聽的埠:request.getServerPort()
輸出:8080
原文地址:獲取request里的所有參數名及其參數值作者:橡皮擦
request里有兩個方法
request.getParameterMap();
request.getParameterNames();
我想用這兩種方法獲取。
1。用request.getParameterNames();
Enumeration enu=request.getParameterNames();
while(enu.hasMoreElements()){
String paraName=(String)enu.nextElement();
System.out.println(paraName+": "+request.getParameter(paraName));
}
2。request.getParameterMap();
訪問URL:http://127.0.0.1:8080/test.jsp?a=1&b=2&c=3
test代碼:
Map map=request.getParameterMap();
Set keSet=map.entrySet();
for(Iterator itr=keSet.iterator();itr.hasNext();){
Map.Entry me=(Map.Entry)itr.next();
Object ok=me.getKey();
Object ov=me.getValue();
String[] value=new String[1];
if(ov instanceof String[]){
value=(String[])ov;
}else{
value[0]=ov.toString();
}
for(int k=0;k<value.length;k++){
System.out.println(ok+"="+value[k]);
}
}