基于SSM框架的管理系統(tǒng)
【文末附源碼】
1
前言
基于SSM框架的管理系統(tǒng) 簡潔版 ;
實現(xiàn) 登錄 、 注冊 、 增 、 刪 、 改 、 查 ;
可繼續(xù)完善增加前端、校驗、其他功能等;
可作為SSM項目開發(fā)練習基礎模型;
課程設計 、畢業(yè)設計開發(fā)基礎;
任何復雜的框架都是簡單的知識組合并延伸的,學好基礎知識才是最重要的;
此項目簡單,便于理解基本原理,為復雜SSM復雜項目的開發(fā)打下基礎。
2
環(huán)境準備
開發(fā)平臺 :IDEA 2019
數(shù)據(jù)庫 :MySQL 5.0.22
服務器 :Tomcat 9.0.37
注意 :需要安裝IDEA開發(fā)平臺、MySQL數(shù)據(jù)庫和Tomcat服務器,版本不一定完全一致,做好版本適應性配置即可。
3
項目結(jié)構(gòu)
3.1數(shù)據(jù)庫及Java代碼文件

3.2Jsp等前端代碼

3.3Tomcat服務器配置與運行

3.4MySQL數(shù)據(jù)庫

4
基本原理
4.1相關概念
** Spring**
Spring是一個開源框架,是2003年興起的輕量級的Java開發(fā)框架,為解決企業(yè)應用開發(fā)的復雜性而創(chuàng)建的。簡單來說,Spring是一個輕量級的控制反轉(zhuǎn)(IOC)和面向切面(AOP)的容器框架。日常開發(fā)中IOC容器使用較多,可以裝載Bean,即Java中的類,不用在每次使用類的時候初始化,很少出現(xiàn)關鍵字new。另外Spring的AOP,事務管理等等也會經(jīng)常使用。
IOC:
控制反轉(zhuǎn),是一種降低對象之間耦合關系的設計思想。如:租賃房屋,平常租房需要自己逐個小區(qū)尋找房屋,然后使用了IOC之后,即需找一個租房中介,把對房屋的需求告訴中介,就可以直接找到合適的房屋。即把需求交給了第三方,有第三方幫助完成需求,中介就相當于Spring容器。
AOP:
面向切面編程,是面向?qū)ο箝_發(fā)的一種補充,允許開發(fā)人員在不改變原來模型的基礎上動態(tài)的修改模型以滿足新的需求,如:動態(tài)的增加日志、安全或異常處理等。AOP使業(yè)務邏輯各部分間的耦合度降低,提高程序可重用性,提高開發(fā)效率。
** SpringMVC**
Spring MVC分離了控制器、模型對象、分派器以及處理程序?qū)ο蟮慕巧菀走M行定制。
SpringMVC工作流程:
1.用戶向服務器發(fā)送請求,請求被Spring前端控制Servelt DispatcherServlet捕獲;
2.DispatcherServlet對請求URL進行解析,得到請求資源標識符(URI)。然后根據(jù)該URI,調(diào)用HandlerMapping獲得該Handler配置的所有相關的對象(包括Handler對象以及Handler對象對應的攔截器),最后以HandlerExecutionChain對象的形式返回;
3.DispatcherServlet 根據(jù)獲得的Handler,選擇一個合適的HandlerAdapter。(注:如果成功獲得HandlerAdapter后,此時將開始執(zhí)行攔截器的preHandler(...)方法)
4.提取Request中的模型數(shù)據(jù),填充Handler入?yún)ⅲ_始執(zhí)行Handler(Controller)。在填充Handler的入?yún)⑦^程中,根據(jù)你的配置,Spring將幫你做一些額外的工作:
HttpMessageConveter:將請求消息(如Json、xml等數(shù)據(jù))轉(zhuǎn)換成一個對象,將對象轉(zhuǎn)換為指定的響應信息;
數(shù)據(jù)轉(zhuǎn)換:對請求消息進行數(shù)據(jù)轉(zhuǎn)換。如String轉(zhuǎn)換成Integer、Double等;
數(shù)據(jù)格式化:對請求消息進行數(shù)據(jù)格式化。如將字符串轉(zhuǎn)換成格式化數(shù)字或格式化日期等;
數(shù)據(jù)驗證:驗證數(shù)據(jù)的有效性(長度、格式等),驗證結(jié)果存儲到BindingResult或Error;
5.Handler執(zhí)行完成后,向DispatcherServlet返回一個ModelAndView對象;
6.根據(jù)返回的ModelAndView,選擇一個適合的ViewResolver(必須是已經(jīng)注冊到Spring容器中的 ViewResolver)返回給DispatcherServlet;
7.ViewResolver 結(jié)合Model和View,來渲染視圖;
8.將渲染結(jié)果返回給客戶端。

