ssm實現管理系統
這個專案主要有五個模組,這五個模組分別是資料管理、資料統計、使用者管理、角色管理、網站資訊管理。我們團隊實現了其中的4個模組,分別是資料管理、資料統計、使用者管理、網站資訊管理。其中主要實現了對資料的增刪改查,其中增加資料中包含了對圖片的上傳,修改包括對已上傳的圖片以及資料進行修改,刪除包含單個刪除以及批量刪除,查詢實現了分頁的功能以及對指定資料的詳細查詢。
表1 頁面資訊表home
序號 |
欄位名 |
型別 |
描述 |
|||
1 |
Id |
int |
序號 |
|||
2 |
gid |
tinyint |
模組 |
|||
3 |
topic |
varchar |
標題 |
|||
4 |
time |
datatime |
上傳時間 |
|||
5 |
filesrc |
varchar |
圖片 |
|||
6 |
content |
varchar |
內容 |
|||
7 |
status |
varchar |
顯示狀態 |
表2 模組分類頁面資訊genre
序號 |
欄位名 |
型別 |
描述 |
1 |
gid |
tinyint |
序號 |
2 |
gname |
varchar |
模組 |
使用者管理表user
序號 欄位名 |
型別 |
描述 |
|
1 Id |
int |
標識 |
|
2 name |
varchar |
姓名 |
|
3 password |
varchar |
密碼 |
|
4 userRows |
varchar |
使用者角色 |
|
5 sex |
varchar |
性別 |
|
6 date |
date |
日期 |
|
7 filesrc |
varchar |
檔案 |
資料管理表datamanagement
序號 欄位名 |
型別 |
描述 |
|
1 id |
int |
記錄資料 |
|
2 name |
varchar |
姓名 |
|
3 mark |
varchar |
唯一標識 |
|
4 age |
varchar |
年齡 |
|
5 gender |
varchar |
性別 |
|
6 belong |
varchar |
所屬 |
|
7 test_time |
varchar |
測試用時 |
|
8 warning_level |
varchar |
預警等級 |
|
7 testTime |
varchar |
測試時間 |
資料統計表datamanagement
序號 欄位名 |
型別 |
描述 |
|
1 id |
int |
記錄資料 |
|
2 name |
varchar |
姓名 |
|
3 mark |
varchar |
唯一標識 |
|
4 age |
varchar |
年齡 |
|
5 gender |
varchar |
性別 |
|
6 belong |
varchar |
所屬 |
|
7 test_time |
varchar |
測試用時 |
|
8 warning_level |
varchar |
預警等級 |
|
7 testTime |
varchar |
測試時間 |
3.2.1.1 從登陸介面進入到程式時顯示了資料管理,同時進行了查詢的工作
(1)重要程式碼
處理器:
Service層:
Dao層的實現:
(2)實現情況
3.2.1.1 點選檢視按鈕進行詳細資訊的查詢
(1)重要程式碼
處理器:
service層 :
Dao 層:
(2) 實現情況
3.2.1.1 對資料的刪除
(1)重要程式碼
(3)實現情況
刪除前 :
刪除後:
3.2.1.1 對資料的新增
(1)重要程式碼
(2)實現情況
3.2.2 資料統計模組的實施方案
3.2.2.1 對資料的查詢
(1)重要程式碼
(2)實現情況
3.2.2.2 對單個數據的檢視
(1)重要程式碼
(2)實現情況
3.2.2.3 對資料的刪除
(1)重要程式碼
(2)實現情況
3.2.3 使用者管理中的模組實施方案
3.2.3.1 查詢內容和分頁內容:
(1)重要程式碼
處理器頁面資料查詢方法
@RequestMapping("/userManage.do")
public String userManage(intpageno, Modelmodel) {
System.out.println(pageno);
Page<User> page =service.findCurrentPage(pageno);
model.addAttribute("page",page);
return"/html/User_management.jsp";
}
實現類頁面查詢
public Page<User> findCurrentPage(intpageno) {
Page<User> page =new Page<>(pageno, Constants.PAGE_SIZE);
//查詢出總記錄數
longtotalRows =dao.selectTotalRows();
page.setTotalRows(totalRows);
//查詢出當前頁包含的欄目詳情
intpageStartIndex =page.getPageStartIndex();
intpageSize =page.getPageSize();
Map<String, Object> map =new HashMap<>();
map.put("pageStartIndex",pageStartIndex);
map.put("pageSize",pageSize);
List<User> datas =dao.selectCurrentPgaeUser(map);
page.setDatas(datas);
returnpage;
}
(2)實現情況
3.2.3.2 對使用者的新增
(1)重要程式碼
@RequestMapping("/userInsert.do")
public String userInsert(Useruser, Model model) {
System.out.println(user);
service.addUser(user);
return"/html/user_management_add.jsp";
}
(2)實現情況
3.2.3.3 .刪除
(1)重要程式碼
@RequestMapping("/userDelete.do")
public String userDelete(intid, Modelmodel) {
service.delete(id);
return"/test/userManage.do?pageno=1";
}
(2)實現情況
3.2.3.4 密碼修改、使用者修改
(1)重要程式碼
修改的處理器方法:先通過id查詢,資料回顯之後,在通過修改處理器方法。
@RequestMapping("/userUpdate.do")
public String userUpdate(Useruser, Model model) {
service.modifyUser(user);
System.out.println(user);
System.out.println("111");
/*return "/html/user_management_password.jsp";*/
return"/test/toUserUpdate.do";
}
@RequestMapping("/toUserUpdate2.do")
public String toUserUpdateId2(intid, Modelmodel) {
User user=service.findUserById(id);
System.out.println(id);
model.addAttribute("user",user);
return"/html/user_management_edit.jsp";
}
@RequestMapping("/userUpdate2.do")
public String userUpdate2(Useruser, Model model) {
service.modifyUser(user);
System.out.println(user);
System.out.println("222");
/*return "/html/user_management_password.jsp";*/
return"/test/toUserUpdate2.do";
}
(2)實現情況
3.2.3.5 批量刪除
(1)重要程式碼
@RequestMapping("userRemove.do")
public String removeNews(Stringnids, User user) {
String[] ids =nids.split(",");
for (Stringstring : ids) {
intid = Integer.parseInt(string);
service.removeUserById(id);
}
return"/test/userManage.do?pageno=1";
}
(2)實現情況
3.2.3.6 對使用者名稱的查詢
(1)重要程式碼
@RequestMapping("/toUserUpdateShow.do")
public String toUserUpdateShow(intid, Modelmodel) {
User user=service.findUserById(id);
System.out.println(id);
model.addAttribute("user",user);
System.out.println("顯示成功");
return"/html/user_management_show.jsp";
}
(2)實現情況
3.2.4 網站資訊管理模組的實施方案
3.2.4.1查詢模組(兩個查詢子類查詢和父類查詢)
(1)重要程式碼
處理器
Dao層
(2)實現情況
查詢所有
首頁,這是一個全部查詢 home(多條新聞)-àgenre(類別),這是一個多對一的關係。
在home類中新增一個域屬性private Genre genre;
3.2.4.2新增模組(兩個查詢子類查詢和父類查詢)
(1)重要程式碼
處理器
Dao層
(2)實現情況
新增成功
3.2.4.3刪除模組
(1)重要程式碼
處理器
Dao層
(2)顯示情況
刪除前
刪除後
3.2.4.4修改模組
(1)重要程式碼
處理器
Dao層
(2)顯示情況
修改成功
四、專案說明
登入介面為login.jsp,這個頁面在WebContent下的html檔案中,登陸後直接點選登入就可以登入到系統,不需要輸入密碼。我們實現了資料管理中的資料統計,使用者管理以及網站資訊管理,但是網站資訊管理的部分功能在進行·系統整個的時候出現了不能實現的情況,所以在原始碼中有兩個一個是所有的整合在一起的原始碼,還有一個是網站資訊管理單獨的實現原始碼。資料庫在打包檔案中有一個表名為index的資料庫,專案裡面的WebContent中的db檔案中還有一個數據庫備份index。
對於資料管理模組主要包括3部分,分別為資料的新增,資料的查詢和資料的刪除。其中資料的新增和刪除都差不多,查詢相比較於其他兩個較為複雜,需要定義page類作為查詢出來的結果與jsp頁面進行資料互動。
新增寫的時候問題在於jsp無法呼叫處理器,後來發現是jsp中的JavaScript與呼叫處理器的實現發生了衝突,解決誒這個問題後很容易的就可以實現新增功能。查詢的時候需要進行分頁,也可以很容易的實現,問題還是在於與jsp頁面進行資料互動的時候出現了問題,資料無法顯示,與源jsp程式碼中的JavaScript發生了衝突。刪除實現的時候因為是根據id進行刪除,但是一直無法實現刪除,檢查程式碼發現從資料庫中讀取的資料中沒有讀取id,解決了這些後,基本的功能夠就全部實現了。
在進行小組一起寫的時候,寫之前應該先統一所用的jar包,jdk的版本,資料來源等配置資訊,不然最後進行整合的時候會很麻煩,還有就是寫的時候要經常進行交流,有時候自己遇到的問題剛好有人解決了就可以馬上學習,節省不少的時間。
通過寫這個程式,發現了自己的很多不足的地方,對JavaScript的理解不夠,沒辦法讀懂原來的jsp頁面中的程式碼,導致前臺與後臺進行資料互動的時候出現很多問題,所以要好好補一下前端的基本內容,確保可以在以後避免這些問題。
網站資訊管理中的首頁模組。重要包括四個部分查詢部分、修改部分、新增部分、刪除。其中查詢部分和刪除部分大致相同,修改和新增部分有相似的執行原理。四個模組中比較重要的是新增模組和修改模組。
其中新增和修改模組有關於檔案的上傳。檔案上傳主要的步驟是:先找到你將要把檔案儲存的位置;然後去找新增圖片的名稱和位置;把檔案儲存到硬碟中;然後通過設定值把圖片放到資料庫中。
刪除和查詢的原理:查詢包括了兩個查詢,子類查詢父類,一對多的關係。執行的原理:查詢到要刪除的ID,然後刪除對應的整條資訊。
程式中存在的問題(以後應該完善的地方):在四個模組整合的過程中由於註解方式的不同導致程式出現問題。我寫的程式單獨執行能夠正常的進行,但是全部整合只要出現檔案上傳就會出現錯誤。最後在整合部分把圖片寫成固定的,上傳的是一個固定的圖片才能正常執行。
通過該程式自己也認識到了自己哪方面的知識薄弱,自己在平時是學習的時候也要注意基礎知識的學習。不僅要對課本知識有很好的掌握,而且要學習很多與專業相關的一些其他內容。只有這樣對於個專案的編寫才能有更好的認識。自己平時也要多做幾個小的專案,這樣以後對專案也不會看到就恐懼。除此之外,通過四個人一個小組去完成一個專案,能夠促進同學之間的合作,同學之間也能夠相互學習,取長補短。在整個專案的過程中,遇到許多問題,都能夠相互探討,比自己一個人去思考會更有效果。懂得一組寫一個大專案需要從什麼地方入手,怎麼分工。
編寫的時候jar包需要統一,包的命名,配置環境一致,全註解配置,以及建表需要大家一起來完成和商量。
查詢當前頁內容、分頁內容前臺定義的js框架使後臺page查詢的內容無法實現,於是刪除其js框架,使用自己定義的分頁功能。
對使用者的新增前臺js需要呼叫其對應函式,響應後臺處理器的新增的方法,然後跳到新增頁面jsp。
刪除前臺js需要呼叫其對應函式,響應後臺處理器id的刪除的方法,然後跳到第一頁或者當前頁面。
批量刪除js使用大量標頭檔案讓前臺成功是關鍵,後臺將其定義成陣列,完成普通刪除。
密碼修改、使用者修改先對應id查詢讓其修改jsp頁面回顯資料然後再調處理器完成修改。
過程較複雜,但是關鍵在於修改有個隱藏id,需要說明<input type="hidden"name="id" value="${user.id }">。
對使用者名稱的查詢,跟普通查詢一樣,但在這裡我圖片新增到資料庫中,將其路徑定義傳到前臺回顯,是一次嘗試。
主要實現了對資料的查詢以及修改的功能,在寫這個模組的時候遇到了很多的問題。剛開始的時候因為是複製的oa的專案,在全部刪完重新建包濱完成配置後,執行測試時發生了很多的錯誤,之後又從新寫了一個,這些錯誤才得以解決,可能是因為複製過來後哪裡沒有改完導致了錯誤的發生。在實現查詢的時候,分頁出了點問題,經常出現查詢出來後一條資料都沒有的時候會發生下一個和末頁可以點選的情況,但是點選後就會報錯,最後在page類中的得到totalpages的方法中找到了問題的所在,刪除的時候出現了頁面刪除但是資料庫沒有執行刪除的情況,之後發現沒有呼叫處理器,在前臺和後臺互動的時候出現了問題,之後請教了別人後問題得以解決。
在寫程式的時候會出現很多的問題,出現問題的第一步是自己查詢,之後網查詢,找不到之後最後再向別人進行請教,有一些很簡單的問題自己百度一下就可以解決的。通過這個程式認識到了自己對一些基本概念理解的不夠深刻,要更加努力的去學習。