Java中request物件常用方法總結

codeceo發表於2015-03-09

本文主要介紹了Java中的request物件,並且對request物件中的一些常用方法作了一點總結,如果你是Java初學者,或許這篇文章對你會有所幫助。

HttpServletRequest物件代表客戶端的請求,當客戶端通過HTTP協議訪問伺服器時,HTTP請求頭中的所有資訊都封裝在這個物件中,開發人員通過這個物件的方法,可以獲得客戶這些資訊。

request常用方法

一、獲取客戶機環境資訊常見方法

1.getRequestURL方法返回客戶端發出請求時的完整URL。

2.getRequestURI方法返回請求行中的資源名部分。

3.getQueryString方法返回請求行的引數部分。

4.getRemoteAddr方法返回發出請求的客戶機的IP地址。

5.getRemoteHost方法返回發出請求的客戶機的完整主機名。

6.getRemotePort方法返回客戶機所使用的網路埠號。

7.getLocalAddr方法返回WEB伺服器的IP地址。

8.getLocalName方法返回WEB伺服器的主機名。

9.getMethod得到客戶機請求方式。

package com.yyz.request;

 import java.io.IOException;
 import java.io.OutputStream;

 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;

 public class RequestDemo extends HttpServlet {

     public void doGet(HttpServletRequest request, HttpServletResponse response)
             throws ServletException, IOException {
         /**
          * URL是URI的子集。
          * URI用來標識一個資源。
          * URL用來標識網際網路上的一個資源。
          */
         System.out.println(request.getRequestURL());//得到請求URL地址
         System.out.println(request.getRequestURI());//得到請求的資源
         System.out.println(request.getQueryString());
         System.out.println(request.getRemoteAddr());//得到來訪者IP
         System.out.println(request.getRemoteHost());
         //由於沒有在dns上註冊所以列印結果還是127.0.0.1,如果是百度訪問這個程式,則列印www.baidu.com
         System.out.println(request.getRemotePort());//得到請求的資源
         System.out.println(request.getMethod());//得到請求的資源
 }

     public void doPost(HttpServletRequest request, HttpServletResponse response)
             throws ServletException, IOException {
         doGet(request,response);
 }

 }

在瀏覽器位址列輸入:http://localhost:8080/test/servlet/RequestDemo後,後臺輸出入下圖:


二、獲得客戶機請求頭

1.getHeader(String name)方法

2.getHeaders(String name)方法

3.getHeaderNames()方法

 package com.yyz.request;

 import java.io.IOException;
 import java.util.Enumeration;

 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 //獲取請求頭
 public class RequestDemo extends HttpServlet {

     public void doGet(HttpServletRequest request, HttpServletResponse response)
             throws ServletException, IOException {
         String head = request.getHeader("Accept-Encoding");
         //有些瀏覽器不支援壓縮資料
         if(head.contains("gzip")){
             //輸出壓縮資料
         }else{
             //輸出不壓縮資料
         }
         //獲取指定名稱的頭的所有值
         Enumeration e = request.getHeaders("Accept-Encoding");
         while(e.hasMoreElements()){
             String value = (String ) e.nextElement();
             System.out.println(value);
         }
         System.out.println("------------------------");
         //獲取所有的頭和值
         e = request.getHeaderNames();
         while(e.hasMoreElements()){
         String name = (String)e.nextElement();
         String     value = request.getHeader(name);
         System.out.println(name+"="+value);
         }
 }

     public void doPost(HttpServletRequest request, HttpServletResponse response)
             throws ServletException, IOException {
         doGet(request,response);
 }

 }

在瀏覽器訪問該程式,後臺輸出如下:

三、獲得客戶機請求引數(客戶端提交的資料):

1.getParameter(name)方法

2.getParameterValues(String name)方法

3.getParameterNames方法

4.getParameterMap方法,做框架時大量使用

package com.yyz.request;
 import java.io.IOException;
 import java.util.Enumeration;
 import java.util.Map;
 import java.util.Map.Entry;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 //獲取請求資料
 public class RequestDemo extends HttpServlet {
   public void doGet(HttpServletRequest request, HttpServletResponse response)
       throws ServletException, IOException {
     //http://localhost:8080/test/servlet/RequestDemo?name=yyz
     String value = request.getParameter("name");
     System.out .println(value);
     //http://localhost:8080/test/servlet/RequestDemo?like=sing&like=dance
     String likes[] = request.getParameterValues("like");
     if(likes!=null){
       for(String like : likes){
         System.out.println(like);
       }
     }
     //下面是這種遍歷的專業寫法,獲取陣列資料的方式(可避免空指標異常)
     for(int i=0;likes!=null&&i<likes.length;i++){
       System.out.println(likes[i]);
     }
     //獲取所有名稱,並根據名稱獲取值
     Enumeration e = request.getParameterNames();
     while(e.hasMoreElements()){
       String name = (String) e.nextElement();
       value = request.getParameter(name);
       System.out.println(name+"="+value);
     }
     System.out.println("----------------------");
     //得到request物件中用來封裝資料的Map集合
     Map<String,String[]> map = request.getParameterMap();
     for(Entry<String, String[]> me : map.entrySet()){
       String name = me.getKey();
       String [] v = me.getValue();
       System.out.println(name+"="+v[0]);
     }
 } 
   public void doPost(HttpServletRequest request, HttpServletResponse response)
       throws ServletException, IOException {
     doGet(request,response);
 }
 }

以上就是Java中request物件常用方法的全部內容,歡迎收藏分享。

相關文章