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

Java Web 開發常見細節問題匯總:編碼、跳轉、表單、CSS、資料庫與腳本陷阱

     編輯:Java 綜合教學

1. Tomcat 7 Cookie 中文儲存異常

現象: new Cookie("name", "中文值") 拋出 IllegalArgumentException: Control character in cookie value。

原因: Cookie 標準僅支援 ASCII,Tomcat 7 預設嚴格檢查。

解決: 寫入時 URLEncoder.encode(value, "UTF-8"),讀取時 URLDecoder.decode(cookie.getValue(), "UTF-8")。

2. iframe 子頁面跳轉父頁面

window.parent.location.href = "parent.jsp";

3. <a> 標籤禁用無效

<a disabled="disabled"> 不生效。替代方案:

<a href="link.html" class="not-active">Link</a>
.not-active { pointer-events: none; cursor: default; }
或 jQuery:$('a.current-page').click(() => false);

4. 表單 disabled 屬性導致值不提交

使用 readonly 替代 disabled,值會正常提交且不可編輯。

5. <form> 中 <button> 預設為 submit

明確指定 <button type="button"> 避免誤觸發表單提交。

6. 資料庫欄位設為 NULL 的約束差異

  • 無 NOT NULL 約束:可直接設為 NULL。
  • 有 NOT NULL 約束:設 NULL 會寫入該型別預設值(如 0、空字串)。

7. jQuery .zIndex() 等價於 .css("zIndex", val)

8. <script> 標籤自閉合錯誤

錯誤:<script src="..." />。正確:<script src="..."></script>。

9. GET/POST 中文亂碼完整解決方案

編碼/解碼原則

亂碼本質:編碼與解碼使用的字符集不一致。

GET 請求

參數在 URL 中,瀏覽器通常以 UTF-8 編碼。Tomcat 需在 server.xml 的 <Connector> 加入 URIEncoding="UTF-8" 並重啟。

不建議 在 GET 請求傳遞中文參數。

POST 請求

在讀取參數前呼叫:request.setCharacterEncoding("UTF-8");

響應輸出

response.setContentType("text/html;charset=UTF-8"); // 必須在 getWriter() 前

過濾器統一處理

編寫編碼過濾器,對所有請求/響應統一設定 UTF-8,但僅對 POST 生效;GET 仍需配合 Tomcat URIEncoding。

萬能手動轉碼(不推薦長期使用)

String value = new String(request.getParameter("param").getBytes("ISO-8859-1"), "UTF-8");

結論: 優先使用 POST 提交中文;不同伺服器/作業系統預設編碼可能不同,統一配置 UTF-8 為最佳實踐。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved