iT邦幫忙

0

VScode 開發應用系統專案(10) - Spring boot MVC 應用系統設計(1)

  • 分享至 

  • xImage
  •  

Spring boot MVC 應用系統設計

概述

前面準備好了一些工具、資料庫存取、系統排程、多工處理、系統認證與授權(HomePage 以及 LandingPage含 Menu)以及相關稽核(Audit)紀錄功能,以下再加入比較明顯的LOG,觀察並了解整個Spring Boot啟動流程,以便後續設計應用系統時,可以參考此啟動順序,將適時加入啟動時準備的功能。之前有發文截斷情況,所以先列出程式設計的說明,後續每個項目都會調整為另一發文連接。

C:\workspaces\webappNew> cmd /C "C:\OpenJdk\microsoft-jdk-21.0.9\bin\java.exe @C:\Users\lewis\AppData\Local\Temp\cp_c0fpqaqp8192pmp52nrdn0z84.argfile tw.lewishome.webapp.WebappApplication "
┌────────────────────────────────────────────────────┐
│ SpringApplication WebappApplication started!       │
└────────────────────────────────────────────────────┘
┌────────────────────────────────────────────────────┐
│ PropertySecureProcessInitializer started !         │
└────────────────────────────────────────────────────┘

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/

 :: Spring Boot ::                (v3.5.9)

 ┌────────────────────────────────────────────────────┐
 │ postProcessEnvironment started !                   │
 └────────────────────────────────────────────────────┘
 ┌────────────────────────────────────────────────────┐
 │ GlobalConstants getKeyStorePassword started!       │
 └────────────────────────────────────────────────────┘
 ┌────────────────────────────────────────────────────┐
 │ postProcessEnvironment started !                   │
 └────────────────────────────────────────────────────┘
 ┌────────────────────────────────────────────────────┐
 │ SessionExpiredConfig started !                     │
 └────────────────────────────────────────────────────┘
 ┌────────────────────────────────────────────────────┐
 │ SystemServletContextListener started!              │
 └────────────────────────────────────────────────────┘
 ┌─────────────────────────────────────────────────────┐
 │ PrimaryDataSourceConfig dataSourceHikari started !  │
 └─────────────────────────────────────────────────────┘
 ┌───────────────────────────────────────────────────────┐
 │ PrimaryDataSourceConfig entityManagerFactory started! │
 └───────────────────────────────────────────────────────┘       
 ┌────────────────────────────────────────────────────┐
 │ CaffeineConfiguration started successfully!        │
 └────────────────────────────────────────────────────┘
 ┌────────────────────────────────────────────────────┐
 │ redisCacheManager started!                         │
 └────────────────────────────────────────────────────┘
 ┌─────────────────────────────────────────────────────┐
 │ PrimaryDataSourceConfig entityManager started !     │
 └─────────────────────────────────────────────────────┘
 ┌────────────────────────────────────────────────────┐
 │ OAuth2AuthenticationClient initialize started!     │
 └────────────────────────────────────────────────────┘
 ┌────────────────────────────────────────────────────┐
 │ WebSecurityConfig initializeSecurityConfig started!│
 └────────────────────────────────────────────────────┘
 ┌─────────────────────────────────────────────────────┐
 │ OAuth2AuthenticationClient Google ClientRegistration│
 └─────────────────────────────────────────────────────┘
 ┌─────────────────────────────────────────────────────┐
 │ OAuth2AuthenticationClient Github ClientRegistration│
 └─────────────────────────────────────────────────────┘
 ┌────────────────────────────────────────────────────┐
 │ asyncExecutor1 started !                           │
 └────────────────────────────────────────────────────┘
 ┌────────────────────────────────────────────────────┐
 │ delegateTaskExecutor1 started!                     │
 └────────────────────────────────────────────────────┘
 ┌────────────────────────────────────────────────────┐
 │ asyncExecutor2 started successfully!               │
 └────────────────────────────────────────────────────┘
 ┌────────────────────────────────────────────────────┐
 │ delegateTaskExecutor2 started!                     │
 └────────────────────────────────────────────────────┘
 ┌────────────────────────────────────────────────────┐
 │ WebSecurityConfig SecurityFilterChain started!     │
 └────────────────────────────────────────────────────┘
 ┌────────────────────────────────────────────────────┐
 │ WebSecurityConfig AuthenticationManager started!   │
 └────────────────────────────────────────────────────┘
 ┌───────────────────────────────────────────────────────┐
 │ PrimaryDataSourceConfig transactionManager started!   │       
 └───────────────────────────────────────────────────────┘       
 ┌───────────────────────────────────────────────────────┐
 │ PrimaryDataSourceConfig sqlSessionFactory started!    │       
 └───────────────────────────────────────────────────────┘       
 ┌───────────────────────────────────────────────────────┐       
 │ PrimaryDataSourceConfig Added TypeHandle started!     │       
 └───────────────────────────────────────────────────────┘       
 ┌───────────────────────────────────────────────────────┐
 │ PrimaryDataSourceConfig sessionTemplate started!      │
 └───────────────────────────────────────────────────────┘       
 ┌────────────────────────────────────────────────────┐
 │ ScheduleConfiguration started successfully!        │
 └────────────────────────────────────────────────────┘
 ┌────────────────────────────────────────────────────┐
 │ SystemApplicationListener started successfully!    │
 └────────────────────────────────────────────────────┘
 ┌────────────────────────────────────────────────────┐
 │ ApplicationStartingEvent started!                  │
 └────────────────────────────────────────────────────┘
 ApplicationEventExample =AvailabilityChangeEvent Received