** MyBatis**
MyBatis是一個基于Java的持久層框架。MyBatis消除了幾乎所有的JDBC代碼和參數(shù)的手工設置以及結(jié)果集的檢索。MyBatis使用簡單的XML或注解用于配置和原始映射,將接口和Java的POJOs(Plain Old Java Objects,普通的Java對象)映射成數(shù)據(jù)庫中的記錄。MyBatis是對Jdbc的封裝,讓數(shù)據(jù)庫底層操作變的透明。Mybatis的操作都是圍繞一個sqlSessionFactory實例展開的。mybatis通過配置文件關聯(lián)到各實體類的Mapper文件,Mapper文件中配置了每個類對數(shù)據(jù)庫所需進行的sql語句映射。在每次與數(shù)據(jù)庫交互時,通過sqlSessionFactory拿到一個sqlSession,再執(zhí)行sql命令。
4.2實現(xiàn)流程
0.數(shù)據(jù)庫database-;
1.實體類com.pojo-,定義對象的屬性;
2.mapper-Mapper.xml(Mybatis),其中定義功能,對應要對數(shù)據(jù)庫進行的那些操作,比如insert、selectAll、selectByKey、delete、update等;
3.com.dao-Mapper.java,將Mapper.xml中的操作按照id映射成Java函數(shù);
4.com.Service-Service.java,為控制層提供服務,接受控制層的參數(shù),完成相應的功能,并返回給控制層;
5.com.controller-Controller.java,連接頁面請求和服務層,獲取頁面請求的參數(shù),通過自動裝配,映射不同的URL到相應的處理函數(shù),并獲取參數(shù),對參數(shù)進行處理,之后傳給服務層;
6.Jsp-前端JSP頁面調(diào)用,請求哪些參數(shù),需要獲取什么數(shù)據(jù)。
DataBase ===> pojo ===> Mapper.xml ===> dao ===> Service ===> controller ===> Jsp
4.3實現(xiàn)基本原理
SSM框架是Spring MVC ,Spring和MyBatis框架的整合,是標準的MVC模式,將整個系統(tǒng)劃分為表現(xiàn)層,Controller層,Service層,Dao層;
Spring MVC負責請求的轉(zhuǎn)發(fā)和視圖管理,負責controller和jsp的,也就是視圖層;
Spring實現(xiàn)業(yè)務對象管理,提供對象的,利用其IOC與AOP貫穿于整個項目。為各個層之間提供對象創(chuàng)建和注入,解耦合。比如我的這個項目提供了dao層的對象;
MyBatis作為數(shù)據(jù)對象的持久化引擎,負責數(shù)據(jù)庫的連接,與Spring整合后,配合Spring可提供dao層對象。
** 持久層:Dao層(mapper)**
Dao層:Dao層主要是做數(shù)據(jù)持久層的工作,負責與數(shù)據(jù)庫進行聯(lián)絡的一些任務都封裝在此,Dao層的設計首先是設計Dao的接口,然后在Spring的配置文件中定義此接口的實現(xiàn)類,然后就可在模塊中調(diào)用此接口來進行數(shù)據(jù)業(yè)務的處理,而不用關心此接口的具體實現(xiàn)類是哪個類,顯得結(jié)構(gòu)非常清晰,Dao層的數(shù)據(jù)源配置,以及有關數(shù)據(jù)庫連接的參數(shù)都在Spring的配置文件中進行配置。
**業(yè)務層:Service層**
Service層:Service層主要負責業(yè)務模塊的邏輯應用設計。首先設計接口,再設計其實現(xiàn)的類,接著再在Spring的配置文件中配置其實現(xiàn)的關聯(lián)。這樣我們就可以在應用中調(diào)用Service接口來進行業(yè)務處理。Service層的業(yè)務實現(xiàn),具體要調(diào)用到已定義的DAO層的接口,封裝Service層的業(yè)務邏輯有利于通用的業(yè)務邏輯的獨立性和重復利用性,程序顯得非常簡潔。
**表現(xiàn)層:Controller層(Handler層)**
Controller層:Controller層負責具體的業(yè)務模塊流程的控制,在此層里面要調(diào)用Service層的接口來控制業(yè)務流程,控制的配置也同樣是在Spring的配置文件里面進行,針對具體的業(yè)務流程,會有不同的控制器,我們具體的設計過程中可以將流程進行抽象歸納,設計出可以重復利用的子單元流程模塊,這樣不僅使程序結(jié)構(gòu)變得清晰,也大大減少了代碼量。
**View層:**
View層與控制層結(jié)合比較緊密,需要二者結(jié)合起來協(xié)同工發(fā)。View層主要負責前臺Jsp頁面的表示。
5
頁面展示
5.1登錄頁面

5.2注冊頁面

5.3主頁

5.4展示頁面

5.5新增頁面

5.6刪除頁面

5.7修改頁面

6
注意
1.MySQL 版本5.0以上與8.0以上配置有些許差異,需要調(diào)整,根據(jù) jdbc.properties 文件中的提示,選擇合適的數(shù)據(jù)庫驅(qū)動 driver;
# MySQL 5.Xjdbc.driver=com.mysql.jdbc.Driver# MySQL 8.Xjdbc.driver=com.mysql.cj.jdbc.Driver
2.運行項目前提前配置好MySQL數(shù)據(jù)庫、Tomcat服務器、IDEA maven依賴庫;
3.本系統(tǒng)僅實現(xiàn)簡單功能,僅為更好理解SSM原理,需進一步完善更多功能及健壯性。
7
源碼
關注微信公眾號:Java爛筆頭
回復:SSM項目****
發(fā)布評論請先 登錄
基于JAVA與SSM的移動電源租賃系統(tǒng)的設計
Java、SSM移動電源租賃系統(tǒng)的設計與實現(xiàn)
基于SSM框架的畢業(yè)設計管理系統(tǒng)
基于SSM框架的新聞管理系統(tǒng)
基于SSM框架的管理系統(tǒng)
評論