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

JavaBean 入門(三):<jsp:setProperty> 四種屬性設置模式完整演示

     編輯:關於JSP

四大模式語法速查

#模式名稱語法核心屬性
1自動匹配<jsp:setProperty name="bean" property="*"/>property="*" 掃描所有請求參數
2指定屬性<jsp:setProperty name="bean" property="name"/>property="屬性名" 單一綁定
3參數重命名<jsp:setProperty name="bean" property="userName" param="name"/>param="請求參數名" 映射不同名
4固定值注入<jsp:setProperty name="bean" property="status" value="active"/>value="字面值" 無視請求

統一驗證環境

表單 form.html

<form action="demo.jsp" method="post">
  姓名:<input name="name"><br>
  年齡:<input name="age"><br>
  <input type="submit">
</form>

Bean SimpleBean.java

package javabean01;
public class SimpleBean implements java.io.Serializable {
    private String name;
    private int age;
    private String status;  // 新增屬性演示模式 4
    // getters/setters 略
    public SimpleBean() {}
}

模式 1:自動匹配 property="*"

<jsp:useBean id="simple" class="javabean01.SimpleBean" scope="page">
  <jsp:setProperty name="simple" property="*"/>
</jsp:useBean>
<h3>姓名:<jsp:getProperty name="simple" property="name"/></h3>
<h3>年齡:<jsp:getProperty name="simple" property="age"/></h3>

**優點**:零配置、表單新增欄位自動生效。
**缺點**:請求參數污染風險 (惡意提交額外參數)、無法驗證。

模式 2:指定屬性 property="name"

<jsp:useBean id="simple" class="javabean01.SimpleBean" scope="page">
  <jsp:setProperty name="simple" property="name"/>
  <jsp:setProperty name="simple" property="age"/>
</jsp:useBean>

**優點**:白名單機制、安全可控。
**缺點**:維護成本隨欄位增長線性上升。

模式 3:參數重命名 param="xxx"

場景:前端參數 user_name,Bean 屬性 userName (駝峰)。

<jsp:setProperty name="simple" property="userName" param="user_name"/>

模式 4:固定值注入 value="xxx"

<jsp:setProperty name="simple" property="status" value="active"/>

**用途**:預設狀態、隱性安全標記、CSRF Token 種子、版本號等。**不受請求參數影響**,防範參數篡改。

組合實戰:安全白名單 + 預設值

<jsp:useBean id="simple" class="javabean01.SimpleBean" scope="request">
  <!-- 白名單綁定 -->
  <jsp:setProperty name="simple" property="name"/>
  <jsp:setProperty name="simple" property="age"/>
  <!-- 業務預設值 -->
  <jsp:setProperty name="simple" property="status" value="pending"/>
  <!-- 來源追蹤 -->
  <jsp:setProperty name="simple" property="source" value="web_form"/>
</jsp:useBean>

現代框架對應關係

JSP 模式Spring MVC / Jakarta MVC 等價寫法
自動匹配@ModelAttribute UserForm form (綁定所有)
指定屬性@RequestParam("name") String name 逐個聲明
參數重命名@RequestParam(value="user_name", required=false) String userName
固定值注入form.setStatus("pending") 在 Controller 手工設置 / @ModelAttribute 方法預填

安全建議

  • **生產環境禁用 property="*"**,改用白名單模式 2 或框架級綁定。
  • 敏感屬性 (isAdmin, role, balance) **永不綁定請求參數**,僅在服務端授權邏輯中設置。
  • 引入 **OWASP Java Encoder** 對輸出編碼,防 XSS。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved