首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java Servlet 遍歷 HTTP 請求參數完整實作:獲取所有參數名與值

     編輯:Java 相關知識

核心 API

  • 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 請求編碼不一致易導致亂碼,兩種解決方案:

  1. 全域 Filter(推薦):在 web.xml 或 @WebFilter 設定 request.setCharacterEncoding("UTF-8")
  2. 單點轉碼:new String(value.getBytes("ISO-8859-1"), "UTF-8")(Tomcat 8+ 預設 UTF-8 通常無需此步驟)

進階:獲取原始 Query String

String queryString = req.getQueryString(); // 原始查詢字串:a=1&b=2&b=3
// 手動解析可處理特殊編碼或重複參數名情況

最佳實踐建議

  • 優先使用 getParameterMap() 獲取 Map<String, String[]>,一次取得所有參數與多值
  • 配合 BeanUtils/MapStruct 自動綁定至 DTO/VO 物件
  • 敏感參數(密碼、Token)勿直接記錄日誌
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved