Eclipse+Maven搭建Struts2+Spring+Hibernate專案
建立該專案使用的資料庫及其資料表:
CREATE TABLE `t_user` (
`userId` int(11) NOT NULL DEFAULT '0',
`userName` varchar(25) COLLATE utf8_bin DEFAULT NULL,
`userPassword` varchar(25) COLLATE utf8_bin DEFAULT NULL,
`userEmail` varchar(30) COLLATE utf8_bin DEFAULT NULL,
PRIMARY KEY (`userId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
接一下來開始搭建專案
在該工程下,只需要修改“pom.xml”檔案,在該檔案中新增所需要的資源座標即可:
例如如下所示,自己也可以新增自己專案中所需要的資源。
<!-- 集中定義依賴的版本號 -->
<properties>
<junit.version>4.12</junit.version>
<struts.version>2.3.14</struts.version>
<hibernate.version >4.3.8.Final</hibernate.version>
<mysql.version>5.1.25</mysql.version>
<druid.version>1.0.9</druid.version>
<spring.version>4.1.6.RELEASE</spring.version>
<slf4j.version>1.6.6</slf4j.version>
<log4j.version>1.2.12</log4j.version >
<jackson.version>2.4.2</jackson.version>
<jdeis.version>2.7.2</jdeis.version>
<commons-lang3.version>3.3.2</commons-lang3.version>
<commons-io.version>1.3.2</commons-io.version>
<commons-net.version>3.3</commons-net.version>
<jstl.version>1.2</jstl.version>
<servlet-api.version>2.5</servlet-api.version>
<jsp-api.version>2.0</jsp-api.version>
</properties>
<!-- 只定義依賴版本,不實際依賴 -->
<dependencyManagement>
<dependencies>
<!-- Apache工具元件 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>${commons-lang3.version}</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
<version>${commons-io.version}</version>
</dependency>
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>${commons-net.version}</version>
</dependency>
<!-- Jackson Json處理工具包 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
<!-- 單元測試 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<!-- 日誌檔案管理包 -->
<!-- log start -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
</dependency>
<!-- log end -->
<!-- 連線池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid.version}</version>
</dependency>
<!-- MySql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<!-- spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
</dependency>
<!--struts2依賴 -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>${struts.version}</version>
<exclusions>
<exclusion>
<groupId>javassist</groupId>
<artifactId>javassist</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
<version>${struts.version}</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-convention-plugin</artifactId>
<version>${struts.version}</version>
</dependency>
<!-- hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
</dependency>
<!-- jsp相關 -->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>${jstl.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>${servlet-api.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<version>${jsp-api.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<!-- 資原始檔拷貝外掛 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.7</version>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!-- java編譯外掛 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
<pluginManagement>
<plugins>
<!-- 配置Tomcat外掛 -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
</plugin>
</plugins>
</pluginManagement>
</build>
接下來:(參照上步)new->other->搜尋maven->maven project->勾選“Create a simple project(skip archetype selection)”->next
該專案中,我們也只是修改“pom.xml”檔案,該檔案下,只需要定義公共的資源即可(也就是其餘工程都能用到的資源),檔案修改如下:
<!-- jar包的依賴 -->
<dependencies>
<!-- Apache工具元件 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
</dependency>
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
</dependency>
<!-- Jackson Json處理工具包 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<!-- 單元測試 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<!-- 日誌處理 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
</dependencies>
接下來(參照上步):new->other->搜尋maven->maven project->勾選“Create a simple project(skip archetype selection)”->next
修改其“pom.xml”檔案,此處添加了 tomcat7外掛,以及新增依賴“mssh-common”中的資源
<!-- 依賴管理 -->
<dependencies>
<dependency>
<groupId>com.zh</groupId>
<artifactId>mssh-common</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<!-- 配置外掛 -->
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<configuration>
<port>8080</port>
<path>/</path>
</configuration>
</plugin>
</plugins>
</build>
接下來建立SSH框架各層(web層、service層、dao層以及pojo類的定義)
① 定義pojo
右鍵點選“mssh-manager”->other->“搜尋maven”->選擇“Maven Module” ->next
在該工程下建立User.java
package com.zh.pojo;
public class User {
private Integer userId;
private String userName;
private String userPassword;
private String userEmail;
get/set省略......
}
② 定義dao層
步驟同①,名稱為“mssh-mananer-dao”
修改“pom.xml”檔案,新增“mssh-manager-pojo”依賴,並新增“Hibernate”和“MySql”依賴。配置如下:
<dependencies>
<dependency>
<groupId>com.zh</groupId>
<artifactId>mssh-manager-pojo</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<!--hibernate依賴 -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
</dependency>
<!-- 連線池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
</dependency>
<!-- MySql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>
在該工程下,建立dao介面
介面定義如下:
package com.zh.dao;
import java.util.List;
import org.springframework.orm.hibernate4.support.HibernateDaoSupport;
import com.zh.pojo.User;
public class UserDao extends HibernateDaoSupport {
@SuppressWarnings("unchecked")
public User findAllUser() {
String hql = "from User where userId = 1";
List<User> list = (List<User>) this.getHibernateTemplate().find(hql);
if (list != null && list.size() > 0) {
return list.get(0);
}
return null;
}
}
接下來定義對映檔案User.hbm.xml
User.hbm.xml定義如下:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.zh.pojo.User" table="t_user" catalog="ssh">
<id name="userId">
<column name="userId" />
<generator class="native" />
</id>
<property name="userName"><column name="userName"/></property>
<property name="userPassword"><column name="userPassword"/></property>
<property name="userEmail"><column name="userEmail"/></property>
</class>
</hibernate-mapping>
③ 定義service層
步驟同①和②,名稱為“mssh-mananer-service”
修改“pom.xml”檔案,新增“mssh-manager-dao”依賴以及“Spring”依賴。配置如下:
<!-- 依賴管理 -->
<dependencies>
<dependency>
<groupId>com.zh</groupId>
<artifactId>mssh-manager-dao</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<!-- spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
</dependency>
</dependencies>
在該工程建立service介面以及其實現類,如下所示:
介面以及實現類定義如下:
UserService.java
public interface UserService {
User findAllUser();
}
UserServiceImpl.java
package com.zh.service;
import javax.transaction.Transactional;
import com.zh.dao.UserDao;
import com.zh.pojo.User;
@Transactional
public class UserServiceImpl implements UserService {
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
@Override
public User findAllUser() {
return userDao.findAllUser();
}
}
④ 定義web層
步驟同①和②和③,名稱為“mssh-manager-web”
注意:Packaging選擇war
修改“pom.xml”檔案,新增“mssh-manager-service”依賴,以及jsp等的依賴。配置如下:
<!-- 依賴管理 -->
<dependencies>
<dependency>
<groupId>com.zh</groupId>
<artifactId>mssh-manager-service</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<!-- jsp相關 -->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<scope>provided</scope>
</dependency>
<!--struts2依賴 -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<exclusions>
<exclusion>
<groupId>javassist</groupId>
<artifactId>javassist</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-convention-plugin</artifactId>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.6.8</version>
</dependency>
</dependencies>
建立action
UserAction.java配置如下:
package com.zh.action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.zh.pojo.User;
import com.zh.service.UserServiceImpl;
public class UserAction extends ActionSupport implements ModelDriven<User>{
private static final long serialVersionUID = 1L;
private UserServiceImpl userService;
public void setUserService(UserServiceImpl userService) {
this.userService = userService;
}
private User user = new User();
@Override
public User getModel() {
return user;
}
public String findById() {
User user = userService.findAllUser();
ActionContext.getContext().getSession().put("user", user);
return "success";
}
}
建立hibernate、spring、struts2、log4j等的配置檔案。如下所示:
jdbc.properties檔案配置如下:
jdbc_driverClassName=com.mysql.jdbc.Driver
jdbc_url=jdbc:mysql://localhost:3306/自己的資料庫名稱
jdbc_username=資料庫使用者
jdbc_password=資料庫密碼
applicationContext-dao.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.sp