1. 程式人生 > >使用maven工程整合SSH框架詳細教程(Maven+Struts2+Spring+Hibernate)

使用maven工程整合SSH框架詳細教程(Maven+Struts2+Spring+Hibernate)

1、第一步:建立maven工程,在pom.xml檔案中匯入需要的jar包依賴:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.zwp</groupId>
  <artifactId>ssh</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  
  	<!-- 定義屬性 -->
	<properties>
		<spring.version>4.2.4.RELEASE</spring.version>
		<hibernate.version>5.0.7.Final</hibernate.version>
		<struts.version>2.3.24</struts.version>
	</properties>

	<!-- 鎖定版本,struts2-2.3.24、spring4.2.4、hibernate5.0.7 -->
	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-context</artifactId>
				<version>${spring.version}</version>
			</dependency>
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-aspects</artifactId>
				<version>${spring.version}</version>
			</dependency>
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-orm</artifactId>
				<version>${spring.version}</version>
			</dependency>
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-test</artifactId>
				<version>${spring.version}</version>
			</dependency>
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-web</artifactId>
				<version>${spring.version}</version>
			</dependency>
			<dependency>
				<groupId>org.hibernate</groupId>
				<artifactId>hibernate-core</artifactId>
				<version>${hibernate.version}</version>
			</dependency>
			<dependency>
				<groupId>org.apache.struts</groupId>
				<artifactId>struts2-core</artifactId>
				<version>${struts.version}</version>
			</dependency>
			<dependency>
				<groupId>org.apache.struts</groupId>
				<artifactId>struts2-spring-plugin</artifactId>
				<version>${struts.version}</version>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<!-- 依賴管理 -->
	<dependencies>
		<!-- spring -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aspects</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-orm</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-test</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-web</artifactId>
		</dependency>

		<!-- 匯入 struts2 -->
		<dependency>
			<groupId>org.apache.struts</groupId>
			<artifactId>struts2-core</artifactId>
		</dependency>
		<dependency>
			<groupId>org.apache.struts</groupId>
			<artifactId>struts2-spring-plugin</artifactId>
		</dependency>

		<!-- hibernate -->
		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-core</artifactId>
		</dependency>

		<!-- 資料庫驅動 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.6</version>
			<scope>runtime</scope>
		</dependency>
		<!-- c3p0 -->
		<dependency>
			<groupId>c3p0</groupId>
			<artifactId>c3p0</artifactId>
			<version>0.9.1.2</version>
		</dependency>

		<!-- servlet jsp -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>servlet-api</artifactId>
			<version>2.5</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jsp-api</artifactId>
			<version>2.0</version>
			<scope>provided</scope>
		</dependency>

		<!-- 日誌 -->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>1.7.2</version>
		</dependency>
		<!-- 單元測試 -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
			<scope>test</scope>
		</dependency>
		<!-- jstl -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
			<version>1.2</version>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<!-- 設定編譯版本為1.8 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
					<encoding>UTF-8</encoding>
				</configuration>
			</plugin>
			
				<!-- 預設的tomcat6不支援jdk1.8,訪問頁面時報錯:頁面編譯成.class失敗
				 解決:配置tomcat7外掛:mvn命令改為:tomcat7:run -->
			<plugin>
				<groupId>org.apache.tomcat.maven</groupId>
				<artifactId>tomcat7-maven-plugin</artifactId>
				<version>2.2</version>
				<configuration>
					<url>http://127.0.0.1:8080/manager/text</url>
					<server>tomcat8</server>
					<path>/ssh</path>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

2、第二步 搭建struts2環境:

(1)建立action,建立struts.xml配置檔案,配置action:

//Customer的web層:
public class CustomerAction extends ActionSupport {
	//根據主鍵查詢:
	public String findOne() throws Exception{
		return SUCCESS;
	}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
	<package name="demo" extends="struts-default" namespace="/">
                <!-- 和spring整合後,action將交由spring建立,class的值寫bean的id值 -->
		<action name="customerAction_*" class="com.zwp.web.CustomerAction" method="{1}">
			<result name="success">/index.jsp</result>
		</action>
	</package>
</struts>

	

(2)配置struts2的過濾器(web.xml檔案):

	<!-- 配置strut2過濾器 -->
	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

3、第三步 搭建hibernate環境:

(1)建立實體類:

//Customer實體類:
public class Customer {
	
	private String custId;
	private String custName;
	private String address;
	
