天天看點

基于Struts2架構的名片管理系統

目錄

1、系統設計

2、資料庫設計

3、系統管理

4、使用者管理

5、名片管理

本篇博文将分享一款基于Struts2架構的名片管理系統,JSP引擎為Tomcat9.0,資料庫采用的是MySQL5.5,內建開發環境為Eclipse IDE for Java EE Developers。

名片管理系統主要包括使用者管理和名片管理功能。使用者功能主要包括:使用者注冊、使用者登入、修改密碼和修改基本資訊功能;名片管理主要包括:添加名片、查詢名片、修改名片、删除名片功能。

希望通過本篇的學習,朋友們不僅能掌握Struts 2應用開發的流程、方法和技術,還能夠熟悉名片管理的業務需求、設計以及實作。

1、系統功能需求

名片管理系統主要包含以下功能:

非注冊使用者可以注冊為注冊使用者;

成功注冊的使用者,可以登入系統;

成功登入的使用者,可以添加、修改、删除以及浏覽自己客戶的名片資訊;

成功登入的使用者,可以在個人中心檢視自己的基本資訊和修改密碼。

2、系統子產品劃分

使用者登入成功後,進入管理首頁面(main.jsp)可以對自己的客戶名片進行管理。系統子產品劃分,如下圖所示。

基于Struts2架構的名片管理系統

名片管理系統功能

系統采用加載純Java資料庫驅動程式的方式連接配接MySQL5.5資料庫。在MySQL5.5的資料庫card中,共建立兩張與系統相關的資料表:usertable和cardinfo。

1、資料庫概念結構設計

根據系統設計與分析,可以設計出如下資料結構:

使用者

包括使用者名和密碼,注冊使用者名唯一。

名片

包括ID、名稱、電話、郵箱、機關、職務、位址、Logo以及所屬使用者。其中,ID唯一,“所屬使用者”與“1.使用者”關聯。根據以上的資料結構,結合資料庫設計的特點,可畫出如下圖所示的資料庫概念結構圖。

基于Struts2架構的名片管理系統

資料庫概念結構圖

其中,ID為正整數,值是從1開始遞增的序列。

2、資料庫邏輯結構設計

将資料庫概念結構圖轉換為MySQL資料庫所支援的實際資料模型,即資料庫的邏輯結構。使用者資訊表(usertable)的設計,如下表所示:

基于Struts2架構的名片管理系統

使用者資訊表

名片資訊表(cardinfo)的設計,如下表所示:

基于Struts2架構的名片管理系統

名片資訊表

1、導入相關的jar包

建立一個Struts 2應用cardManage,在所有JSP頁面中盡量使用EL表達式和JSTL标簽,又因為系統采用純Java資料庫驅動程式連接配接MySQL5.5以及JSON資料轉換。是以,需要将對應的JAR包複制到WebContent\WEB-INF\lib的目錄下,JAR包如下圖所示:

基于Struts2架構的名片管理系統

所需JAR包

2、JSP頁面管理

由于篇幅受限,這裡僅附上運作效果圖,所有實作見源代碼。

管理首頁面

注冊使用者在浏覽器位址欄中輸入http://localhost:8080/struts2cardManage/login.jsp通路登入頁面,登入成功後,進入管理首頁面(main.jsp),main.jsp的運作效果如下圖所示:

基于Struts2架構的名片管理系統

程式報錯頁面

當Java程式運作出現異常時,系統會執行全局頁面error.jsp。

無權限提示頁面

在沒有成功登入的情況下,對名片進行增、删、改、查等操作時,系統執行無權限操作,提示頁面nologin.jsp。

封包件和配置檔案管理

本系統的封包件和配置檔案層次結構如下圖所示:

基于Struts2架構的名片管理系統

包層次結構圖

所需封包件說明如下所示:

action包
該包是系統中所有Action類,包括名片管理的Action類和個人中心的Action類。
Conf檔案夾
該檔案夾的xml檔案是本系統所有Action類的配置。“card.xml”是名片管理Action類的配置,“user.xml”是個人中心Action類的配置。這些xml檔案需要在struts.xml檔案中包含進來。
dao包
dao包中存放的Java程式是實作資料庫的操作。其中BaseDao是一個父類,該類負責連接配接資料庫;CardDao是BaseDao的一個子類,有關名片管理的資料通路在該類中;UserDao是BaseDao的另一個子類,有關使用者的資料通路在該類中。另外,該包中還有一個名為“jdbc.properties”的檔案,該檔案是有關資料庫的配置。包括驅動類名、資料庫URL、使用者名以及密碼等。
entity包
該包中有1個實體類:Card,封裝名片資訊。
interceptor包
該包中有1個攔截器類:LoginValidateInterceptor,進行權限控制。
util包
該包中MyUtil類是獲得一個時間字元串的工具類。
所需配置檔案檔案說明如下所示:
struts.xml
在軟體系統開發中,子產品化設計是最常用的一種方式。為了友善管理,本系統也不例外,将不同子產品的配置分别放在不同的配置檔案中。然後,在struts.xml檔案中,通過include引入這些配置檔案。
user.xml
該配置檔案負責配置和使用者有關的Action。
card.xml
該配置檔案負責配置個人中心有關的Action,在此處使用了通配符“*”動态比對Action的請求名稱。      

使用者功能主要包括:使用者注冊、使用者登入、修改密碼和修改基本資訊功能。

1、Action的實作

UserAction類負責處理“會員注冊”、“會員登入”、“安全退出”以及“個人中心”的功能。

2、注冊

在系統預設首頁index.jsp,單擊“注冊”連結,打開注冊頁面register.jsp,效果如下圖所示:

基于Struts2架構的名片管理系統

注冊頁面

在deleteSelect.jsp頁面所示的注冊頁面中,輸入“姓名”後,系統會根據Ajax異步請求路徑“jsontest/isUse.action”檢測“姓名”是否可用。輸入合法的使用者資訊後,單擊“注冊”按鈕,實作注冊功能。

3、登入

在系統預設首頁index.jsp,單擊“登入”連結,打開登入頁面login.jsp,效果如下圖所示:

基于Struts2架構的名片管理系統

登入界面

使用者輸入姓名和密碼後,系統将對姓名和密碼進行驗證。如果姓名和密碼同時正确,則成功登入,将使用者資訊儲存到session對象,并進入系統管理首頁面(main.jsp);如果姓名或密碼有誤,則提示錯誤。

單擊登入界面中“确定”按鈕,通過請求路徑“user/login.action”,将登入請求送出給Action。配置檔案user.xml根據請求路徑找到對應Action類UserAction(6.1節)的login方法處理登入請求。

4、修改密碼

單擊首頁面中“個人中心”菜單的“修改密碼”菜單項,打開密碼修改頁面updatePWD.jsp。頁面效果如下圖所示:

基于Struts2架構的名片管理系統

密碼修改頁面

在密碼修改頁面中輸入“新密碼”和“确認新密碼”後,單擊“修改密碼”按鈕,将請求通過“user/updatePwd.action”送出給Action。配置檔案user.xml根據請求路徑找到對應Action類UserAction(6.1節)的updatePwd方法處理密碼修改請求。

5、基本資訊

單擊首頁面中“個人中心”菜單的“基本資訊”菜單項,打開基本資訊頁面userInfo.jsp。頁面效果如下圖所示:

基于Struts2架構的名片管理系統

基本資訊頁面

與系統相關的JSP頁面、CSS和圖檔位于WebRoot目錄下。在第3節中,已經介紹了系統的資料庫操作,是以本節隻是介紹JSP頁面和Action的實作。

名片管理主要包括:添加名片、查詢名片、修改名片、删除名片功能。

CardAction類負責處理“名片管理”的功能,包括添加、修改、删除、查詢等。