接下來先介紹,Spring Boot 套用 Thymeleaf的 專案開發

配合Spring security layout版面的選單登入,準備對 SysUserProfileEntity做以下功能:

** 1. menu 選單畫面
https://ithelp.ithome.com.tw/upload/images/20260104/20139477qU1Xq5MxCY.png

2. 新增/查詢/維護/刪除Table畫面 ,統一由"/system/SysUserProfilePage.html"並以"menuFunc" 區分否顯示 "新增"、"查詢"、"維護"、"刪除"等按鈕。

系統設計上,若menuFunc有 Confirm功能,系統自動將新增或修改資料,存入待確認資料(SysUnConfirmDataEntity),帶實行確認後,再更新SysUserProfileEntity,所以SysUnConfirmDataEntity需要有存放所有不同Table資料blobOneTableData物件。
顯示資料時,若有待確認資料,以黃底色顯示,並賦予查詢/維護/刪除功能給予該筆待確認SysUnConfirmDataEntity資料,原先的SysUserProfileEntity只提供查詢功能。
https://ithelp.ithome.com.tw/upload/images/20260104/20139477rPPA8j4FrL.png


3.系統流程: 因為通常所有Table都需要這類維護的功能,所以設計上先提供通用模組

** 系統Entity待確認資料Table與相關物件,位置:tw.lewishome.webapp.database:

** 新增資料庫Table(SysUnConfirmData)**

  1. SysUnConfirmDataEntity.java
/**
 * SysUnConfirmDataEntity Entity 未確認資料表
 * 用於儲存系統中未確認的資料,包含資料的唯一標識、來源端點URL、資料鍵字字串、頁面按鈕資訊以及實際的資料物件。
 * 繼承自EntityAudit,包含基本的審計欄位如建立者、建立時間、更新者和更新時間。
 * 主要包含以下屬性:
 * 1. dataKey:資料的唯一標識,使用嵌入式主鍵DataKey類別。
 *   - key 包含: uuid:唯一的識別碼,使用UUID生成。
 * 2. endPointUrl:資料的來源端點URL。
 * 3. dataKeyString:資料的鍵字字串,用於標識資料。
 * 4. dataPageButton:與資料相關的頁面按鈕資訊。
 * 5. blobOneTableData:實際的資料物件,以Blob形式儲存。
 */
  1. SysUserDeptRepository.java
/**
 * SysUnConfirmData JPA Repository 未確認資料表 資料存取介面
 * 提供對SysUnConfirmDataEntity實體的CRUD操作和自定義查詢方法。
 * 繼承自JpaRepository和JpaSpecificationExecutor,支援基本的資料庫操作和複雜的查詢條件建構。
 * 主要包含以下方法:
 * 1. findByEndPointUrl:根據來源端點URL查找未確認資料。
 * 2. findByEndPointUrlAndDataKeyString:根據來源端點URL和資料鍵字字串查找未確認資料。
 * 3. findByDataKeyString:根據資料鍵字字串查找未確認資料。
 */

後端處裡請求的Java程序

  1. 系統選單Menu Data Model(PageMenuItemModel.java)
    位置:tw.lewishome.webapp.page:
 /**
 * 
 * 系統選單Menu Data Model
 * 用於頁面選單的資訊,包含選單欄頭文字和選單項目列表。
 * 於由SystemApplicationListener 設定
 * 
 */
  1. 負責處理系統選單(Menu)相關的服務(PageMenuItemService.java)
    位置:tw.lewishome.webapp.page:
/**
 * SystemGetMenuItemService 負責處理系統選單(Menu)相關的服務邏輯。
 *
 * 主要功能包含:
 * 1. 根據使用者權限取得對應的選單項目,並支援快取以提升效能。
 * 2. 支援從外部檔案(menuItemsData.json)或專案資源載入選單結構,方便選單維護與部署。
 * 3. 提供選單資料與資料庫(SysMenuDataEntity)之間的轉換功能,支援選單資料的持久化與還原。
 * 4. 根據使用者名稱與權限,動態產生符合權限的選單結構。
 * 5. 支援特殊權限角色(如 IT_ADMIN、SYS_ADMIN 等)的判斷與加入。
 */
  1. 系統處理Page常變數設定(PageConstants.java)
    位置:tw.lewishome.webapp.page:
/**
 * Page 常變數設定
 * 1. 系統選單Menu 於由SystemApplicationListener 設定
 * 2. Spring Aspect PointCut Package 設定
 * 3. 選單用 available SysEnv, 系統可提供的環境
 * 4. Page Menu Func Map 系統可提供功能與說明 (新增/查詢/維護修改/確認覆核)
 * 5. Page Button Map 系統可提供的功能按鍵以及說明,所以
 * 6. Page Button Fas Class系統功能按鍵的圖示 (Fas Font Awesome)。
 * 7. 依 Menu Fun(Inquiry/Add/Edit/Confirm) 需要顯
 * 8. 顯示處理資料的 Button 清單
 * 9. 顯示單筆時,那些功能按鍵鎖定,Html 設計的 Key欄位為 ReadOnlyKey 編輯時不可更改
 * 10. 顯示單筆時,那些功能按鍵鎖定,Html 設計的 Key 以及 data 欄位都為 ReadOnlyKey 編輯時不可更改
 * 11. Popup non show submitButton List 單筆Popup畫面,不必顯示執行功能的 Button清單
 * 12. Do Save submitButton List
 * 13. Do Add Confirm Data Button List
 * 14. check data exist submitButton List
 * 15. Do Confirm submitButton List
 * 16. 系統提供 Confirm的 URL (於系統啟動時 Servlet ContextListener初始化 )
 * 17. 依Menu選擇的功能 可以提供的 Table List Button
 * 18. getTableBtnByFunc 依Menu選擇的功能 可以提供的 Table List Button
 * 19. getConfirmUrl 遞迴取得選單項目中所有標記為 Confirm 功能的 URL 清單。
 */
  1. 頁面控制器Controller的基本類別(PageBaseController.java)
    位置:tw.lewishome.webapp.page:
/**
 * 頁面基礎控制器抽象類別
 * 
 * 此類別為所有頁面控制器的基類,提供會話屬性管理和使用者身份驗證相關的功能。
 * 主要職責包括:
 *   1. 初始化和管理 HTTP 會話中的共享屬性
 *   2. 處理使用者身份驗證(包括 Spring Security 和 OAuth2)
 *   3. 設定選單項目和頁面按鍵的可視性
 *   4. 管理頁面布局設定和相關的元資料
 *   5. 提供子類別共用的初始化邏輯
 *   6. 動態加入 Content Security Policy (CSP) nonce 以增強安全性
 *   7. 根據使用者身份載入對應的選單項目
 *   8. 根據選單功能設定頁面按鈕和操作選項
 *   9. 管理頁面新增按鈕的顯示邏輯
 *  10. 儲存頁面按鈕識別碼以供後續使用
 *  11. 支援多種使用者身份驗證方式,包括傳統登入和 OAuth2 登入
 *  12. 使用 Spring MVC 的 @SessionAttributes 註解來管理會話屬性
 *  13. 利用 Spring Security 提供的上下文來取得當前登入使用者資訊
 */ 
  1. 頁面表格列表(DataTable)基礎類別(PageBaseTableListModel.java)
    位置:tw.lewishome.webapp.page:
/**
 * 基礎頁面表格列表模型的抽象類別,實現了序列化介面。
 * 
 * @param <Entity> 表示與此模型相關的實體類型。
 * 
 * 此類別包含以下屬性:
 *  1. dataKeyString:每一筆表格資料的第一個欄位,表示該筆資料的 Key 值。
 *  2. unConfirmDataUuid:每一筆表格資料的第二欄位,表示該筆資料是否為實體資料。
 *  3. entity:每一筆表格資料的物件,通常用於存放 JPA 實體。
  1. 頁面表格單筆編輯基礎類別(PageBaseTableEditModel.java)
    位置:tw.lewishome.webapp.page:
/**
 * 頁面表格編輯模型基礎類別。
 * 
 * 此為一個抽象基礎類別,提供頁面表格編輯功能所需的共通屬性與配置。
 * 主要用於管理表格分頁、AJAX按鈕、菜單功能及確認URL等相關設置。
 * 此類別包含以下屬性:
 *  1. pageLengthString:定義每頁顯示的資料筆數選項。
 *  2. ajaxButtonString:存放根據菜單功能生成的AJAX按鈕HTML字符串。
 *  3. hasConfirmUrl:標記當前功能是否需要確認的URL。
 *  4. pageButtonId:存放頁面按鈕的唯一識別碼。
 *  5. pageMenuUrl:存放頁面菜單的URL地址。
 *  6. pageMenuFunc:存放菜單對應的功能函式名稱。
 */ 
  1. 頁面表格按鈕Model (PageTableButtonModel.java)
    位置:tw.lewishome.webapp.page:
/**
 * 頁面表格按鈕模型類別。
 * 
 * 此類別用於表示頁面表格中的按鈕資訊,包括按鈕的識別碼、圖示和名稱。
 * 主要包含以下屬性:
 *  1. id:按鈕的唯一識別碼,如 "btnInq"、"btnEdit"、"btnDelete" 等。
 *  2. fasClass:按鈕顯示的小圖示,使用 Font Awesome 的圖示類別名稱。
 *  3. name:按鈕的名稱或說明文字。
 * 
 */
  1. 前端頁面(DataTables)傳送請求參數資料結構(PageDataTableRequest.java)
    位置:tw.lewishome.webapp.page:
/**
 * PageDataTableRequest
 * 用於表示 DataTables 發送的分頁請求參數
 * 主要包含以下屬性:
 * 1. draw:請求次數計數器
 * 2. start:起始索引
 * 3. length:每頁顯示的資料筆數
 * 4. order:排序資訊,對應 order[i][column] 和 order[i][dir]
 * 5. columns:欄位資訊,對應 columns[i][data], columns[i][name], columns[i][searchable], columns[i][orderable]
 * 6. search:搜尋資訊
 * 
 */
  1. 回傳前端頁面(DataTables)傳送請求的參數資料結構(PageDataTableResponse.java)
    位置:tw.lewishome.webapp.page:
/**
 * PageDataTableResponse
 * 用於表示 DataTables 所需的分頁回應資料結構
 * 主要包含以下屬性:
 *  1. draw:請求次數計數器、
 *  2. recordsTotal:資料庫中的總記錄數(未過濾前的總數)、
 *  3. recordsFiltered: 套用搜尋條件過濾後的總記錄數(recordsFiltered)、
 *  4. data:實際要顯示在表格中的資料陣列(data)、
 *  5. error:選填的自定義錯誤訊息(error)。
 *
 */
  1. 全局異常處理器(GlobalExceptionHandler.java)
    位置:tw.lewishome.webapp.page:
/**
 * 全局異常處理器
 * 用於處理應用程式中未捕獲的異常
 * 主要功能包括:
 *  1. 捕獲所有異常並根據請求類型返回適當的響應
 *  2. 對於 AJAX 請求,返回 JSON 格式的錯誤訊息
 *  3. 對於非 AJAX 請求,返回錯誤頁面,並顯示詳細的錯誤資訊
 *  
 */
  1. 回傳前端頁面AJAX結果Model類別 PageAjaxResultModel.java
    位置:tw.lewishome.webapp.page:
/**
 * 頁面AJAX結果模型類別。
 * 
 * 用於表示AJAX請求的結果,包括狀態碼、回傳訊息和回傳資料。
 * 此類別還定義了狀態碼的類型,包括成功、警告和錯誤,並提供了多種靜態方法來生成不同類型的AJAX結果。
 * 
 * 主要包含以下屬性:
 *  1. CODE_TAG:狀態碼的鍵名稱。
 *  2. MSG_TAG:回傳訊息的鍵名稱。
 *  3. DATA_TAG:回傳資料的鍵名稱。
 *  4. Type:定義狀態碼的類型,包括成功、警告和錯誤。
 *  5. 多種靜態方法用於生成不同類型的AJAX結果,如 success、warn 和 error。
 *  6. 判斷結果類型的方法,如 isSuccess、isWarn 和 isError。
 *  7. 覆寫 put 方法以實現連鎖 put 功能。
 *  8. 提供多種建構式以初始化 AJAX 結果模型。
 */
  1. 處理應用程式中未確認資料的業務邏輯(PageUnConfirmDataService.java)
    位置:tw.lewishome.webapp.page:
/**
 * 頁面未確認資料服務類別
 *
 * 此類別負責處理網頁應用程式中未確認資料的業務邏輯,包括資料的儲存、更新、查詢和刪除操作。
 * 主要職責包括:
 *   1. 新增待確認資料到資料庫中
 *   2. 更新現有的未確認資料記錄
 *   3. 根據 UUID 讀取特定的未確認資料
 *   4. 刪除指定的未確認資料記錄
 *   5. 根據端點 URL 和資料鍵刪除未確認資料
 *   6. 統計特定選單 URL 的未確認資料數量
 *   7. 查詢特定選單 URL 的所有未確認資料
 *   8. 使用 Spring Data JPA 進行資料庫操作
 *   9. 處理 Blob 資料類型的儲存和檢索
 *  10. 提供資料完整性和一致性的保障
 *  11. 支援多種查詢方式以滿足不同業務需求
 *  12. 使用 @Service 註解標記為 Spring 服務元件
 *  13. 注入 SysUnConfirmDataRepository 以進行資料庫操作
 */

