1. 程式人生 > 其它 >Tomcat伺服器種的HttpServletRequest類

Tomcat伺服器種的HttpServletRequest類

HttpServletRequest 類有什麼作用:
每次只要有請求進入 Tomcat 伺服器,Tomcat 伺服器就會把請求過來的 HTTP 協議資訊解析好封裝到 Request 物件中
然後傳遞到 service 方法(doGet 和 doPost)中給我們使用。我們可以通過 HttpServletRequest 物件,獲取到所有請求的資訊

HttpServletRequest 類的常用方法:
getRequestURI() 獲取請求的資源路徑
getRequestURL() 獲取請求的統一資源定位符(絕對路徑)
getRemoteHost() 獲取客戶端的 ip 地址
getHeader() 獲取請求頭
getParameter() 獲取請求的引數
getParameterValues() 獲取請求的引數(多個值的時候使用)
getMethod() 獲取請求的方式 GET 或 POST
setAttribute(key, value); 設定域資料
getAttribute(key); 獲取域資料
getRequestDispatcher() 獲取請求轉發物件

建立了Tomcat工程之後,通過自定義類去繼承HttpServlet類之後,重寫doGet方法或者doPost方法之後,去呼叫對應上訴方法

請記住,這些方法都是請求的方法,也就是說 瀏覽器訪問伺服器 的一些引數。

如何獲取請求引數:

比如說。我要獲取表單中的請求引數,如使用者名稱文字框等等 通過 getParameter() 方法即可得到,程式碼如下

POST 請求的中文亂碼解決:

如果是post請求,當我們需要獲取引數比如說是 使用者名稱的時候,如果使用者名稱是中文的,會出現亂碼的現象

這是因為請求體的字符集預設不是utf-8,所以可以通過setCharacterEncoding("utf-8")去設定,當然這個方法需要在獲取請求引數之前設定

請求的轉發:
什麼是請求的轉發?
請求轉發是指,伺服器收到請求後,從一次資源跳轉到另一個資源的操作叫請求轉發。

這需要兩個Servlet程式,第一個Servlet程式,負責接收使用者的請求引數,通過serAttribute()方法,設定一個域即蓋個章,方便Servlet2程式檢查

通過.getRequestDispatcher("要告訴瀏覽器的工程位置"); 指明這個位置在哪 在通過 forward方法,讓它走向Servlet2程式。

我們要記住的一點,就是這個請求轉發它的路徑是有一定的問題的,比如說,

具體如何實現,程式碼如下: 記住了,這些也必須在web.xml 檔案中匯入相關資訊,如 <servlet> 標籤等

為了解決跳轉導致路徑不一致的問題:使用base標籤即可

Web 中的相對路徑和絕對路徑:

在 javaWeb 中,路徑分為相對路徑和絕對路徑兩種:
相對路徑是:
. 表示當前目錄
.. 表示上一級目錄
資源名 表示當前目錄/資源名
絕對路徑:
http://ip:port/工程路徑/資源路徑
在實際開發中,路徑都使用絕對路徑,而不簡單的使用相對路徑。
1、絕對路徑
2、base+相對

web 中 / 斜槓的不同意義:

在 web 中 / 斜槓 是一種絕對路徑。

/ 斜槓 如果被瀏覽器解析,得到的地址是:http://ip:port/

<a href="/">斜槓</a>

/ 斜槓 如果被伺服器解析,得到的地址是:http://ip:port/工程路徑

1、/servlet1

2、servletContext.getRealPath(“/”);

3、request.getRequestDispatcher(“/”);

特殊情況: response.sendRediect(“/”);

把斜槓傳送給瀏覽器解析。得到 http://ip:port/