2、添加名片

使用者輸入客戶名片的姓名、電話、E-Mail、機關、職務、位址、Logo後,單擊“送出”按鈕實作添加。如果成功,則跳轉到查詢頁面;如果失敗,則回到添加頁面。addCard.jsp頁面實作添加名片資訊的輸入界面,如下圖所示:

基于Struts2架構的名片管理系統

添加名片頁面

單擊上圖中“送出”按鈕,将添加請求通過“card/addCard.action”送出給Action處理。配置檔案card.xml根據請求路徑找到對應Action類CardAction(5.1節)的add方法處理添加功能。添加成功跳轉到查詢Action;添加失敗回到添加頁面。

3、查詢名片

管理者登入成功後,進入名片管理系統的首頁面,在首頁面中初始顯示查詢頁面queryCards.jsp,查詢頁面運作效果如下圖所示:

基于Struts2架構的名片管理系統

查詢頁面

單擊首頁面中“名片管理”菜單的“查詢名片”菜單項,打開查詢頁面queryCards.jsp。“查詢名片”菜單項超連結的目标位址是個Action。該Action的請求路徑為“card/queryCard.action”,配置檔案card.xml根據請求路徑找到對應Action類的query方法處理查詢功能。在該方法中,根據動作類型(“修改查詢”、“查詢”以及“删除查詢”),将查詢結果轉發到不同頁面。

在queryCards.jsp頁面中單擊“詳情”超連結,打開名片詳細資訊頁面detail.jsp。“詳情”超連結的目标位址是個Action。該Action的請求路徑為“card/selectACard.action”。配置檔案card.xml根據請求路徑找到對應Action類的selectA方法處理查詢一個名片功能。将查詢結果轉發給詳細資訊頁面detail.jsp。名片詳細資訊頁面如下圖所示:

基于Struts2架構的名片管理系統

名片詳情

4、修改名片

單擊首頁面中“管理名片”菜單的“修改名片”菜單項,打開修改查詢頁面updateSelect.jsp。“修改名片”菜單項超連結的目标位址是個Action。找到對應Action類CardAction的方法query,在該方法中,根據動作類型,将查詢結果轉發給修改查詢頁面。

單擊updateSelect.jsp頁面中的“修改”超連結打開修改名片資訊頁面updateCard.jsp。“修改”超連結的目标位址是個Action。找到對應Action類CardAction的方法selectA,在該方法中,根據動作類型,将查詢結果轉發給updateCard.jsp頁面顯示。

輸入要修改的資訊後,單擊“送出”按鈕,将名片資訊送出給Action,找到對應Action類CardAction的方法update,在方法中執行修改的業務處理。修改成功,進入查詢名片。修改失敗,回到updateCard.jsp頁面。updateSelect.jsp頁面的運作效果如下圖所示。

基于Struts2架構的名片管理系統

updateSelect.jsp頁面

updateCard.jsp頁面的運作效果如下圖所示:

基于Struts2架構的名片管理系統

updateCard.jsp頁面

5、删除名片

單擊首頁面中“管理名片”菜單的“删除名片”菜單項,打開删除查詢頁面deleteSelect.jsp。

“删除名片”菜單項超連結的目标位址是個Action。找到對應Action類CardAction的方法query,在該方法中,根據動作類型,将查詢結果轉發給deleteSelect.jsp頁面,頁面效果如下圖所示:

基于Struts2架構的名片管理系統

deleteSelect.jsp頁面

在上圖的複選框中選擇要删除的名片,單擊“删除”按鈕,将要删除名片的ID送出給控制器Action。找到對應Action類CardAction的方法delete,在該方法中,根據動作類型執行批量删除的業務處理。

單擊上圖中的“删除”超連結,将目前行的名片ID送出給控制器Action,找到對應Action類CardAction的方法delete,在該方法中,根據動作類型執行單個删除的業務處理。删除成功後,進入删除查詢頁面。