ssh新手練手專案——員工curd操作和未登入攔截
三大框架:
Struts框架
1. params攔截器: 請求資料封裝
2. 型別轉換/資料處理
3. struts配置
4. 檔案上傳/下載/國際化處理
5. 資料效驗/攔截器
6. Ognl表示式
7. 資料回顯/模型驅動/防止表單重複提交
Hibernate框架
1. Api簡介
2. 對映
多對一/一對多: 部門與員工
多對多/一對一
集合對映/元件對映/繼承對映
3. Hibernate 快取
4. 常用屬性:inverse/lazy/cascade
5. 物件狀態:臨時/持久/遊離
Spring框架
1) Spring IOC容器 【Inversion Of Control,即控制反轉】
建立物件/處理物件依賴關係
2) Aop程式設計
3) Spring宣告式事務管理
4) 框架整合
Spring與Struts
Spring與Hibernate
5)Spring對jdbc、hibernate操作的封裝
JdbcTemplate (dataSource)/ HibernateTemplate(SessionFactory)
目標:
案例 【軟體專案宣告週期】
1. 需求分析
系統概述:
企業人事管理系統!
要求對員工資訊進行維護;
後臺系統先登陸,才能操作員工: 新增/修改/刪除
沒有登陸,只能檢視列表,不能操作!
功能分類:
【管理員模組:】
註冊/登陸
【員工模組】
1) 新增一個員工, 指定新增的部門
2) 對指定的員工資訊修改
3) 刪除選擇員工
4)列表展示
2. 設計
2.1 系統設計
【系統架構師/技術經理】
主要做下面的事情,
1) 搭建系統框架結構
(基於mvc結構應用)
2) 確定專案的關鍵點/難點
3) 確定引用元件、公用類的版本
Struts2.3
Hibernate3.6
Spring3.2
2.2 資料庫設計
管理員表: t_admin
員工表: t_employee
部門: t_dept
3. 程式碼
步驟分析
編碼順序:
1) 設計資料庫: hib_demo
建表: t_admin/t_employee/t_dept
2) 建立web專案、引入jar檔案、準備環境
…..
3) 設計javvabean、寫對映
Admin.java 封裝管理員
Employee.java 員工
Dept.java 部門
Admin.hbm.xml
Employee.hbm.xml
Dept.hbm.xml
4) Dao設計介面
IAdminDao.java 管理員模組
void save(Admin admin);
Admin findByAdmin(Admin admin);
IDeptDao.java 部門模組
List<Dept> getAll();
Dept findById(int id);
IEmployeeDao.java 員工模組
Void save(Employee emp);
Void update(Employee emp);
Void delete(int id);
Employee findById(int id);
List<Employee> getAll();
List<Employee> getAll(String employeeName);
5) Dao介面實現
6)Service介面設計
IAdminService.java 管理員模組
void register(Admin admin);
Admin login(Admin admin);
7)Service介面實現
8) Action實現
EmployeeAction.java 員工模組
AdminAction.java 管理員模組
9)jsp頁面
Index.jsp/list.jsp 首頁列表
優化部分:
10) 使用者登陸攔截器
UserInterceptor.java 檢查是否登陸
只有登陸才能操作; 否則只能檢視
11) Dao 操作優化
BaseDao.java 所有dao的通用方法,dao都必須繼承此類
(反射泛型)
實現步驟程式碼:
1) 設計資料庫: hib_demo |
CREATE TABLE t_admin( id INT PRIMARY KEY AUTO_INCREMENT, adminName VARCHAR(20), pwd VARCHAR(20) ) 表: t_dept/ t_employee |
2) 建立web專案、引入jar檔案、準備環境 【struts相關jar】 commons-fileupload-1.2.2.jar commons-io-2.0.1.jar commons-lang3-3.1.jar freemarker-2.3.19.jar javassist-3.11.0.GA.jar ognl-3.0.5.jar struts2-core-2.3.4.1.jar xwork-core-2.3.4.1.jar
【hibernate 相關 jar】 antlr-2.7.6.jar commons-collections-3.1.jar dom4j-1.6.1.jar hibernate3.jar hibernate-jpa-2.0-api-1.0.0.Final.jar javassist-3.12.0.GA.jar jta-1.1.jar slf4j-api-1.6.1.jar
【Spring-core】 commons-logging-1.1.3.jar spring-beans-3.2.5.RELEASE.jar spring-context-3.2.5.RELEASE.jar spring-core-3.2.5.RELEASE.jar spring-expression-3.2.5.RELEASE.jar
【Spring-web】 spring-web-3.2.5.RELEASE.jar struts2-spring-plugin-2.3.4.1.jar
【Spring-Aop】 aopalliance.jar aspectjrt.jar aspectjweaver.jar spring-aop-3.2.5.RELEASE.jar
【Spring-orm】 c3p0-0.9.1.2.jar mysql-connector-java-5.1.12-bin.jar spring-orm-3.2.5.RELEASE.jar spring-tx-3.2.5.RELEASE.jar spring-jdbc-3.2.5.RELEASE.jar |
3) 設計javvabean、寫對映 |
public class Admin {
private int id; private String adminName; private String pwd; } |
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="cn.itcast.entity">
<class name="Admin" table="t_admin"> <id name="id"> <generator class="native"></generator> </id> <property name="adminName" length="20"></property> <property name="pwd" length="20"></property> </class>
</hibernate-mapping> |
public class Dept {
private int id; private String name; } |
<hibernate-mapping package="cn.itcast.entity">
<class name="Dept" table="t_dept"> <id name="id" column="deptId"> <generator class="native"></generator> </id> <property name="name" column="deptName"></property> </class>
</hibernate-mapping> |
|
public class Employee {
private int id; private String empName; private double salary; private Dept dept; } |
<hibernate-mapping package="cn.itcast.entity">
<class name="Employee" table="t_employee"> <id name="id" column="empId"> <generator class="native"></generator> </id> <property name="empName"></property> <property name="salary"></property> <!-- 多對一 --> <many-to-one name="dept" column="dept_id" class="Dept"></many-to-one> </class>
</hibernate-mapping> |
|
4) Dao設計介面 |
public interface IAdminDao {
/** * 儲存 * @param admin 管理員物件 */ void save(Admin admin);
/** * 根據管理員資訊查詢 * @param admin 管理員物件 * @return返回查詢後的結果 */ Admin findByAdmin(Admin admin);
}
|
public interface IDeptDao {
/** * 查詢全部 * @return 返回全部資訊 */ List<Dept> getAll();
/** * 根據主鍵查詢 * @param id 主鍵 * @return 返回查詢後的結果 */ Dept findById(int id);
} |
public interface IEmployeeDao {
/** * 儲存員工 * @param emp */ void save(Employee emp);
/** * 跟新員工資訊 * @param emp */ void update(Employee emp);
/** * 根據主鍵刪除 * @param id */ void delete(int id);
/** * 根據主鍵查詢 * @param id * @return */ Employee findById(int id);
/** * 查詢全部 * @return */ List<Employee> getAll();
/** * 根據員工名稱條件查詢 * @param employeeName * @return */ List<Employee> getAll(String employeeName);
} |
Dao實現、service省略 |
….. |
|
轉自:傳智播客課堂
相關文章
- SSM專案使用攔截器實現登入驗證功能SSM
- 前端架構之vue+axios 前端實現登入攔截(路由攔截、http攔截)前端架構VueiOS路由HTTP
- IOS 手勢攔截iOS
- 推薦:一個適合於Python新手的入門練手專案Python
- SpringBoot 整合 Shiro 實現登入攔截Spring Boot
- SpringBoot 2.X配置登入攔截器Spring Boot
- 前後端實現登入token攔截校驗後端
- springboot2.0+jsp+登入攔截器Spring BootJS
- 又一個Rust練手專案-wssh(SSH over Websocket Client)RustWebclient
- go+vue入門專案練手GoVue
- gin練手專案
- 前端練手專案前端
- vue通過vue-router攔截實現登入驗證Vue
- SpringMVC(六) 攔截器和使用者登入校驗SpringMVC
- 推薦一些適合新手練手的Python專案Python
- 長沙前端培訓機構:新手練手前端專案實戰前端
- python練手經典100例-推薦幾個適合新手練手的Python專案《python入門例子》Python
- Go 語言入門練手專案推薦Go
- Spring Boot專案中如何定製攔截器Spring Boot
- struts2.0攔截器(實現未登入的使用者不能訪問系統的頁面)
- SpringBoot 手寫攔截器Spring Boot
- Springboot中登入後關於cookie和session攔截案例Spring BootCookieSession
- 攔截器,攔截器棧總結
- SpringCache框架載入/攔截原理SpringGC框架
- 小程式手動實現路由攔截路由
- Flutter練手專案--玩安卓Flutter安卓
- 前端練手專案小結前端
- SpringBoot-shiro登入攔截.使用者認證.整合MybatisSpring BootMyBatis
- 鴻蒙Navigation攔截器實現頁面跳轉登入鑑權方案鴻蒙Navigation
- 長沙前端培訓機構:10個適合新手練手的前端專案前端
- View的載入原理和攔截方式View
- web前端佈局練手專案Web前端
- Vue練手專案(包含typescript版本)VueTypeScript
- 10個Python練手專案Python
- react_新手入門教程05——react + express + mongoose 實現CURDReactExpressGo
- SSH遠端登入原理
- ssh免密登入原理
- SSH免密碼登入密碼