HttpServletRequest的應用

來源:互聯網
上載者:User

 

HttpServletRequest的應用

HttpServletRequest是專用於HTTP協議的ServletRequest子介面,它用於封裝HTTP請求訊息

HTTP請求訊息的請求行包括請求方式、資源路徑和HTTP協議版本:

       GET /it315/servlet/RequestURI?param1=a&param2=b HTTP/1.1

1、getMethod方法返回HTTP請求訊息中的請求方式。//         GET

2、getRequestURI方法返回請求行中的資源名部分。//             /it315/controller/one.jsp

3、getQueryString 方法返回請求行中的參數部分。//             param1=abc

4、getProtocol方法返回請求行中的協議名和版本。//             HTTP/1.1

5、getContextPath方法返回請求資源所屬於的WEB應用程式的路徑。//        /it315

6、getPathInfo方法返回請求URL中的額外路徑資訊。額外路徑資訊是請求URL中的位於Servlet的路徑之後和查詢參數之前的內容,它以“/”開頭。//          /one.jsp

7、getPathTranslated方法返回URL中的額外路徑資訊所對應的資源的真實路徑。

//         C://tomcat-5.5.4/webapps/it315/one.jsp   

8、getServletPath方法返回Servlet的名稱或Servlet所映射的路徑。//            /controller 

 

擷取網路連接資訊

1、getRemoteAddr方法返回傳出請求的客戶機的IP地址,其格式為“192.168.0.3”這種形式的字元文本。 (*)

2、getRemoteHost方法返回傳出請求的客戶機的完整主機名稱,即“pc1.it315.org”這種格式。

3、getRemotePort方法返回傳出請求的客戶機所使用的網路介面的連接埠號碼。

4、getLocalAddr方法返回WEB伺服器上接收當前請求的網路介面的IP地址。

5、getLocalName方法返回WEB伺服器上接收當前請求的網路介面的IP地址所對應的主機名稱。

6、getLocalPort方法返回WEB伺服器上接收當前請求的網路介面的連接埠號碼。

7、getServerName方法返回當前請求所指向的主機名稱。

8、getServerPort方法返回當前請求所已連線的服務器連接埠號碼。

9、getScheme方法返回請求的協議名,例如http、https或ftp。

10、getRequestURL方法返回用戶端發出請求時的完整URL。   

 

擷取要求標頭資訊

1、getHeader方法

2、getHeaders方法

3、getHeaderNames方法

4、getIntHeader方法

5、getDateHeader方法

6、getContentType方法

7、getContentLength方法

8、getCharacterEncoding方法

擷取所有要求標頭的編程執行個體

Enumeration headerNames = request.getHeaderNames();

while(headerNames.hasMoreElements())

{

       String headerName = (String)headerNames.nextElement();

       out.print(headerName + " : " + request.getHeader(headerName) + "<br>");

       /*如果要考慮同一個要求標頭名可能出現多次,

       那麼應該用下面的程式碼片段代替上面一行程式碼*/

//一個訊息頭欄位對應的多次出現的值

Enumeration values=request.getHeaders(headerName);//返回的是枚舉類型的對象

While(values.hasMoreElements()){

       values.nextElement();

}

System.out.println(headerName+”:  ”+request.getHeader(headerName));

利用Referer要求標頭阻止“盜鏈”

提交請求到提供下載的servlet

String referrer = request.getHeader("referer");

String sitePart = "http://" + request.getServerName();

if(referrer!=null && referrer.startsWith(sitePart))

{

       //處理正當的下載請求,這裡只進行示意

       out.println("dealing download ...");

}

else

{

       //非法下載請求跳轉到本站的下載說明頁

       RequestDispatcher rd = request.getRequestDispatcher("/down.html");

       rd.forward(request,response);

}

利用Referer要求標頭隱藏JavaScript源碼

String referrer = request.getHeader("referer");

String sitePart = "http://" + request.getServerName();

if(referrer!=null && referrer.startsWith(sitePart))

{

       //向用戶端輸出javascript的document.write(...)語句

       out.println(

              "document.write('假設這是很多重要的Javascript代碼的執行結果');");

}

擷取請求參數

1、 getParameter方法

2、 getParameterValues方法

3、 getParameterNames方法

4、 getParameterMap方法

擷取請求參數的編程執行個體

       Enumeration paramNames = request.getParameterNames();

while(paramNames.hasMoreElements()){

              String paramName = (String)paramNames.nextElement();

              out.print(paramName + " : " + request.getParameter(paramName) + "<br>");

              /*如果要考慮同一個要求標頭名可能出現多次,那麼應該用下面的程式碼片段代替上面一行程式碼*/

              /*String [] paramValues = request.getParameterValues(paramName);

              //良好的編程習慣,在使用對象和數組之前先判斷其是否為null

              if(paramValues != null){

                     for(int i=0;i<paramValues.length;i++){

                            out.print(paramName + " : " + (String)paramValues[i] + "<br>");

                     }

              }*/

}

 

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.