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

JSP 與 JavaBeans 深度整合:useBean、作用域、屬性存取完整指南

     編輯:關於JSP

JavaBeans 是 JSP 實現業務邏輯封裝、資料傳遞的核心組件。本文詳細解析 <jsp:useBean> 機制、四大作用域語義差異、<jsp:setProperty>/<jsp:getProperty> 屬性操作標籤,以及 Bean 類部署路徑規範。

<jsp:useBean> 核心機制

<jsp:useBean id="beanName" class="fully.qualified.Class" scope="page|request|session|application" />

容器執行邏輯:

  1. 依 id 與 scope 在對應範圍搜尋現有實例。
  2. 找到則直接返回;否則依 class 實例化新 Bean,存入指定範圍並返回。

此機制保證同一範圍內同 id 僅有一實例,實現共享與複用。

四大作用域深度解析

Scope生命週期可見範圍典型用途
page當前頁面請求處理期間僅當前 JSP 頁面暫存頁面級計算結果、表單驗證中介物件
request單一 HTTP 請求鏈 (含 forward)同請求鏈內所有資源Controller 處理結果傳遞給 View、跨資源轉發共享資料
session用戶會話期間 (瀏覽器關閉或逾時失效)同用戶所有請求用戶登入狀態、購物車、個人化設定
applicationWeb 應用啟動至關閉全系統所有用戶、所有請求全域配置、快取資料、連線池、計數器
注意:使用 session 範圍需確保客戶端啟用 Cookie,否則無法維持會話追蹤。

屬性存取標籤

<jsp:setProperty> 三種用法

// 1. 自動匹配:請求參數名與 Bean 屬性名一致時自動注入
<jsp:setProperty name="beanName" property="*" />

// 2. 指定屬性:手動映射參數名與屬性名
<jsp:setProperty name="beanName" property="propName" param="paramName" />

// 3. 指定固定值
<jsp:setProperty name="beanName" property="propName" value="fixedValue" />

<jsp:getProperty> 輸出屬性值

<jsp:getProperty name="beanName" property="propName" />

等同於在 Scriptlet 中呼叫 bean.getPropName() 並輸出,但更符合標籤化開發規範。

Bean 類部署路徑規範

  • 全域可用:編譯後 .class 放入容器共用類別目錄(如 Tomcat $CATALINA_HOME/lib 或 classes),JSP 頁面加 <%@ page import="pkg.BeanClass" %>。
  • 特定 Web 應用:放入 WEB-INF/classes/pkg/BeanClass.class(符合包結構),無需額外 import 即可被該應用所有 JSP 使用。

最佳實踐建議

  1. Bean 必須符合 JavaBeans 規範:無參建構子、private 欄位 + public getter/setter、實作 Serializable(若需 session 複製/叢集)。
  2. 盡量使用 EL 表達式 ${beanName.propName} 取代 <jsp:getProperty>,配合 JSTL 更簡潔。
  3. 嚴格控制作用域:預設用 page,跨頁共享用 request/session,全域單例用 application。

掌握 JavaBeans 在 JSP 中的完整生命週期與作用域語義,是邁向 MVC 架構、實現關注點分離的基石。

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