JSP 規範定義了三個標準動作標籤實現 JavaBean 交互,掌握它們是開發 JSP+JavaBean 應用的基石:
<jsp:useBean> — 聲明並實例化 Bean<jsp:setProperty> — 設置 Bean 屬性值<jsp:getProperty> — 獲取 Bean 屬性值並輸出<jsp:useBean id="name"
scope="page|request|session|application"
typeSpec>
body
</jsp:useBean>
typeSpec 可選組合:
class="className"class="className" type="typeName"type="typeName" class="className"beanName="beanName" type="typeName"type="typeName" beanName="beanName"type="typeName"| 屬性 | 含義 |
|---|---|
| id | Bean 實例唯一標識,在指定 scope 內唯一 |
| scope | 生命周期:page/request/session/application |
| class | Bean 完整類名(含包名),區分大小寫 |
| beanName | 通過 java.beans.Beans.instantiate() 實例化 |
| type | 腳本變量類型,默認與 class 一致 |
執行邏輯:容器先在指定 scope 查找同 id 實例,存在則復用;否則按 class/beanName 創建新實例。
<jsp:setProperty name="beanName" last_syntax />
last_syntax 四種形式:
property="*" — 自動匹配請求參數與同名屬性,批量賦值property="propertyName" — 單屬性賦值,值來自同名請求參數property="propertyName" param="parameterName" — 指定請求參數名property="propertyName" value="propertyValue" — 直接指定常量值注意:param 與 value 不能同時使用。property="*" 是表單處理的利器,能大幅減少樣板代碼。
<jsp:getProperty name="name" property="propertyName" />
將指定屬性值轉為 String 寫入隱含 out 對象。前提:Bean 實例必須已通過 <jsp:useBean> 聲明。
<jsp:setProperty property="*"> 處理表單提交<jsp:getProperty> 替代 Scriptlet,保持頁面整潔