在 JSP 頁面傳遞參數 book=SQL SERVER 2008(含空格)時,後端報 500 錯誤;而 book=SQLSERVER2008(無空格)則正常。
URL 參數中的空格在 HTTP 傳輸中會被編碼為 %20 或 +。若後端直接以字串比對或未正確解碼,會導致參數值不匹配或解析異常。示例中,前端連結為:
<a href="book.jsp?book=SQL SERVER 2008">SQL SERVER 2008</a>
瀏覽器實際發送請求時,URL 會被編碼為 book.jsp?book=SQL%20SERVER%202008。若後端使用 request.getParameter("book") 會自動解碼為 SQL SERVER 2008,但若在 SQL 查詢或邏輯判斷中未處理空格,可能引發錯誤。
<c:url> 或 JavaScript encodeURIComponent 產生連結。
<a href="<c:url value='book.jsp'><c:param name='book' value='SQL SERVER 2008'/></c:url>">...</a>
request.getParameter 已自動解碼,直接使用即可,但寫入 SQL 時務必使用 PreparedStatement 防注入,避免手動拼接字串。
server.xml 中 URIEncoding="UTF-8"。理解 URL 編碼機制,正確處理參數傳遞,即可避免空格導致的 500 錯誤。