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

JavaBean 入門(二):表單資料自動綁定與請求參數映射實戰

     編輯:關於JSP

表單 → JavaBean 自動映射機制

<jsp:setProperty name="beanId" property="*"/> 會:**遍歷請求所有參數**,依名稱匹配 Bean 的 setXxx() 方法,**自動型別轉換** (String → int/boolean/Date 等) 並調用 setter。這是 JSP 內建的**表單綁定框架**雛形。

完整實戰流程

1. 表單頁 form.html

<form action="process.jsp" method="post">
  姓名:<input type="text" name="name"><br>
  年齡:<input type="text" name="age"><br>
  <input type="submit" value="提交">
</form>

2. JavaBean SimpleBean.java

package javabean01;
public class SimpleBean implements java.io.Serializable {
    private String name;
    private int age;
    public SimpleBean() {}
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
    public int getAge() { return age; }
    public void setAge(int age) { this.age = age; }
}

3. 處理頁 process.jsp

<%@ page contentType="text/html;charset=gbk" %>
<% request.setCharacterEncoding("gbk"); %> <!-- 解決中文亂碼 -->
<jsp:useBean id="simple" class="javabean01.SimpleBean" scope="request">
  <jsp:setProperty name="simple" property="*"/> <!-- 自動綁定所有參數 -->
</jsp:useBean>
<html><body>
  <h3>姓名:<jsp:getProperty name="simple" property="name"/></h3>
  <h3>年齡:<jsp:getProperty name="simple" property="age"/></h3>
</body></html>

四種 setProperty 使用模式對比

模式語法適用場景型別轉換
**全自動映射**property="*"表單欄位與屬性一一對應,最常用自動 (String→目標型別)
**指定屬性**property="name"僅綁定特定屬性,其它手工處理自動
**參數重命名**property="userName" param="name"請求參數名與屬性名不一致時自動
**固定值注入**property="status" value="active"預設值、隱性欄位、安全標記字串字面值

進階:自訂型別轉換與驗證

JSP 內建轉換器僅支援基本型別。複雜型別 (Date、Enum、自訂類) 需:

  1. 在 Bean setter 內手工解析:public void setBirth(String s) { this.birth = new SimpleDateFormat("yyyy-MM-dd").parse(s); }
  2. 或引入 **Commons BeanUtils / Spring DataBinder** 註冊 PropertyEditor/Converter。
  3. 現代框架 (Spring MVC、Struts 2) 提供 **@InitBinder**、**TypeConversion** 統一管理。

亂碼終極解決方案

  1. 頁面編碼:<%@ page pageEncoding="UTF-8" %>
  2. 請求解碼:request.setCharacterEncoding("UTF-8") (必須在讀取參數前)。
  3. Tomcat server.xml:<Connector URIEncoding="UTF-8" /> (GET 參數)。
  4. 資料庫連接:useUnicode=true&characterEncoding=UTF-8。
  5. **全鏈路 UTF-8**,拒絕 GBK/Big5 混用。

遷移提示:Spring MVC 綁定對比

// Spring MVC Controller
@PostMapping("/process")
public String process(@Valid UserForm form, BindingResult br, Model m) {
    if (br.hasErrors()) return "form";
    service.save(form);
    return "redirect:/success";
}

// UserForm (Java 16 Record)
public record UserForm(
    @NotBlank @Size(max=20) String name,
    @Min(1) @Max(150) int age
) {}

**聲明式驗證 + Record 不可變 + 重導向結束**,比 JSP 手工綁定安全、簡潔得多。

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