大战熟女丰满人妻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 運行結果

全部教程
主站蜘蛛池模板: a免费国产一级特黄aa大 | 国产亚洲影院 | 亚洲综合99 | 久揄揄鲁一二三四区高清在线 | 天天躁日日2018躁狠狠躁 | 成人毛片在线视频 | 久久综合干| 亚洲综合视频在线观看 | 日本特级毛片 | 在线精品视频成人网 | 亚洲日本欧美日韩高观看 | 五月色婷婷亚洲精品 | 波多野结衣精品一区二区三区 | 久 在线播放 | 国产精品夜色视频一区二区 | 99在线播放 | 五月久久婷婷综合片丁香花 | 亚洲精品国产字幕久久不卡 | 亚洲一区二区三区精品视频 | 日韩视频一区二区在线观看 | 伊人丁香狠狠色综合久久 | 欧美激情视频二区 | 中文视频在线 | 国产三级日产三级日本三级 | 成人在线精品视频 | 国产成人精品一区二三区在线观看 | 一级毛片免费在线观看网站 | 欧美精品亚洲二区 | 毛片一区 | 日日摸夜夜爽日日放碰 | 香蕉tv亚洲专区在线观看 | 久久91亚洲精品中文字幕 | 2020久久精品国产免费 | 国产亚洲欧美一区二区三区 | 97精品国产手机 | 免费一级毛片在线视频观看 | 久久青青草原精品国产麻豆 | 国产免费专区 | 老司机午夜性大片 | 99视频都是精品热在线播放 | 日韩精品一二三区 |