** 前端處裡使用者操作的Thymeleafe通用模組(Html、Javascript 、style css等,

  1. 基本資料表格 (DataTable) 樣式 (baeDataTable.css)
    位置:src/main/resource/css
/**
* 基本資料表格樣式 
* 1. 設定字型為微軟正黑體
* 2. 設定表格邊框與內距
* 3. 設定表格列的背景色
* 4. 設定第一欄位的內距
* 5. 設定滑鼠移到列上時的背景色
* 6. 設定表格標題列的樣式
*/
  1. 基礎選單 JavaScript 模組(baseMenu.js)
    位置:src/main/resource/js
/**
 * 基礎選單 JavaScript 模組。
 *
 * 此模組負責處理網頁應用程式中側邊欄選單的互動功能,包括選單的展開、收起以及選單項目的點擊事件處理。
 * 主要功能包括:
 *  1. 展開所有側邊欄選單項目。
 *  2. 收起所有側邊欄選單項目。
 *  3. 處理選單項目的點擊事件,發送 POST 請求並根據響應進行頁面重定向。
 *  4. 處理 CSRF token 的驗證和錯誤處理。
 *  5. 使用 jQuery 進行 DOM 操作和 AJAX 請求。
 *  6. 支援動態表單提交以實現安全的頁面導航。
 *  7. 提供錯誤訊息的顯示和日誌記錄。
 */
  1. 基礎佈局 JavaScript 模組 baseLayout.js
    位置:src/main/resource/js
/**
 * 基礎佈局 JavaScript 模組。
 *
 * 此模組負責初始化網頁應用程式的基礎佈局設定,包括 CSRF token 的設定、
 * 頁面標題的處理、推播選單的展開以及瀏覽器 URL 的管理。主要用於確保頁面的一致性和安全性。
 * 主要功能包括:
 *  1. 設定 AJAX 請求的 CSRF token 標頭以防止跨站請求偽造攻擊。
 *  2. 處理頁面標題,根據分隔符號分割並顯示主要標題。
 *  3. 展開推播選單以改善使用者體驗。
 *  4. 設定瀏覽器 URL 為根路徑,以統一頁面導航。
 *  5. 提供日誌記錄以追蹤佈局初始化過程。
 *  6. 支援動態標題更新和選單狀態管理。
 */

  1. 基礎資料表格 AJAX JavaScript 模組 (baseDataTableAjax.js)
    位置:src/main/resource/js
/**
 * 基礎資料表格 AJAX JavaScript 模組。
 *
 * 此模組負責初始化和處理網頁應用程式中的 DataTable 元件,包括 AJAX 資料載入、按鈕事件處理、
 * 模態框載入以及 CSRF token 的設定。主要用於動態表格的顯示和管理。
 * 主要功能包括:
 *  1. 初始化 DataTable 設定,包括伺服器端處理、分頁、搜尋和語言設定。
 *  2. 處理表格行的回呼函數,用於標記待確認資料。
 *  3. 設定 AJAX 請求的 CSRF token 標頭。
 *  4. 處理表格標頭和主體中的按鈕點擊事件。
 *  5. 載入和顯示編輯模態框。
 *  6. 支援動態參數傳遞和錯誤處理。
 *  7. 隱藏特定欄位(如鍵值和確認狀態)。
 *  8. 提供表格重新載入和資料操作的功能。
 */

4.基礎編輯頁面 JavaScript 模組(basePageEdit.js)
位置:src/main/resource/js

/**
 * 基礎頁面編輯 JavaScript 模組。
 *
 * 此模組負責處理網頁應用程式中頁面編輯功能的互動,包括表單提交驗證、
 * 錯誤訊息處理、Toast 通知顯示以及 Bootstrap Switch 元件的初始化。主要用於確保資料提交的安全性和使用者體驗。
 * 主要功能包括:
 *  1. 處理表單提交按鈕的點擊事件,執行 AJAX 驗證請求。
 *  2. 根據伺服器響應決定是否提交表單或顯示錯誤訊息。
 *  3. 解析和顯示驗證錯誤訊息,使用 Toast 通知。
 *  4. 初始化 Bootstrap Switch 元件以提供更好的 UI 體驗。
 *  5. 提供錯誤訊息的格式化和顯示功能。
 *  6. 支援動態錯誤處理和使用者反饋。
 *  7. 使用 jQuery 和 AJAX 進行非同步資料驗證。
 *  8. 整合 SweetAlert2 進行 Toast 訊息顯示。
 */
  1. 定義網頁應用程式的選單項目資料(menuItemsData.json)
    位置: src/main/resource
menuItemsData.json 檔案用於定義網頁應用程式的選單項目資料,支援多層級選單結構。

1. 根層級屬性
- `menuBarText`: 字串,選單欄的標題文字。
- `naviItems`: 陣列,包含所有導航項目的列表。

2 NaviItems 項目結構
每個 `naviItems` 項目包含以下屬性:
- `menuSeq`: 數字,選單順序,用於排序。
- `isMenu`: 布林值,是否為選單項目(true 表示有子項目,false 表示葉節點)。
- `menuDesc`: 字串,選單項目的描述文字。
- `menuUrl`: 字串,選單項目的 URL(對於父選單通常為空)。
- `menuFunc`: 字串,選單項目的功能類型(如 "Inquiry", "Edit", "Confirm")。
- `menuRoles`: 字串,允許存取的角色("all" 表示所有角色)。
- `collapseItems`: 陣列,子選單項目列表(對於葉節點為空陣列)。


3. 使用說明
- 此 JSON 檔案由前端 JavaScript 模組(如 `baseMenu.js`)讀取,用於動態生成選單。
- `menuSeq` 用於控制選單項目的顯示順序。
- `isMenu` 決定項目是否可展開。
- `menuRoles` 可用於權限控制。
- `collapseItems` 支援無限層級的巢狀選單結構。

4. SysUserProfileEntity 資料維護功能 (其他的Table維護可以參照處理)

前端處裡使用者操作的的 Thymeleafe(Html)程序,位置:src/main/resource/template/page/system

  1. sysUserProfilePage.html
<!--
 * 系統使用者個人資料頁面模板。
 *
 * 此模板負責渲染系統使用者個人資料的管理頁面,使用Thymeleaf模板引擎整合Spring MVC。
 * 主要功能包括:
 *  1. 顯示使用者資料的DataTable表格,包括User ID、Name、Email等欄位。
 *  2. 提供新增按鈕,根據權限顯示。
 *  3. 整合AJAX數據載入和編輯功能。
 *  4. 使用AdminLTE主題和DataTables插件提供響應式UI。
 *  5. 支援分頁、搜尋和排序功能。
 *  6. 處理未確認資料的顯示和確認邏輯。
 *  7. 提供編輯和刪除操作的連結。
 *  8. 整合Bootstrap和FontAwesome圖示。
 *
 * @author Lewis Home
 * @version 1.0
 -->
  1. sysUserProfilePageEdit.html
<!--
 * 系統使用者個人資料編輯頁面模板。
 *
 * 此模板負責渲染系統使用者個人資料的編輯頁面,使用Thymeleaf模板引擎整合Spring MVC。
 * 主要功能包括:
 *  1. 提供編輯使用者資料的表單,包括User ID、Name、Email、Ext、Dept、Password等欄位。
 *  2. 支援唯讀模式,根據權限控制欄位可編輯性。
 *  3. 整合Bootstrap Switch元件處理布林值欄位(如isValid)。
 *  4. 提供密碼確認欄位,確保密碼輸入一致性。
 *  5. 整合CSRF保護機制。
 *  6. 使用SweetAlert2和Toastr進行錯誤訊息顯示。
 *  7. 提供提交、顯示錯誤訊息和關閉按鈕。
 *  8. 載入basePageEdit.js處理表單驗證和提交邏輯。
 *
 * @author Lewis Home
 * @version 1.0
 -->

** 後端處裡請求的Java程序,

  1. SysUserProfilePageController.java
    位置:tw.lewishome.webapp.page.system.controller
/**
 * 系統SysUserProfilePage的控制服務程式
 * 
 * 此類別負責處理系統使用者個人資料頁面的所有控制邏輯,繼承自PageBaseController。
 * 主要職責包括:
 *   1. 處理SysUserProfilePage的GET和POST請求,初始化頁面模型並返回對應模板
 *   2. 提供AJAX數據接口,處理DataTable的分頁查詢和數據格式化
 *   3. 處理編輯頁面的請求,根據按鈕ID和表鍵載入數據,支持唯讀模式
 *   4. 處理未確認數據的載入和確認邏輯
 *   5. 保存編輯後的數據並重定向到選單URL
 *   6. 提供編輯數據的驗證接口,返回錯誤訊息或成功數據
 *   7. 管理頁面按鈕的可視性和提交邏輯
 *   8. 整合PageUnConfirmDataService處理未確認數據
 *   9. 使用SysUserProfilePageService進行業務邏輯處理
 *  10. 支援多種操作模式,包括新增、編輯、刪除和查看
 *  11. 處理CSRF token和安全性驗證
 *  12. 提供錯誤處理和異常拋出機制
 *  13. 使用Spring MVC註解進行請求映射和響應處理
 */
  1. SysUserProfilePageModel.java
    位置:tw.lewishome.webapp.page.system.model
/**
 * 系統使用者個人資料頁面模型類別。
 * 
 * 用於系統使用者個人資料頁面的資料模型,包含表頭資料和表列表資料。
 * 繼承自PageBaseTableEditModel,提供基本的編輯功能。
 * 主要包含以下屬性:
 * 1. tableHeaderData:頁面表頭資料物件,包含查詢條件等資訊。
 * 2. tableListData:表格列表資料物件,包含單筆資料的JPA實體和額外欄位。
 * 3. TableListData:表格列表單筆資料類別,繼承自PageBaseTableListModel,提供基本的列表功能。
 */  
  1. SysUserProfilePageService.java
    位置:tw.lewishome.webapp.page.system.service
/**
 * 系統使用者個人資料頁面服務類別。
 * 
 * 此類別負責處理系統使用者個人資料頁面的業務邏輯,包括資料的查詢、編輯、保存和驗證。
 * 主要包含以下功能:
 *  1. 資料檢核:檢查編輯資料的有效性,包括重複檢查等。
 *  2. 資料更新:根據編輯資料更新或新增使用者個人資料。
 *  3. 單筆資料查詢:根據鍵值查詢單筆使用者資料。
 *  4. 分頁查詢:支援DataTable的分頁、排序和搜尋功能。
 *  5. 編輯按鈕處理:處理不同編輯操作的業務邏輯。
 *  6. 密碼加密:使用SM3演算法對密碼進行加密處理。
 *  7. 未確認資料處理:整合未確認資料的載入和確認邏輯。
 *  8. DataTable數據格式化:將查詢結果轉換為DataTable所需的格式。
 */ 

圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言