黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

Servlet教程

HttpServletRequest詳解

HttpServletRequest 接口繼承自 ServletRequest 接口,其主要作用是封裝 HTTP 請求消息。由于 HTTP 請求消息分為請求行、請求消息頭和請求消息體三部分。因此,在 HttpServletRequest 接口中定義了獲取請求行、請求頭和請求消息體的相關方法。

本節將針對常用的獲取請求行和請求消息頭的相關方法進行講解,下節《Java servlet獲取form表單數據(參數)》繼續講解如何通過 HttpServletRequest 接口獲取用戶提交的 form 表單數據。

獲取請求行信息的相關方法

當訪問 Servlet 時,所有請求消息將被封裝到 HttpServletRequest 對象中,請求消息的請求行中包含請求方法、請求資源名、請求路徑等信息,為了獲取這些信息,HttpServletRequest 接口定義了一系列方法,如表 1 所示。

表 1 獲取請求行信息的常用方法

方法聲明

功能描述

String getMethod()

該方法用于獲取 HTTP 請求消息中的請求方式(如 GET、POST 等)

String getRequestURI()

該方法用于獲取請求行中的資源名稱部分即位于 URL 的主機和端門之后、參數部分之前的部分

String getQueryString()

該方法用于獲取請求行中的參數部分,也就是資源路徑后問號(?)以后的所有內容

String getContextPath()

該方法用于獲取請求 URL 中屬于 Web 應用程序的路徑,這個路徑以 / 開頭,表示相對于整個 Web 站點的根目錄,路徑結尾不含 /。如果請求 URL 屬于 Web 站點的根目錄,那么返回結果為空字符串("")

String getServletPath()

該方法用于獲取 Servlet 的名稱或 Servlet 所映射的路徑

String getRemoteAddr()

該方法用于獲取請求客戶端的 IP 地址,其格式類似于 192.168.0.3

String getRemoteHost()

該方法用于獲取請求客戶端的完整主機名,其格式類似于 pcl.mengma.com。需要注意的是,如果無法解析出客戶機的完整主機名,那么該方法將會返回客戶端的 IP 地址

int getRemotePort()

該方法用于獲取請求客戶端網絡連接的端口號

String getLocaIAddr()

該方法用于獲取 Web 服務器上接收當前請求網絡連接的 IP 地址

String getLocalName()

該方法用于獲取 Web 服務器上接收當前網絡連接 IP 所對應的主機名

int getLocalPort()

該方法用于獲取 Web 服務器上接收當前網絡連接的端口號

String getServerName()

該方法用于獲取當前請求所指向的主機名,即 HTTP 請求消息中 Host 頭字段所對應的主機名部分

int gctServcrPort()

該方法用于獲取當前請求所連接的服務器端口號,即 HTTP 請求消息中 Host 頭字段所對應的端口號部分

StringBuffcr getRequestURL()

該方法用于獲取客戶端發出請求時的完整 URL,包括協議、服務器名、端口號、 資源路徑等信息,但不包括后面的査詢參數部分。注意,getRequcstURL() 方法返冋的結果是 StringBuffer 類型,而不是 String 類型,這樣更便于對結果進行修改

表 1 列出了一系列用于獲取請求消息行信息的方法,為了使讀者更好地理解這些方法,下面通過案例演示這些方法的使用。

在 MyEclipse 中創建一個名稱為 servletDemo02 的項目,在 src 下新建一個名稱為 com.mengma.request 的包,在包中創建一個名為 RequestLineServlet 的 Servlet 類,在該類中編寫用于獲取請求行中相關信息的方法,如下所示。

package com.mengma.request;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class RequestLineServlet extends HttpServlet {
    public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
        PrintWriter out = response.getWriter();
        // 獲取請求行的相關信息
        out.println("getMethod : " + request.getMethod());
        out.println("getRequestURI:" + request.getRequestURL());
        out.println("getQueryString:" + request.getQueryString());
        out.println("getContextPath:" + request.getContextPath());
        out.println("getServletPath:" + request.getServletPath());
        out.println("getRemoteAddr : " + request.getRemoteAddr());
        out.println("getRemoteHost : " + request.getRemoteHost());
        out.println("getRemotePort : " + request.getRemotePort());
        out.println("getLocalAddr : " + request.getLocalAddr());
        out.println("getLocalName : " + request.getLocalName());
        out.println("getLocalPort : " + request.getLocalPort());
        out.println("getServerName : " + request.getServerName());
        out.println("getServerPort : " + request.getServerPort());
        out.println("getRequestURL : " + request.getRequestURL());
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
      doGet(request, response);
    }
}

啟動 Tomcat 服務器,在瀏覽器的地址欄中輸入地址 http://localhost:8080/servletDemo02/RequestLineServlet 訪問 RequestLineServlet,瀏覽器的顯示結果如圖 1 所示。

