ssh新手練手專案——員工curd操作和未登入攔截

IT_COOKIE_SAM發表於2016-12-23

三大框架:

Struts框架

1. params攔截器: 請求資料封裝

2. 型別轉換/資料處理

3. struts配置

4. 檔案上傳/下載/國際化處理

5. 資料效驗/攔截器

6. Ognl表示式

7. 資料回顯/模型驅動/防止表單重複提交

 

Hibernate框架

1. Api簡介

2. 對映

多對一/一對多:   部門與員工

多對多/一對一

集合對映/元件對映/繼承對映

3. Hibernate 快取

4. 常用屬性:inverse/lazy/cascade

5. 物件狀態:臨時/持久/遊離

 

Spring框架

1Spring IOC容器 【Inversion Of Control,即控制反轉】

建立物件/處理物件依賴關係

2Aop程式設計

3Spring宣告式事務管理

4) 框架整合

SpringStruts

SpringHibernate

5Springjdbchibernate操作的封裝

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  首頁列表

http://localhost:8080/專案    首頁列表

 

 

優化部分:

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省略

…..

 

 

轉自:傳智播客課堂

相關文章