調用 request.getParameter("token") 獲得的值是已解碼的原始字符串,而非 URL 編碼後的形式。這是 Servlet 容器的標準行為。本文說明原理並給出驗證方法。
請求 URL:
https://localhost:8080/hhh?token=k4gJH04aeHGqZG%2FomYYNUtReHBd3%2FL0pknT8D8b2rZhqRCh1XP6o8jfM9CIV49jb
獲取值:
k4gJH04aeHGqZG/omYYNUtReHBd3/L0pknT8D8b2rZhqRCh1XP6o8jfM9CIV49jb
明顯 %2F → / 等已被解碼。
application/x-www-form-urlencoded 編碼getParameter() 返回的是解碼後的「應用層數據」request.setCharacterEncoding("UTF-8"))可從 request.getQueryString() 手動解析,或用 Filter 在解析前攔截原始 Query String。
結論:getParameter 返回已解碼值是正確且標準的行為,無需額外處理。