	public String getCustName() {
		return custName;
	}
	public void setCustName(String custName) {
		this.custName = custName;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public String getCustId() {
		return custId;
	}
	public void setCustId(String custId) {
		this.custId = custId;
	}
}

(2)配置實體類和資料庫表對映關係:Customer.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC 
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<!-- 建立對映配置檔案 -->
<hibernate-mapping>
	<class name="com.zwp.domain.Customer" table="t_cust">
		<id name="custId" column="custId">
			<generator class="uuid"></generator>		
		</id>
		<property name="custName" column="custName"></property>
		<property name="address" column="address"></property>
	</class>
</hibernate-mapping>

(3)建立hibernate核心配置檔案:hibernate.cfg.xml

- 引入對映配置檔案

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
	<session-factory>	
	
		<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
		<property name="hibernate.show_sql">true</property>
		<property name="hibernate.format_sql">true</property>
		<property name="hibernate.hbm2ddl.auto">update</property>
		
		<!-- 把對映檔案放到核心配置檔案中 -->
		<mapping resource="com/zwp/domain/Customer.hbm.xml" />	
	</session-factory>
</hibernate-configuration>

4、第四步 搭建spring環境:

(1)建立spring核心配置檔案:applicationContext.xml

(2)讓spring配置檔案在伺服器啟動時候載入(web.xml檔案)

- 配置監聽器

- 指定spring配置檔案位置

<!-- 配置監聽器,並指定伺服器在啟動的時候載入配置檔案 -->
<listener>
	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
	<param-name>contextConfigLocation</param-name>
	<param-value>classpath:applicationContext.xml</param-value>
</context-param>

5、第五步 struts2和spring整合:

(1)把action在spring配置(action多例項的):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:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
		http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context
		http://www.springframework.org/schema/context/spring-context.xsd
		http://www.springframework.org/schema/aop
		http://www.springframework.org/schema/aop/spring-aop.xsd
		http://www.springframework.org/schema/tx
		http://www.springframework.org/schema/tx/spring-tx.xsd"
	
	<!-- 建立物件與物件注入: -->
	<bean id="customerAction" class="com.zwp.web.CustomerAction" scope="prototype"></bean>
		
</beans>

(2)在struts.xml中action標籤class屬性裡面的值該寫成 bean的id值:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">	
<struts>
	<package name="demo" extends="struts-default" namespace="/">
		<!-- 將action的建立交由spring,class的值寫bean的id值 -->
		<action name="customerAction_*" class="customerAction" method="{1}">
			<result name="success">/index.jsp</result>
		</action>
	</package>
</struts>

6、第六步 spring和hibernate整合:

(1)把hibernate核心配置檔案中資料庫配置,在spring裡面配置:

(2)把hibernate的sessionFactory在spring配置

        <!-- 載入屬性檔案 -->	
	<context:property-placeholder location="classpath:db.properties"/>
	<!-- 配置連線池 -->
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<property name="driverClass" value="${jdbc.driver}"></property>
		<property name="jdbcUrl" value="${jdbc.url}"></property>
		<property name="user" value="${jdbc.username}"></property>
		<property name="password" value="${jdbc.password}"></property>
	</bean>
	
	<!-- 把hibernate的sessionFactory在spring配置檔案中建立 -->
	<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
		<!-- 注入dataSource屬性 -->
		<property name="dataSource" ref="dataSource"></property>
		<!-- 指定hibernate核心配置檔案的位置 -->
		<property name="configLocations" value="classpath:hibernate.cfg.xml"></property>
	</bean>

db.properties檔案:

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///ssh
jdbc.username=root
jdbc.password=admin

7、第七步 完成互相注入關係(在dao裡面使用hibernateTemplate):

(1)在dao注入hibernateTemplate物件

(2)在hibernateTemplate物件中注入sessionFactory

(3)在service層注入dao層物件

(4)在web層注入service層物件

//Customer的Dao層介面
public interface CustomerDao {
	Customer findOne(String custId);
}
//Customer的Dao層介面實現類,繼承HibernateDaoSupport,該類已經注入了hibernateTemplate物件。
public class CustomerDaoImpl extends HibernateDaoSupport implements CustomerDao {
	@Override
	public Customer findOne(String custId) {
		return this.getHibernateTemplate().get(Customer.class, custId);
	}
}
//Customer的Service層介面:
public interface CustomerService {
	Customer findOne(String custId);
}
//Customer的Service介面實現類:
public class CustomerServiceImpl implements CustomerService{
	
	//注入CustomerDao
	private CustomerDao customerDao;
	public void setCustomerDao(CustomerDao customerDao) {
		this.customerDao = customerDao;
	}
	
	public Customer findOne(String custId) {
		return customerDao.findOne(custId);
	}
}
//Customer的web層:
public class CustomerAction extends ActionSupport {

	//注入CustomerService物件;
	private CustomerService customerService;
	public void setCustomerService(CustomerService customerService) {
		this.customerService = customerService;
	}
	
	//屬性注入:
	private  String custId;
	public void setCustId(String custId) {
		this.custId = custId;
	}
	
	//根據主鍵查詢:
	public String findOne() throws Exception{
		Customer customer = customerService.findOne(custId);
		ActionContext.getContext().getValueStack().push(customer);
		
		return SUCCESS;
	}
}

applicationContext.xml:

        <!-- 開啟事務註解:以下物件的建立和注入,可以使用註解建立 -->
	<!-- 第一步:開啟註解驅動;第二步:在類上使用註解 -->
        <!-- <tx:annotation-driven transaction-manager="transactionManager"/> -->
	
	<!-- 建立物件與物件注入: -->
	<bean id="customerDao" class="com.zwp.dao.impl.CustomerDaoImpl">
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>
	<bean id="customerService" class="com.zwp.service.impl.CustomerServiceImpl">
		<property name="customerDao" ref="customerDao"></property>
	</bean>
	<bean id="customerAction" class="com.zwp.web.CustomerAction" scope="prototype">
		<property name="customerService" ref="customerService"></property>
	</bean> 

(5)之前在hibernate配置與本地執行緒繫結的session:

<!-- 配置與本地執行緒繫結的session -->
<property name="hibernate.current_session_context_class">thread</property>

在hibernate與spring整合後,不需要在spring裡面配置與本地執行緒繫結的session。

8、第八步 配置事務:(applicationContext.xml)

	<!-- 配置事務 -->
	<bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
		<!-- 注入sessionFactory,因為sessionFactory裡面包含了dataSource物件 -->
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>
	
	<!-- xml方式管理事務: -->
	<!-- 配置通知:具體增強邏輯 -->
	<tx:advice id="txAdvice">
		<tx:attributes>
			<!-- 匹配業務類中方法名稱 -->
			<tx:method name="save*"/>
			<tx:method name="update*"/>
			<tx:method name="delete*"/>
			<tx:method name="find*" read-only="true"/>
			<tx:method name="*"/>
		</tx:attributes>
	</tx:advice>
	<!-- 配置aop -->
	<aop:config>
		<!-- 配置切點:具體哪些方法要增強(真正被增強的方法) -->
		<aop:pointcut expression="execution(* com.zwp.serviec.*.*(..))" id="cut"/>
		<!-- 配置切面:將增強邏輯作用到切點 -->
		<aop:advisor advice-ref="txAdvice" pointcut-ref="cut"/>
	</aop:config>

9、第九步 編寫成功頁面index.jsp:

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="s"  uri="/struts-tags"%>
<!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>主頁</title>
</head>
<body>
	<!-- 取出push進值棧裡面的值 -->
	<s:property value="custName"/>
	歡迎光臨
</body>
</html>

10、第十步  啟動並測試:

(1)啟動maven專案輸入命令:tomcat7:run。

(3)出現以下介面和資料則代表成功:

附:專案的工程結構:

相關推薦

使用maven工程整合SSH框架詳細教程Maven+Struts2+Spring+Hibernate

1、第一步:建立maven工程,在pom.xml檔案中匯入需要的jar包依賴: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema

maven工程搭建ssm框架詳細開發流程

一.開啟eclipse建立maven工程 這裡不多說了 二.在pom.xml里加入jar包 注意不同版本之間的jar包可能會有衝突,也不要全都加最新版本的jar包,到時解決起來很麻煩 直接點選官網搜尋jar包名下載相應jar包 基本所需的jar包給大家發出來

SSH框架整合過程Struts2+Spring+Hibernate

在學習java框架的過程中,我總結過如下文章:在將三大框架都學習一遍之後,再來看看如何整合SSH框架。先來看看SSH框架如何配合使用,如圖所示:整合步驟:1、匯入所需jar包。2、搭建struts2環境

SSH三大框架的搭建整合struts2+spring+hibernate

SSH說的上是javaweb經典框架,不能說100%要會SSH框架,但是大部分公司都在用,說到框架,都會提到ssh吧,這次就以很簡單的註冊例子來整合SSH框架。整合框架要注意的是先每個框架單獨測通後再整合,不然整合後出現問題比較難排查。 環境:windows

springboot整合apache ftpserver詳細教程看這一篇就夠了

原創不易,如需轉載,請註明出處https://www.cnblogs.com/baixianlong/p/12192425.html,否則將追究法律責任!!! 一、Apache ftpserver相關簡介   Apache FtpServer是100%純Java FTP伺服器。它被設計為基於當前可用的開放

SSH整合Struts2+Spring+Hibernate

iso 實體 action sun xmlns prop ftw .com efi 為了方便本次使用的是Myeclipse8.5 一、創建web工程,搭建Struts框架開發環境: 步驟1::導入struts框架所需的jar包 步驟2:在web.xml中配置struts2

後臺播放音樂,防止iphone進入休眠,超詳細教程可製作音樂鬧鐘

//  後臺播放音樂 共有4個步驟,一個注意事項 步驟一:在resource資料夾下找到該專案的info.plist新增一個 Required background modes 的陣列 並在下面新增一個元素,其值為 App plays audio 步驟二:

利用AbstractRoutingDataSource實現動態資料來源切換 一、Spring+Hibernate

package com.hoo.framework.spring.interceptor; import java.lang.reflect.Proxy; import org.aopalliance.intercept.MethodInterceptor; import org.aopalli

SSM框架整合Maven工程整合Spring+Springmvc+Mybatis(詳細教程,附程式碼)

一、基本概念 1、Spring Spring是一個開源框架,Spring是於2003 年興起的一個輕量級的Java 開發框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中闡述的部分

SSM三大框架整合詳細教程Spring+SpringMVC+MyBatis

json轉換 需要 acc log4 err ppi junit測試 日誌 enc 使用 SSM ( Spring 、 SpringMVC 和 Mybatis )已經有三個多月了,項目在技術上已經沒有什麽難點了,基於現有的技術就可以實現想要的功能,當然肯定有很多可以改進的地

Idea搭建整合SSH框架Maven管理

<strong>1.開發環境</strong>: IntelliJ IDEA: 2016 Maven :3.0x Java 8 2.pom.xml <properties> <project.build.sourceEncoding

SSM整合教程MAVEN,相當的詳細,細節

目錄 六,控制層測試和檢視層測試 七,注意事項 九,關於資料庫:自己建立一個數據庫,建立表,以及修改資料來源。 前言:跟著我的思路走,應該可以成功的完成一個SSM框架的整合   使用maven來構建專案的話,首先不用自己去導包之類的,使用

SSM三大框架整合詳細教程Spring+SpringMVC+MyBatis)

Spring Springmvc Mybatis--ssm的整合 一、搭建環境sts工具:   根據上圖建立springproject   上圖為專案結構 在此基礎上進行搭建ssm專案

SSM三大框架整合詳細教程Spring+SpringMVC+MyBatis【轉】

 使用SSM(Spring、SpringMVC和Mybatis)已經有三個多月了,專案在技術上已經沒有什麼難點了,基於現有的技術就可以實現想要的功能,當然肯定有很多可以改進的地方。之前沒有記錄SSM整合的過程,這次剛剛好基於自己的一個小專案重新搭建了一次,而且比專案搭建的

實戰篇SSM三大框架整合詳細教程Spring+SpringMVC+MyBatis

<pre class="html" name="code" snippet_file_name="blog_20170402_1_8023453" code_snippet_id="2295822"><span style="font-size:14px;"><project x

ThinkJS框架入門詳細教程開發環境

install devel 版本 開發 conf doc 瀏覽器 打開 變量 一、前端標配環境 1、nodeJS正確安裝,可以參考:http://www.cnblogs.com/chengxs/p/6221393.html 2、git正確安裝,可以參考:http://w

ThinkJS框架入門詳細教程新手入門項目

logs connect 項目 目錄 itl 合並 sql文件 生產 js框架 一、準備工作 參考前一篇:ThinkJS框架入門詳細教程(一)開發環境 安裝thinkJS命令 npm install -g think-cli 監測是否安裝成功 thin

Struts2+Spring+Hibernate實現員工管理增刪改查功能ssh框架整合

pri support scrip ext ack efault ring src 兩張 前言 轉載請標明出處:http://www.cnblogs.com/smfx1314/p/7795837.html 本項目是我寫的一個練習,目的是回顧ssh框架的整合以及

使用netbeans 搭建maven工程 整合spring springmvc框架

使用netbeans7.4 自帶的tomcat7.0 所以jdk選擇7.xx 等待生成空的工程   新建web.xml 在pom.xml中新增spring的引用 1 <dependency> 2 <groupId&g

maven整合ssh框架

一、搭建struts2的環境 (1)建立struts2配置檔案:struts.xml (2)  在web.xml中配置struts2的核心過濾器 二、搭建spring環境 (1)建立spring配置檔案applicationContext.xml (2)在web.x