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

JSP 核心概念與 page 指令 15 大屬性速查

     編輯:關於C語言

什麼是 JSP?

JSP(Jakarta Server Pages,原 JavaServer Pages)是一種伺服器端動態網頁技術。本質上是「嵌入 Java 程式碼的 HTML」:靜態模板 + 專用標籤 + Scriptlet/Expression/Declaration。容器(如 Tomcat)在首次請求時將 `.jsp` 自動轉譯為 Servlet(`_jspService`)、編譯、載入、實例化;後續請求直接以多線程並發呼叫同一實例的 `_jspService`。

JSP 生命週期

  1. 翻譯:`.jsp` → `.java`(Servlet 原始碼)
  2. 編譯:`.java` → `.class`
  3. 載入與實例化:建立唯一 Servlet 實例
  4. 初始化:呼叫 `jspInit()`(僅一次)
  5. 請求處理:每請求一條線程呼叫 `_jspService(req, resp)`
  6. 銷毀:容器關閉時呼叫 `jspDestroy()`

Tomcat 預設工作目錄:$CATALINA_HOME/work/Catalina/localhost/_/org/apache/jsp/ 可見生成的 Servlet 原始碼與 class 檔,利於除錯。

page 指令 15 大常用屬性

屬性用途預設值 / 備註
language指定腳本語言java(唯一標準支援)
extends指定生成 Servlet 繼承的父類別容器內部基底類別,極少自訂
import匯入 Java 套件/類別,可多次或逗號分隔java.lang.*, javax.servlet.*, javax.servlet.jsp.*, javax.servlet.http.*
session是否參與 HTTP Sessiontrue;設 `false` 可節省 Session 建立開銷
buffer輸出緩衝區大小8kb;`none` 關閉緩衝直接輸出
autoFlush緩衝區滿時是否自動刷新true;`false` 會拋出例外
isThreadSafe宣告 Servlet 是否執行緒安全true;`false` 容器會同步化 `_jspService`(效能差)
info頁面描述資訊可透過 `Servlet.getServletInfo()` 取得
errorPage發生未捕獲例外時轉向的錯誤頁面相對/絕對路徑,如 /error.jsp
isErrorPage宣告本頁為錯誤處理頁`true` 時可使用隱含物件 exception
contentType回應 MIME 型別與字元集text/html; charset=ISO-8859-1;建議明確設 UTF-8
pageEncoding原始檔編碼若未設,依 `contentType` 解析 charset;建議同步設 `UTF-8`
isELIgnored是否忽略 EL 運算式 ${...}false(啟用 EL);舊專案相容性用
deferredSyntaxAllowedAsLiteral允許 #{...} 作為字面值false;JSF 相容用
trimDirectiveWhitespaces移除指令行前後空白false;設 `true` 可縮小輸出 HTML 體積

最佳實踐速查

  • 頁面頂端統一宣告:<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" session="false" trimDirectiveWhitespaces="true" %>
  • 避免在 JSP 寫複雜 Java 邏輯(Scriptlet),改用 JSTL + EL + 自訂標籤,或前端框架(React/Vue)+ REST API 架構。
  • 錯誤頁面集中配置 web.xml <error-page>,減少每頁重複 errorPage。
  • 生產環境關閉開發期除錯資訊,設定 development=false(Tomcat `web.xml` 的 `jsp` servlet 參數)。

JSP 雖為經典技術,理解其「翻譯→編譯→多執行緒服務」模型與 page 指令微調行為,對維護舊系統、除錯生成的 Servlet 原始碼仍具實戰價值。

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