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

JSP 坑點指南:include 指令中 contentType 的 charset 大小寫敏感導致編譯失敗

     編輯:Java 綜合教學

JSP 坑點指南:include 指令中 contentType 的 charset 大小寫敏感導致編譯失敗

JSP 靜態包含 <%@ include file="..." %> 會將目標檔案內容直接合併到主檔案編譯。若主檔與被包含檔的 pageEncoding 或 contentType 中 charset 值大小寫不一致(如 UTF-8 vs utf-8),編譯器會報錯:pageEncoding attribute cannot be different from the pageEncoding of the included file。

錯誤重現

index.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ include file="./include.jsp" %>

include.jsp:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
Hello World!

訪問 index.jsp 直接拋出 Jasper 編譯異常。

根本原因

JSP 規範要求靜態包含時,**主檔與被包含檔的 pageEncoding 必須完全一致(含大小寫)**。編譯器進行字串精確比對,UTF-8 ≠ utf-8。

解決方案

  1. 統一大小寫:全專案規範使用 UTF-8(大寫),修改 include.jsp 為 charset=UTF-8、pageEncoding="UTF-8"。
  2. IDE 統一格式化:配置 Eclipse/IntelliJ 存檔自動修正 pageEncoding 大小寫。
  3. 改用動態包含:<jsp:include page="include.jsp" /> 獨立編譯,不受主檔 encoding 限制(但需注意請求屬性傳遞)。

最佳實踐

  • 專案建立時即在 web.xml 或過濾器統一設定 request/response encoding = UTF-8。
  • 所有 JSP 頭部模板固定為 <%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>。
  • 納入代碼審查清單,避免大小寫不一致導致構建失敗。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved