SSH框架整合,最基礎新建項目開始(詳細)

SSH框架整合,最基礎開始(詳細)

1.首先先創建一個動態web項目。
圖片描述

2.一路點擊next最後記得勾選創建創建xml文檔選項。
圖片描述

3.創建完成之後首先添加本次項目所需要的jar包。爲避免在找jar過程中的麻煩,我已經所有jar包上傳至百度網盤。
鏈接:http://pan.baidu.com/s/1eRLnf6i 密碼:vc2a

4.將所有jar包添加至如圖的lib目錄下。
圖片描述

5.選中所有jar包,右鍵BuildPath–>Configure buil path。

6.添加完成之後打開web.xml文檔,添加Struts2的核心過濾器。
圖片描述

7.中間紅框標明的那一段,我們把鼠標放上面,按住Ctrl然後點擊,之後彈出這個頁面就說明我們添加正確。
圖片描述
8.再後續添加Spring監聽器。
圖片描述

9.同理如此添加spring監聽器。也將鼠標置於org.springframework.web.context.ContextLoaderListener上面,按住ctrl點擊,彈出這個頁面就說明添加正確,那個applicationContext.xml後續進行創建。
圖片描述

10.添加Spring容器,創建appliactionContext.xml文件。
圖片描述

文件取名爲applicationContext.xml
點擊next選中aop、beans、context類別
圖片描述

11.再創建一個普通xml文件,與applicationContext.xml放在同一個文件夾,文件結構如下圖所示
圖片描述

12.然後編輯struts.xml基本文件,我是從struts工具包中拷貝過來的xml文件再做修改。struts.xml文件先這樣後續再進行修改
圖片描述

13.在webContent文件夾下先創建一個普通jsp文件,取名index.jsp。在內部先添加一個連接,先打通struts跳轉邏輯再後續添加內容,這個頁面只用添加一行內容就不添加圖片了。

<a href="employee">跳轉</a>

14.接下來創建action類,再src目錄下先創建com.imooc.action包,由於這次使用ssh框架來搭建員工管理系統,所以先創建EmployeeAction類。action類中新建一個save方法讓save方法直接返回success字符串。
圖片描述

15.繼續修改struts.xml文件,添加跳轉的邏輯。看圖知肯定還需要創建一個success.jsp頁面用來提示跳轉成功。隨便在success.jsp頁面隨便輸點東西,自己認識就好。
圖片描述
圖片描述

16.接下來測試struts跳轉是否成功。將項目部署到tomcat容器中,在開啓項目的時候出錯了,提示找不到applicationContext.xml。經查看是我在創建applicationContext.xml文件過程中,文件名少寫了一個a,添加之後運行正常。順利打開indes.jsp頁面。
圖片描述

17.點擊跳轉按鈕,跳轉到success.jsp頁面,至此struts順利打通。
圖片描述

18.接下來我們整合spring。在整合spring之前我們先來創建兩個類。分別是EmployeeService與EmployeeDao,在這裏我並沒有使用接口的方式,如果想練習也可以使用接口。
圖片描述
再分別編輯action,service與dao類。
action:

package com.imooc.action;

import com.imooc.service.EmployeeService;
/**
 * 保存員工的action
 * @author ha
 *
 */
public class EmployeeAction {

    //使用spring傳入EmployeeService實例
    EmployeeService employeeService;

    public void setEmployeeService(EmployeeService employeeService) {
        this.employeeService = employeeService;
    }

    public String save(){
        System.out.println("action執行了");
        employeeService.saveEmployee();

        return "success";
    }
}

service:

package com.imooc.service;

import com.imooc.dao.EmployeeDao;

/**
 * 保存員工service類
 * @author ha
 *
 */
public class EmployeeService {

    //使用spring自動注入EmployeeDao實例
    EmployeeDao employeeDao;

    public void setEmployeeDao(EmployeeDao employeeDao) {
        this.employeeDao = employeeDao;
    }

    public void saveEmployee() {
        // TODO Auto-generated method stub
        System.out.println("service執行了");
        employeeDao.saveEmployee();

    }

}

dao:

package com.imooc.dao;

public class EmployeeDao {

    public void saveEmployee() {
        // TODO Auto-generated method stub
        System.out.println("dao層執行了");
    }

}

19.接下來編輯applicationContext.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">

    <!-- 創建dao -->
    <bean id="employeeDao" class="com.imooc.dao.EmployeeDao">

    </bean>
    <!-- 創建service 自動注入dao -->
    <bean id="employeeService" class="com.imooc.service.EmployeeService">
        <property name="employeeDao" ref="employeeDao"></property>
    </bean>
    <!-- 創建action -->
    <bean id="employeeAction" class="com.imooc.action.EmployeeAction"> 
        <property name="employeeService" ref="employeeService"></property>
    </bean>

</beans>

20.然後進行測試。試試,action,service,dao三層是否可以正常運行。控制檯正常打印出三層分別執行。說明spring配置文件並未書寫錯誤。
圖片描述

21.整合hibernate。首先需要創建一個實體類,員工一般會有部門信息,但我這爲了簡單並沒有寫部門信息,只包含:用戶ID,用戶名,密碼,性別,將實體類放於新建的包com.imooc.entity下;
Employee:

package com.imooc.entity;

/**
 * 員工實體類
 * @author ha
 *
 */
public class Employee {

    private int empId;
    private String empName;
    private String password;
    private String gender;
    public int getEmpId() {
        return empId;
    }
    public void setEmpId(int empId) {
        this.empId = empId;
    }
    public String getEmpName() {
        return empName;
    }
    public void setEmpName(String empName) {
        this.empName = empName;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getGender() {
        return gender;
    }
    public void setGender(String gender) {
        this.gender = gender;
    }

}

22.實體類寫完之後,我們在創建hibernate映射文件hbm.xml。在我們剛剛創建的com.imooc.entity包上右鍵新建選擇hbm文件。
圖片描述

一路點擊next,最後finish,這裏爲hibernate自動生成的hbm文件,我們將id的生成方法改爲native。到時候這個文件會幫我們自動生成數據庫文件。

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2017-7-2 17:08:46 by Hibernate Tools 3.5.0.Final -->
<hibernate-mapping>
    <class name="com.imooc.entity.Employee" table="EMPLOYEE">
        <id name="empId" type="int">
            <column name="EMPID" />
            <generator class="native" />
        </id>
        <property name="empName" type="java.lang.String">
            <column name="EMPNAME" />
        </property>
        <property name="password" type="java.lang.String">
            <column name="PASSWORD" />
        </property>
        <property name="gender" type="java.lang.String">
            <column name="GENDER" />
        </property>
    </class>
</hibernate-mapping>

23.接下來在spring配置文件中配置數據庫的相關屬性,這裏也可以將連接數據庫的信息單獨寫成一個properties文件。將下面這些內容添加至spring配置文件的beans標籤之間。

<!-- 配置hibernate屬性 -->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>
        <!-- 配置hibernate屬性 -->
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dielect">org.hibernate.dialect.MySQLDialect</prop>
                <prop key="hibernate.show_sql"> true</prop>
                <prop key="hibernate.format_sql">true</prop>
                <prop key="hibernate.hbm2ddl.auto">update</prop>
            </props>
        </property>
        <!-- 加載映射文件 -->
        <property name="mappingResources">
            <list>
                <value>com/imooc/entity/Employee.hbm.xml</value>
            </list>
        </property>

    </bean>

24.驗證這些配置文件是否配置無誤。我們現在數據庫中先創建一個ssh-test數據庫。然後部署這個項目,如果自動生成了數據表則配置正確。我這裏成功生成employee的數據表,表明數據庫連接正常,配置成功。
圖片描述

25.接下來我們嘗試保存一個員工信息。先更改action類的編寫。這裏我們讓action類繼承actionsupport類,實現modelDriven接口。實現model Driven接口,需要實現getModel方法,這樣可以傳遞頁面的員工信息。
action類:

package com.imooc.action;

import com.imooc.entity.Employee;
import com.imooc.service.EmployeeService;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
/**
 * 保存員工的action
 * @author ha
 *
 */
public class EmployeeAction extends ActionSupport implements ModelDriven<Employee>{

    Employee employee = new Employee();

    @Override
    public Employee getModel() {
        // TODO Auto-generated method stub
        return employee;
    }

    //使用spring傳入EmployeeService實例
    EmployeeService employeeService;

    public void setEmployeeService(EmployeeService employeeService) {
        this.employeeService = employeeService;
    }

    public String save(){
        System.out.println("action執行了");
        employeeService.saveEmployee();

        return "success";
    }

}

26.這時候就需要修改service和dao的保存方法了。修改dao類的同時我們需要給dao注入一個sessionFactory對象,只需要在spring配置文件種配置一下即可。添加這項內容即可。<property name="sessionFactory" ref="sessionFactory"></property>
圖片描述
service類:

package com.imooc.service;

import com.imooc.dao.EmployeeDao;
import com.imooc.entity.Employee;

/**
 * 保存員工service類
 * @author ha
 *
 */
public class EmployeeService {

    //使用spring自動注入EmployeeDao實例
    EmployeeDao employeeDao;

    public void setEmployeeDao(EmployeeDao employeeDao) {
        this.employeeDao = employeeDao;
    }

    public void saveEmployee(Employee employee) {
        // TODO Auto-generated method stub
        System.out.println("service執行了");
        employeeDao.saveEmployee(employee);

    }

}

dao類:

package com.imooc.dao;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.imooc.entity.Employee;

public class EmployeeDao extends HibernateDaoSupport{

    public void saveEmployee(Employee employee) {
        // TODO Auto-generated method stub

        System.out.println("dao層執行了");
        this.getHibernateTemplate().save(employee);
    }

}

27.然後測試員工保存方法。在初始index.jsp頁面上寫一個form表單,然後提交員工信息,查看是否可以保存至數據庫。這裏是index.jsp頁面。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>

<form action="employee" method="post">
    用戶名:<input type="text" name="empName"/><br>
    密碼:<input type="password" name="password"/><br>
    性別:<input type="text" name="gender"/><br>
    <input type="submit" value="提交"/>
</form>
</body>
</html>

28.部署項目運行。填寫員工信息。
圖片描述

29.打開數據庫查看信息是否存在。
圖片描述

30.經驗證數據庫中的信息與我們在頁面填寫的信息一致。
這個項目我已經上傳至百度雲,可以下載源碼觀看。鏈接:http://pan.baidu.com/s/1mhXT2v2 密碼:n9cw
此次SSH整合項目完成,實現了保存員工到數據庫的方法,然後便可以進行增刪改查的編寫。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章