(1)實現(xiàn)技術(shù):MySQL+jsp+servlet+tomcat+maven踢涌;是一個maven項目。
(2)MVC的三個部分全部自己手敲,沒怎么抽取代碼偿凭,看著可能冗余,大概這就是新手吧煤蹭。
(3)功能基本實現(xiàn)了笔喉,只是前端頁面的返回是history(-1)取视,這個在多次使用后可能會導(dǎo)致頁面白屏,暫時不太會處理常挚。
(4)源碼下載鏈接:smbms源碼.zip
(5)在這篇文章中作谭,只是項目的實現(xiàn)思路
分篇閱讀: |
---|
smbms項目(一):項目開始階段 |
smbms項目(二):用戶管理頁面 |
smbms項目(三):供應(yīng)商管理頁面 |
smbms項目(四):訂單管理頁面 |
smbms項目(五):項目小總結(jié) |
smbms項目(一)
項目搭建
實現(xiàn)登錄、登出奄毡、修改密碼折欠、跳轉(zhuǎn)到用戶管理頁面
一、項目搭建準備工作
-
搭建一個maven web項目
-
配置tomcat
測試項目是否可以運行
- 啟動一下tomcat吼过,確定是可以跑的
- 導(dǎo)入項目中需要的jar包
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.3</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!--JSTL表達式依賴-->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!--Standard標簽庫-->
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
</dependencies>
-
創(chuàng)建項目包結(jié)構(gòu)
- 編寫實體類
- ORM映射:表——類映射
- 編寫基礎(chǔ)公共類
- 數(shù)據(jù)庫配置文件 properties
此文件注意不要亂加 锐秦; - 數(shù)據(jù)庫公共類
- 編寫字符編碼過濾器
- 導(dǎo)入靜態(tài)資源
二、登錄功能實現(xiàn)
- 編寫前端頁面
- 設(shè)置歡迎頁面
- 編寫dao層登錄用戶登錄的接口
- 編寫dao接口的實現(xiàn)類
- 5.業(yè)務(wù)層接口
- 實現(xiàn)業(yè)務(wù)層接口
- 編寫Servlet
- 配置Servlet
- 測試功能是否全部實現(xiàn)
三盗忱、登錄功能優(yōu)化
(一)注銷功能
- 思路:移除Session酱床,返回登錄頁面
- 1.1. servlet
- 1.2. 配置xml
(二)登錄攔截優(yōu)化
- 2.1. servlet
- 2.2. 配置xml
四、密碼修改
- 導(dǎo)入前端素材
- 寫項目趟佃,從底層往上寫
- 從dao層開始寫起扇谣,再寫業(yè)務(wù)層service,再寫控制層servlet闲昭,再和視圖層jsp作聯(lián)系罐寨。要思考好一個事務(wù)和數(shù)據(jù)庫的邏輯關(guān)系,分別實現(xiàn)不同層次的代碼序矩。
- UserDao接口
- UserDao接口實現(xiàn)類
- UserService接口
- UserService實現(xiàn)
- 編寫Servlet
- json工具包導(dǎo)入
- 配置xml
五鸯绿、用戶管理實現(xiàn)
-
思路:
- 導(dǎo)入分頁的工具類
- 用戶列表頁面導(dǎo)入
(一)獲取用戶數(shù)量
- 1.1. UserDao
- 1.2. UserDaoImpl
- 1.3. Service
- 1.4. ServiceImpl
(二)獲得用戶列表
- 2.1. UserDao
- 2.2. UserDaoImpl
- 2.3. Service
- 2.4. ServiceImpl
(三)獲得角色列表
為了職責(zé)分明清晰,可以把角色的操作單獨放到一個包中簸淀,和pojo一一對應(yīng)
- 3.1. RoleDao
- 3.2. RoleDaoImpl
- 3.3. RoleService
- 3.4. RoleServiceImpl
- 3.5. Servlet
- 3.5.1. 查詢獲得用戶列表
- 3.5.2. 從前端獲取數(shù)據(jù)
- 3.5.3. 獲得用戶的總數(shù)(分頁:上一頁瓶蝴、下一頁的情況)
- 3.5.4. 控制首頁和尾頁,如果頁面要小于1租幕,就顯示第一頁的東西
- 3.5.5. 獲取用戶列表展示
- 3.5.6. 返回前端
smbms項目(二)用戶管理頁面
一囊蓝、根據(jù)用戶id查詢用戶信息(用戶管理的查看操作)
- UserDao
- UserDaoImpl
- UserService
- UserServiceImpl
- Servlet
- xml
二、根據(jù)用戶id修改用戶信息(用戶管理的修改操作)
(一)修改頁面的跳轉(zhuǎn)
- 1.1. servlet
- 1.2. xml
(二)得到角色列表
- 2.1. servlet
- 2.2. xml
(三)提交更改用戶信息令蛉,表單提交
- 3.1. UserDao
- 3.2. UserDaoImpl
- 3.3. UserService
- 3.4. UserServiceImpl
- 3.5. Servlet
- 3.6. xml
三聚霜、添加用戶
(一)獲得用戶全部角色
和上面所用的方法一樣
(二)獲得全部用戶的userCode并判斷用戶想要新建用戶的userCode是否能使用
- 2.1. UserDao
- 2.2. UserDaoImpl
- 2.3. UserService
- 2.4. UserServiceImpl
- 2.5. UserServlet
- 2.6. xml
(三)提交新用戶信息,存儲在數(shù)據(jù)庫
- 3.1. UserDao
- 3.2. UserDaoImpl
- 3.3. UserService
- 3.4. UserServiceImpl
- 3.5. UserServlet
- 問題分析:因為前端提交表單有屬性:enctype="multipart/form-data"
enctype="multipart/form-data"時文本框參數(shù)獲取問題的解決
- 使用文件的方式讀取資源珠叔,新增一個AddUserServlet的類蝎宇,處理該特殊請求
- 前端頁面,跳轉(zhuǎn)到添加用戶的是通過超鏈接實現(xiàn)祷安,所以放到doGet方法中姥芥,表單提交(post)處理就使用post方法
- 路徑問題:this.getServletContext().getRealPath("/")獲得null,查找一番沒解決汇鞭,便寫死了項目在硬盤上的地址(沒有解決的bug)
- 3.6. xml
- 3.7. bug:文件的路徑獲取失斄固啤:
- request.getSession().getServletContext().getRealPath("/statics/images");
- this.getServletContext().getRealPath("/") + "/statics/tmp";
四庸追、刪除用戶
- 4.1. UserDao
- 4.2. UserDaoImpl
- 4.3. UserService
- 4.4. UserServiceImpl
- 4.5. UserServlet
- 4.6. xml
smbms項目(三)供應(yīng)商管理頁面
- 頁面跳轉(zhuǎn)
- ProviderServlet
- web.xml
(一)、供應(yīng)商管理頁面
1台囱、根據(jù)供應(yīng)商編碼或者供應(yīng)商名稱查詢供應(yīng)商總數(shù)
- ProviderDao
- ProviderDaoImpl
- ProviderService
- ProviderServiceImpl
2淡溯、通過條件查詢獲得供應(yīng)商列表
- ProviderDao
- ProviderDaoImpl
- ProviderService
- ProviderServiceImpl
- ProviderServlet
(二)、供應(yīng)商查看頁面
根據(jù)供應(yīng)商id查詢供應(yīng)商信息簿训,供應(yīng)商管理頁面 下的 查看請求
- ProviderDao--> ProviderDaoImpl--> ProviderService--> ProviderServiceImpl--> ProviderServlet--> web.xml
(三)咱娶、供應(yīng)商修改頁面
1. 頁面跳轉(zhuǎn)
根據(jù)供應(yīng)商id 獲取供應(yīng)商信息,并返回前端强品,這和查看供應(yīng)商信息的功能一樣膘侮,只是跳轉(zhuǎn)的頁面不一樣,只要修改Servlet就行
- ProviderServlet
2. 修改供應(yīng)商信息
- ProviderDao
- ProviderDaoImpl
- ProviderService
- ProviderServiceImpl
- ProviderServlet
- web.xml
(四)的榛、供應(yīng)商添加頁面
1. 添加頁面跳轉(zhuǎn)
- 1.1 ProviderServlet
- 1.2 web.xml
2. 查詢供貨商編碼
查詢?nèi)康墓┴浬叹幋a(dao)
確定供貨商編碼是否未被使用琼了、給前端設(shè)置數(shù)據(jù)(Servlet)
- ProviderDao
- ProviderDaoImpl
- ProviderService
- ProviderServiceImpl
- ProviderServlet
- web.xml
3. 添加用戶
- ProviderDao
- ProviderDaoImpl
- ProviderService
- ProviderServiceImpl
- ProviderServlet
- web.xml
(五)、刪除供應(yīng)商
- ProviderDao
- ProviderDaoImpl
- ProviderService
- ProviderServiceImpl
- ProviderServlet
- web.xml
至此完成了供應(yīng)商管理頁面的全部功能
smbms項目(四)訂單管理頁面
- 頁面跳轉(zhuǎn)
- BillServlet
- web.xml
(一)夫晌、訂單管理頁面
1表伦、全部供應(yīng)商列表
- BillServlet
2、根據(jù)商品名稱慷丽、供應(yīng)商id、是否付款的標識查詢獲得訂單總數(shù)
- BillDao
- BillDaoImpl
- BillService
- BillServiceImpl
3鳄哭、根據(jù)商品名稱要糊、供應(yīng)商id、是否付款的標識查詢獲得供應(yīng)商列表
- BillDao
- BillDaoImpl
- BillService
- BillServiceImpl
- BillServlet
(二)妆丘、訂單信息查看頁面
不得不記錄一個人為bug:<servlet-name>ProviderServlet</servlet-name>锄俄,一開始將下面的配置語句寫成了上面那句,所以請求處理一直沒有正確的處理勺拣,即是拿到了前端數(shù)據(jù)奶赠,但是沒有交由正確的程序處理,是不行的药有!
- web.xml
- BillDao
- BillDaoImpl
- BillService
- BillServiceImpl
- BillServlet
(三)毅戈、訂單信息修改頁面
1. 頁面跳轉(zhuǎn)
根據(jù)訂單id 獲取訂單信息,并返回前端愤惰,這和查看訂單信息的功能一樣苇经,只是跳轉(zhuǎn)的頁面不一樣,只要修改Servlet就行
- BillServlet
2. 獲得供貨商編碼列表宦言,返回前端json數(shù)組
訂單信息修改頁面下的 獲得供應(yīng)商 列表 異步請求扇单,無頁面跳轉(zhuǎn)
- BillServlet
3. 訂單信息修改頁面下的 修改保存提交請求
java中的BigDecimal和String的相互轉(zhuǎn)換
BillDao
BillDaoImpl
BillService
BillServiceImpl
BillServlet
web.xml
(四)、訂單信息添加頁面
1. 跳轉(zhuǎn)到添加訂單信息頁面
- BillServlet
- web.xml
2. 獲得供貨商編碼列表奠旺,返回前端json數(shù)組
訂單信息添加頁面下的 獲得供應(yīng)商 列表 異步請求蜘澜,無頁面跳轉(zhuǎn)施流,這里和上面的一樣
3. 訂單信息提交,并保存到數(shù)據(jù)庫
- BillDao
- BillDaoImpl
- BillService
- BillServiceImpl
- BillServlet
- web.xml
(五)鄙信、刪除訂單信息
- BillDao
- BillDaoImpl
- BillService
- BillServiceImpl
- BillServle
- web.xml
至此完成了訂單管理頁面的全部功能瞪醋,以下是BillServlet的doGet方法