從圖 1 中可以看出,瀏覽器顯示出了請求 RequestLineServlet 時發送的請求行信息。由此可見,通過 HttpServletRequest 對象可以很方便地獲取請求行的相關信息。

圖 1 運行結果

獲取請求消息頭的相關方法

當瀏覽器發送 Servlet 請求時,需要通過請求消息頭向服務器傳遞附加信息,例如,客戶端可以接收的數據類型、壓縮方式、語言等。為此,在 HttpServletRequest 接口中定義了一系列用于獲取 HTTP 請求頭字段的方法,如表 2 所示。

表 2 獲取請求消息頭的方法

方法聲明

功能描述

String getHeader(String name)

該方法用于獲取一個指定頭字段的值,如果請求消息中沒有包含指定的頭字段,則 getHeader() 方法返回 null;如果請求消息中包含多個指定名稱的頭字段,則 getHeader() 方法返回其中第一個頭字段的值

Enumeration getHeaders(String name)

該方法返回一個 Enumeration 集合對象,該集合對象由請求消息中出現的某個指定名稱的所有頭字段值組成。在多數情況下,一個頭字段名在請求消息中只出現一次,但有時可能會出現多次

Enumeration getHeaderNames()

該方法用于獲取一個包含所有請求頭字段的 Enumeration 對象

 

int getIntHeader(String name) 該方法用于獲取指定名稱的頭字段,并且將其值轉為 int 類型。需要注意的是,如果指定名稱的頭字段不存在,則返回值為 -1;如果獲取到的頭字段的值不能轉為 int 類型,則將發生 NumberFormatException 異常

long getDateHeader(String name)

該方法用于獲取指定頭字段的值,并將其按 GMT 時間格式轉換為一個代表日期/時間的長整數,該長整數是自 1970 年 1 月 1 日 0 時 0 分 0 秒算起的以毫秒為單位的時間值

String getContentType()

該方法用于獲取 Content-Type 頭字段的值,結果為 String 類型

int getContentLength()

該方法用于獲取 Content-Length 頭字段的值,結果為 int 類型

String getCharacterEncoding()

該方法用于返回請求消息的實體部分的字符集編碼,通常是從 Content-Type 頭字段中進行提取,結果為 String 類型

表 2 列出了一系列用于讀取 HTTP 請求消息頭字段的方法,為了更好地掌握這些方法,下面通過案例學習這些方法的使用。

在 com.mengma.request 包中創建一個名為 RequestHeadersServlet 的 Servlet 類,該類中使用 getHeaderNames() 方法獲取請求消息頭信息,如下所示。

package com.mengma.request;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import javax.servlet.*;
import javax.servlet.http.*;
public class RequestHeadersServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
        PrintWriter out = response.getWriter();
        // 獲取請求消息中的所有頭字段
        Enumeration headerNames = request.getHeaderNames();
        //用循環遍歷所有請求頭,并通過 getHeader() 方法獲取一個指定名稱的頭字段
        while (headerNames.hasMoreElements()) {
            String headerName = (String) headerNames.nextElement();
            out.print(headerName + ":" + request.getHeader(headerName)
     + "<br />");
        }
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);
    }
}

啟動 Tomcat 服務器,在瀏覽器的地址欄中輸入 http://localhost:8080/servletDemo02/RequestHeadersServlet 訪問 RequestHeadersServlet,瀏覽器的顯示結果如圖 2 所示。

圖 2 運行結果

全部教程
主站蜘蛛池模板: 日韩拍拍拍 | 精品国产自在现线看久久 | 黄色一级毛片看一级毛片 | 日韩三级免费看 | 五月婷在线观看 | 91视频最新地址 | 日日噜噜夜夜狠狠va视频 | 福利社看片 | 一级a俄罗斯毛片免费 | 亚洲精品一二三区-久久 | 日本一道免费一区二区三区 | 亚洲欧美日韩中文无线码 | 黄色搞鸡网站 | 久久免费视频1 | 最近中文字幕免费6 | 好男人www社区视频在线 | 国产一区二区三区影院 | 最新黄色网址在线观看 | 日韩黄色网 | 清风阁视频我爱干 | 国产精品单位女同事在线 | 欧美日韩人成在线观看 | h视频免费在线 | 亚洲成人高清在线观看 | 91视频入口| 人人做人人爽 | 又黄又爽又色又刺激的视频 | 国产精品一区91 | 精品国产v无码大片在线观看 | 性视频在线 | 亚洲高清一区二区三区久久 | 亚洲国产激情 | 好黄好猛好爽好痛的视频 | 狠狠色狠狠色综合人人 | 午夜影网| 国产日韩欧美第一页 | 精品国产成人a在线观看 | 成品片a免费入口 | 欧美日一区二区三区 | 欧美a级完整在线观看 | 日本特黄特色aaa大片免费欧 |