大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

Servlet教程

HttpServletRequest詳解

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

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

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

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

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

方法聲明

功能描述

String getMethod()

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

String getRequestURI()

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

String getQueryString()

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

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()

該方法用于獲取請求客戶端網(wǎng)絡連接的端口號

String getLocaIAddr()

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

String getLocalName()

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

int getLocalPort()

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

String getServerName()

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

int gctServcrPort()

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

StringBuffcr getRequestURL()

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

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

在 MyEclipse 中創(chuàng)建一個名稱為 servletDemo02 的項目,在 src 下新建一個名稱為 com.mengma.request 的包,在包中創(chuàng)建一個名為 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 時發(fā)送的請求行信息。由此可見,通過 HttpServletRequest 對象可以很方便地獲取請求行的相關信息。

圖 1 運行結果

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

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

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

方法聲明

功能描述

String getHeader(String name)

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

Enumeration getHeaders(String name)

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

Enumeration getHeaderNames()

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

 

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

long getDateHeader(String name)

該方法用于獲取指定頭字段的值,并將其按 GMT 時間格式轉換為一個代表日期/時間的長整數(shù),該長整數(shù)是自 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 包中創(chuàng)建一個名為 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();
        //用循環(huán)遍歷所有請求頭,并通過 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 運行結果

全部教程
主站蜘蛛池模板: 免费一区二区三区免费视频 | 国产不卡影院 | 日韩 欧美 国产 亚洲 中文 | 中文字幕在线观看亚洲 | 波多野吉衣一区二区三区在线观看 | 国产精品久久久一区二区三区 | 国产欧美综合精品一区二区 | 中文字幕一区视频一线 | 美女个护士一级毛片亚洲 | 男人的天堂久久精品激情 | 亚洲国产99在线精品一区二区 | 99视频九九精品视频在线观看 | 免看一级a一片成人123 | 亚洲区视频 | 亚洲精品国产精品乱码不卞 | 亚洲一区二区三区久久精品 | 国产成人综合在线 | 在线99| 久久久综合色 | 综合欧美视频一区二区三区 | www.五月天激情 | 91在线视频免费 | 国产在线观看自拍 | 暴劫倾情无删减在线播放 | 久久狠狠第一麻豆婷婷天天 | 2019年国产不卡在线刷新 | 欧美一级高清视频在线播放 | 中文字幕精品一区二区精品 | 狠狠操女人 | 九九亚洲综合精品自拍 | 九天玄帝诀王凡小说免费阅读 | 久久久久久天天夜夜天天 | 九色视频网站 | 超级毛片 | 免费网站看v片在线成人国产系列 | 国产色综合久久无码有码 | 国产96福利视频在线观看 | 四虎在线视频观看大全影视 | 国内精品久久久久久不卡影院 | 久久99一区 | 色天使色婷婷丁香久久综合 |