request.getParameterNames():返回 Enumeration<String>,所有參數名request.getParameterValues(String name):返回 String[],參數可能多值(如 checkbox)request.getParameter(String name):返回單值(首個)@WebServlet("/params")
public class ParamServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
Map<String, String> paramMap = new HashMap<>();
Enumeration<String> names = req.getParameterNames();
while (names.hasMoreElements()) {
String name = names.nextElement();
String[] values = req.getParameterValues(name);
if (values != null && values.length == 1) {
String value = values[0];
if (value.length() > 0) {
paramMap.put(name, value);
System.out.printf("參數:%s = %s%n", name, value);
}
}
// 多值參數可依業務決定:取首個、陣列存入、或用分隔符合併
}
// 後續業務邏輯使用 paramMap
}
}
GET/POST 請求編碼不一致易導致亂碼,兩種解決方案:
web.xml 或 @WebFilter 設定 request.setCharacterEncoding("UTF-8")new String(value.getBytes("ISO-8859-1"), "UTF-8")(Tomcat 8+ 預設 UTF-8 通常無需此步驟)String queryString = req.getQueryString(); // 原始查詢字串:a=1&b=2&b=3
// 手動解析可處理特殊編碼或重複參數名情況
getParameterMap() 獲取 Map<String, String[]>,一次取得所有參數與多值