在 Java Web 開發中,HttpServletRequest 是處理客戶端請求的核心對象。當瀏覽器發起 HTTP 請求時,所有請求頭、參數、路徑等信息都封裝在這個對象中。掌握其常用方法,能讓你輕鬆獲取客戶端環境信息、請求頭、請求參數,是 Servlet 開發的基礎技能。
以下方法可幫助你快速獲取請求的來源、路徑、協議等關鍵信息:
package com.example.request;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class RequestDemo extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("完整 URL: " + request.getRequestURL());
System.out.println("資源路徑: " + request.getRequestURI());
System.out.println("查詢字符串: " + request.getQueryString());
System.out.println("客戶端 IP: " + request.getRemoteAddr());
System.out.println("客戶端主機名: " + request.getRemoteHost());
System.out.println("客戶端端口: " + request.getRemotePort());
System.out.println("服務器 IP: " + request.getLocalAddr());
System.out.println("服務器主機名: " + request.getLocalName());
System.out.println("請求方式: " + request.getMethod());
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
在瀏覽器訪問 https://localhost:8080/test/servlet/RequestDemo 後,控制台將輸出上述信息。

HTTP 請求頭包含客戶端瀏覽器、編碼、緩存等元數據,常用方法如下:
Enumeration)。Enumeration)。String encoding = request.getHeader("Accept-Encoding");
if (encoding != null && encoding.contains("gzip")) {
// 輸出 GZIP 壓縮數據
} else {
// 輸出原始數據
}
// 遍歷所有請求頭
Enumeration<String> headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()) {
String name = headerNames.nextElement();
String value = request.getHeader(name);
System.out.println(name + " = " + value);
}

無論是 URL 查詢參數、表單提交,還是 AJAX 請求,以下方法均可處理:
Enumeration)。Map<String, String[]>),框架開發常用。// 單值參數
String name = request.getParameter("name");
// 多值參數(如 checkbox、多選下拉框)
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<String> paramNames = request.getParameterNames();
while (paramNames.hasMoreElements()) {
String paramName = paramNames.nextElement();
String value = request.getParameter(paramName);
System.out.println(paramName + " = " + value);
}
// 獲取參數映射(框架常用)
Map<String, String[]> paramMap = request.getParameterMap();
for (Map.Entry<String, String[]> entry : paramMap.entrySet()) {
System.out.println(entry.getKey() + " = " + entry.getValue()[0]);
}
HttpServletRequest 是 Servlet 開發的「瑞士軍刀」。熟練掌握環境信息獲取、請求頭解析、參數處理三大類方法,能讓你從容應對各種 Web 開發場景。建議初學者多動手實驗,觀察不同請求類型下的輸出差異,深化理解。