本篇博文將分享一款基於Struts2框架的名片管理系統,JSP引擎為Tomcat9.0,資料庫採用的是MySQL5.5,整合式開發環境為Eclipse IDE for Java EE Developers。
名片管理系統主要包括使用者管理和名片管理功能。使用者功能主要包括:使用者註冊、使用者登入、修改密碼和修改基本資訊功能;名片管理主要包括:新增名片、查詢名片、修改名片、刪除名片功能。
希望通過本篇的學習,朋友們不僅能掌握Struts 2應用開發的流程、方法和技術,還能夠熟悉名片管理的業務需求、設計以及實現。
1、系統功能需求
名片管理系統主要包含以下功能:
2、系統模組劃分
使用者登入成功後,進入管理主頁面(main.jsp)可以對自己的客戶名片進行管理。系統模組劃分,如下圖所示。
系統採用載入純Java資料庫驅動程式的方式連線MySQL5.5資料庫。在MySQL5.5的資料庫card中,共建立兩張與系統相關的資料表:usertable和cardinfo。
1、資料庫概念結構設計
根據系統設計與分析,可以設計出如下資料結構:
包括使用者名稱和密碼,註冊使用者名稱唯一。
包括ID、名稱、電話、郵箱、單位、職務、地址、Logo以及所屬使用者。其中,ID唯一,「所屬使用者」與「1.使用者」關聯。根據以上的資料結構,結合資料庫設計的特點,可畫出如下圖所示的資料庫概念結構圖。
其中,ID為正整數,值是從1開始遞增的序列。
2、資料庫邏輯結構設計
將資料庫概念結構圖轉換為MySQL資料庫所支援的實際資料模型,即資料庫的邏輯結構。使用者資訊表(usertable)的設計,如下表所示:
名片資訊表(cardinfo)的設計,如下表所示:
1、匯入相關的jar包
新建一個Struts 2應用cardManage,在所有JSP頁面中儘量使用EL表示式和JSTL標籤,又因為系統採用純Java資料庫驅動程式連線MySQL5.5以及JSON資料轉換。所以,需要將對應的JAR包複製到WebContent\WEB-INF\lib的目錄下,JAR包如下圖所示:
2、JSP頁面管理
由於篇幅受限,這裡僅附上執行效果圖,所有實現見原始碼。
管理主頁面
註冊使用者在瀏覽器位址列中輸入http://localhost:8080/struts2cardManage/login.jsp存取登入頁面,登入成功後,進入管理主頁面(main.jsp),main.jsp的執行效果如下圖所示:
程式報錯頁面
當Java程式執行出現異常時,系統會執行全域性頁面error.jsp。
在沒有成功登入的情況下,對名片進行增、刪、改、查等操作時,系統執行無許可權操作,提示頁面nologin.jsp。
本系統的包檔案和組態檔層次結構如下圖所示:
所需包檔案說明如下所示:
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,效果如下圖所示:
在deleteSelect.jsp頁面所示的註冊頁面中,輸入「姓名」後,系統會根據Ajax非同步請求路徑「jsontest/isUse.action」檢測「姓名」是否可用。輸入合法的使用者資訊後,單擊「註冊」按鈕,實現註冊功能。
3、登入
在系統預設主頁index.jsp,單擊「登入」連結,開啟登入頁面login.jsp,效果如下圖所示:
使用者輸入姓名和密碼後,系統將對姓名和密碼進行驗證。如果姓名和密碼同時正確,則成功登入,將使用者資訊儲存到session物件,並進入系統管理主頁面(main.jsp);如果姓名或密碼有誤,則提示錯誤。
單擊登入介面中「確定」按鈕,通過請求路徑「user/login.action」,將登入請求提交給Action。組態檔user.xml根據請求路徑找到對應Action類UserAction(6.1節)的login方法處理登入請求。
4、修改密碼
單擊主頁面中「個人中心」選單的「修改密碼」選單項,開啟密碼修改頁面updatePWD.jsp。頁面效果如下圖所示:
在密碼修改頁面中輸入「新密碼」和「確認新密碼」後,單擊「修改密碼」按鈕,將請求通過「user/updatePwd.action」提交給Action。組態檔user.xml根據請求路徑找到對應Action類UserAction(6.1節)的updatePwd方法處理密碼修改請求。
5、基本資訊
單擊主頁面中「個人中心」選單的「基本資訊」選單項,開啟基本資訊頁面userInfo.jsp。頁面效果如下圖所示:
與系統相關的JSP頁面、CSS和圖片位於WebRoot目錄下。在第3節中,已經介紹了系統的資料庫操作,所以本節只是介紹JSP頁面和Action的實現。
名片管理主要包括:新增名片、查詢名片、修改名片、刪除名片功能。
1、Action的實現
CardAction類負責處理「名片管理」的功能,包括新增、修改、刪除、查詢等。
2、新增名片
使用者輸入客戶名片的姓名、電話、E-Mail、單位、職務、地址、Logo後,單擊「提交」按鈕實現新增。如果成功,則跳轉到查詢頁面;如果失敗,則回到新增頁面。addCard.jsp頁面實現新增名片資訊的輸入介面,如下圖所示:
單擊上圖中「提交」按鈕,將新增請求通過「card/addCard.action」提交給Action處理。組態檔card.xml根據請求路徑找到對應Action類CardAction(5.1節)的add方法處理新增功能。新增成功跳轉到查詢Action;新增失敗回到新增頁面。
3、查詢名片
管理員登入成功後,進入名片管理系統的主頁面,在主頁面中初始顯示查詢頁面queryCards.jsp,查詢頁面執行效果如下圖所示:
單擊主頁面中「名片管理」選單的「查詢名片」選單項,開啟查詢頁面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。名片詳細資訊頁面如下圖所示:
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頁面的執行效果如下圖所示。
updateCard.jsp頁面的執行效果如下圖所示:
5、刪除名片
單擊主頁面中「管理名片」選單的「刪除名片」選單項,開啟刪除查詢頁面deleteSelect.jsp。
「刪除名片」選單項超連結的目標地址是個Action。找到對應Action類CardAction的方法query,在該方法中,根據動作型別,將查詢結果轉發給deleteSelect.jsp頁面,頁面效果如下圖所示:
在上圖的核取方塊中選擇要刪除的名片,單擊「刪除」按鈕,將要刪除名片的ID提交給控制器Action。找到對應Action類CardAction的方法delete,在該方法中,根據動作型別執行批次刪除的業務處理。
單擊上圖中的「刪除」超連結,將當前行的名片ID提交給控制器Action,找到對應Action類CardAction的方法delete,在該方法中,根據動作型別執行單個刪除的業務處理。刪除成功後,進入刪除查詢頁面。
請關注微信公眾號,回覆關鍵字:名片管理系統,獲取原始碼~
本文整理來源於:
1、《Java Web開發從入門到實戰》陳恆 姜學 主編
2、清華計算機學堂