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

Struts 實戰筆記:從登錄模塊到 AJAX 三級聯動與分頁泛型封裝

     編輯:Java 程式設計入門

登錄模塊:DispatchAction + 驗證框架 + 多態設計

JSP 頁面:Struts 標簽庫構建表單

使用 html:form、html:text、html:password、html:submit 等標簽,配合 html:javascript 自動生成客戶端驗證腳本。錯誤信息通過 html:errors 顯示。

ActionForm:LoginForm

封裝 user/password 屬性,reset() 方法清空密碼,便於登錄失敗後重新輸入。

DispatchAction:統一入口分發

將登錄、註冊等操作集中在 AjaxDispatchAction,通過 method=login 參數分發。核心邏輯:

  1. 獲取 Service 業務層實例
  2. 查詢用戶是否存在
  3. 驗證密碼
  4. 將用戶對象存入 Session,按角色(admin/teacher/student)重定向至對應首頁(return new ActionForward(type + ".do", true))

驗證框架配置

  • validation.xml 定義 required、mask(正則)、minlength/maxlength 規則
  • 錯誤消息鍵值映射至 ApplicationResources.properties

領域模型:多態實現三角色統一登錄

interface Person { getId(), getUser(), getPassword(), getType()... }
abstract class User implements Person { ... }
class Admin extends User { getType() { return "admin"; } }
class Teacher extends User { getType() { return "teacher"; } }
class Student extends User { getType() { return "student"; } }

登錄時無需關心具體類型,利用多態統一處理,getType() 動態決定跳轉目標。

基礎架構:BaseAction / BaseDispatchAction

封裝通用功能:

  • getService():從 Application 獲取 ServiceFactory 創建 Service
  • isLogin() / getPerson():Session 登錄態檢查
  • execute() 模板方法:未登錄攔截 → 子類 executeAction()
  • Session/Application 屬性操作工具方法

AJAX 實戰:用戶名唯一性檢查與三級聯動下拉

核心流程:原生 XMLHttpRequest

  1. 創建 XMLHttpRequest(兼容 IE ActiveXObject)
  2. 構建請求 URL(如 ajax.do?method=checkUserIsExist&user=xxx)
  3. 註冊 onreadystatechange 回調處理響應
  4. 發送請求

三級聯動:學院 → 專業 → 班級

  • 學院下拉初始化:Action 準備 Vector<LabelValueBean> 渲染
  • 選中學院 → getDepartments(instituteId) 異步獲取專業 → JS buildSelect 動態填充專業下拉
  • 選中專業 → getClasses(departmentId) 異步獲取班級 → 填充班級下拉

後端返回編碼字符串(如 \"計算機科學,1|軟體工程,2\"),前端分割構建 Option。

MVC 與分頁泛型封裝

理解 MVC:Action(Controller)處理業務邏輯,結果放入 Request,轉發至 JSP(View)純渲染。

泛型分頁 Bean:Page<E>

public class Page<E> {
    private int current, total, pages, each, start, end;
    private boolean next, previous;
    private Vector<E> data; // 泛型容器,支援任意業務對象
    // 構造器自動計算總頁數、起止記錄、上下頁標誌
}

結合泛型,同一分頁組件可復用於學生、教師、課程等任意列表,大幅減少重複代碼。

心得體會

Struts 雖屬經典,但其「配置驅動、標簽庫豐富、驗證框架內建」的思想仍具參考價值。實踐中應注重:

  • DispatchAction 聚合同業務操作,減少類爆炸
  • 驗證框架分離業務與校驗邏輯
  • AJAX 提升用戶體驗,後端復用現有 Action 入口
  • 泛型封裝通用模塊(分頁、排序),提升開發效率
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved