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

JSP + JavaBean漸進式教程:用戶註冊與分頁列表實戰

     編輯:關於JSP

JavaBean封裝業務邏輯與數據訪問,JSP通過<jsp:useBean>、<jsp:setProperty>、<jsp:getProperty>標簽調用,實現「頁面無Java代碼」的早期最佳實踐。本文通過「用戶註冊」與「用戶分頁列表」兩個完整頁面演示核心用法。

頁面一:donewuser.jsp — 用戶註冊

<%@ page contentType="text/html;charset=gb2312" %>
<% response.setHeader("Expires", "0"); %>

<!-- 實例化JavaBean:id=adduser,類=lyf.adduser,作用域=page -->
<jsp:useBean id="adduser" class="lyf.adduser" scope="page"/>

<!-- 自動映射請求參數到Bean屬性:* 表示所有匹配屬性 -->
<jsp:setProperty name="adduser" property="*"/>

<html><head><title>用戶添加</title></head>
<body bgcolor="#FFEBBD">
<div align="center">
<%
    // 調用Bean業務方法檢查用戶名重複
    if (!adduser.checkUser()) {
        out.println("對不起,這個用戶名 " + adduser.getUsername() + " 已經被申請了,請重新選擇!");
        return; // 終止頁面執行
    }
%>
<%
    // 無重複則調用添加方法
    if (adduser.addNewUser()) {
%>
        <h2>添加用戶成功!</h2>
<%
    } else {
%>
        <h2>添加用戶失敗,請和管理員聯系!</h2>
<%
    }
%>
</div></body></html>

關鍵點:

  • <jsp:useBean scope="page">:每次請求創建新實例,請求結束銷毀,線程安全。
  • <jsp:setProperty property="*">:自動匹配request.getParameter()名稱與Bean的Setter,省去手動bean.setXxx(req.getParameter("xxx"))。
  • 業務邏輯封裝在lyf.adduser中:checkUser()查重、addNewUser()入庫,JSP僅做流程控制與顯示。

頁面二:listuser.jsp — 用戶分頁列表

<%@ page contentType="text/html;charset=gb2312" %>
<% response.setHeader("Expires", "0"); %>
<%@ page import="java.sql.ResultSet" %>
<%@ page import="oracle.jdbc.driver.*" %>

<jsp:useBean id="db" class="lyf.db" scope="request"/>
<jsp:setProperty name="db" property="*"/>

<%
    // 此處原文截斷,補全典型分頁邏輯:
    // 1. 獲取頁碼參數,默認第1頁
    int pageNo = 1;
    String pageParam = request.getParameter("pageNo");
    if (pageParam != null) pageNo = Integer.parseInt(pageParam);

    // 2. 調用Bean查詢總記錄數
    int totalRows = db.getTotalUserCount();
    int pageSize = 10;
    int totalPages = (totalRows + pageSize - 1) / pageSize;

    // 3. 計算分頁SQL參數
    int startRow = (pageNo - 1) * pageSize + 1;
    int endRow = pageNo * pageSize;

    // 4. 調用Bean分頁查詢
    ResultSet rs = db.queryUsersByPage(startRow, endRow);
%>

<html><head><title>用戶列表</title></head><body>
<table border="1" align="center">
    <tr><th>ID</th><th>用戶名</th><th>郵箱</th><th>註冊時間</th></tr>
<%
    while (rs.next()) {
%>
    <tr>
        <td><%= rs.getInt("id") %></td>
        <td><%= rs.getString("username") %></td>
        <td><%= rs.getString("email") %></td>
        <td><%= rs.getTimestamp("reg_time") %></td>
    </tr>
<%
    }
    rs.close();
%>
</table>

<!-- 分頁導航 -->
<div align="center">
<%
    if (pageNo > 1) {
%> <a href="listuser.jsp?pageNo=<%= pageNo-1 %>">上一頁</a> <%
    }
    for (int i = 1; i <= totalPages; i++) {
        if (i == pageNo) {
%> <b><%= i %></b> <%
        } else {
%> <a href="listuser.jsp?pageNo=<%= i %>"><%= i %></a> <%
        }
    }
    if (pageNo < totalPages) {
%> <a href="listuser.jsp?pageNo=<%= pageNo+1 %>">下一頁</a> <%
    }
%>
</div></body></html>

JavaBean設計規範(lyf.adduser、lyf.db)

  • 屬性私有,提供公共Getter/Setter(符合JavaBean規範)。
  • 無參構造器(useBean實例化需要)。
  • 業務方法拋出受檢異常或返回布爾/DTO,不直接拋RuntimeException給JSP。
  • lyf.db封裝JDBC連接獲取、關閉、CRUD操作,JSP零SQL。

從此演進到現代架構

早期JSP+JavaBean現代Spring MVC
<jsp:useBean>手動實例化@Controller + @Autowired Service 容器管理
property="*"自動綁定@ModelAttribute / @RequestParam 綁定
JSP中if/else流程控制Service返回Result/DTO,Controller決定View
Bean中直連JDBCRepository/DAO + 連接池 + 事務管理
分頁邏輯寫在JSPPageable + Page<T> 通用分頁抽象

JSP+JavaBean模式是「業務邏輯出頁面」的關鍵一步。理解其useBean/setProperty/getProperty機制,能幫助你閱讀維護老系統,也能更深刻體會現代框架解決的核心痛點。

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