程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> 使用Servlet處理HTTP請求,servlet處理請求

使用Servlet處理HTTP請求,servlet處理請求

編輯:JAVA綜合教程

使用Servlet處理HTTP請求,servlet處理請求


具體方法如下:

請求行相關方法:

  • 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]);
        }
      }

  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved