---------------------siwuxie095

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

Maven 项目整合 SSH 框架

 
 

 
 

创建
Maven 项目 maven-ssh,项目目录结构如下:

 
 

 
 

 
 

 
 


src/main/java 展开如下:

 
 

 
 

 
 

 
 

 
 

 
 

具体实现如下:

 
 

1、在
Maven 项目的核心配置文件中进行配置

 
 

pom.xml:

 
 

<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.siwuxie095.maven</groupId>

<artifactId>maven-ssh</artifactId>

<version>0.0.1-SNAPSHOT</version>

<packaging>war</packaging>

 

<!-- 归类依赖 -->

<properties>

<struts.version>2.3.33</struts.version>

<spring.version>4.3.7.RELEASE</spring.version>

<hibernate.version>5.0.12.Final</hibernate.version>

</properties>

 

 

<dependencies>

 

<!-- +++++++ (1) Struts2 相关 +++++++ -->

 

<!-- Struts2 相关的基本依赖 -->

<dependency>

<groupId>org.apache.struts</groupId>

<artifactId>struts2-core</artifactId>

<version>${struts.version}</version>

<!--

由于 Struts2 和 Hibernate 中都有 javassist,

为避免冲突,留下高版本,排除低版本即可

 

这里,Struts2 中的 javassist 版本更低

-->

<exclusions>

<exclusion>

<groupId>javassist</groupId>

<artifactId>javassist</artifactId>

</exclusion>

</exclusions>

</dependency>

 

 

<!-- +++++++ (2) Spring 相关 +++++++ -->

 

<!-- Spring 相关的基本依赖 -->

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-context</artifactId>

<version>${spring.version}</version>

</dependency>

 

<!-- Spring AOP 相关的依赖 -->

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-aspects</artifactId>

<version>${spring.version}</version>

</dependency>

 

<!-- Spring 单元测试相关的依赖 -->

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-test</artifactId>

<version>${spring.version}</version>

</dependency>

 

 

<!-- +++++++ (3) Hibernate 相关 +++++++ -->

 

<!-- Hibernate 相关的基本依赖 -->

<dependency>

<groupId>org.hibernate</groupId>

<artifactId>hibernate-core</artifactId>

<version>${hibernate.version}</version>

</dependency>

 

 

<!-- +++++++ (4) SSH 整合相关 +++++++ -->

 

<!-- Struts2 整合 Spring 相关的依赖 -->

<dependency>

<groupId>org.apache.struts</groupId>

<artifactId>struts2-spring-plugin</artifactId>

<version>${struts.version}</version>

</dependency>

 

<!-- Spring 整合 Web 项目相关的依赖 -->

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-web</artifactId>

<version>${spring.version}</version>

</dependency>

 

<!-- Spring 整合 Hibernate 相关的依赖 -->

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-orm</artifactId>

<version>${spring.version}</version>

</dependency>

 

 

<!-- +++++++ (5) 数据库连接相关 +++++++ -->

 

<!-- JDBC 驱动相关的依赖 -->

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

<version>5.1.43</version>

<scope>runtime</scope>

</dependency>

 

<!-- C3P0 连接池相关的依赖 -->

<dependency>

<groupId>c3p0</groupId>

<artifactId>c3p0</artifactId>

<version>0.9.1.2</version>

</dependency>

 

 

<!-- +++++++ (6) 日志相关 +++++++ -->

 

<!-- 日志相关的依赖 -->

<dependency>

<groupId>org.slf4j</groupId>

<artifactId>slf4j-log4j12</artifactId>

<version>1.7.25</version>

</dependency>

 

 

<!-- +++++++ (7) 其它相关 +++++++ -->

 

<!-- JUnit 相关的依赖 -->

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

 

<!-- servlet-api 相关的依赖 -->

<dependency>

<groupId>javax.servlet</groupId>

<artifactId>servlet-api</artifactId>

<version>2.5</version>

<scope>provided</scope>

</dependency>

 

<!-- jsp-api 相关的依赖 -->

<dependency>

<groupId>javax.servlet</groupId>

<artifactId>jsp-api</artifactId>

<version>2.0</version>

<scope>provided</scope>

</dependency>

 

</dependencies>

 

 

</project>

 
 

 
 

 
 

2、在
src/main/webapp 目录下创建 JSP 页面

 
 

add.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>添加用户</title>

</head>

<body>

 

<form
action="${pageContext.request.contextPath }/user_add.action"
method="post">

用户名:<input
type="text"
name="username"
/>

地址:<input
type="text"
name="address"
/>

<input
type="submit"
name="提交"
/>

</form>

 

</body>

</html>

 
 

 
 

 
 

succ.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>添加成功</title>

</head>

<body>

 

<h1>添加成功!<a
href="${pageContext.request.contextPath }/add.jsp">继续添加</a></h1>

 

</body>

</html>

 
 

 
 

 
 

3、在
src/main/java 目录下创建实体类,同时创建其

Hibernate 映射配置文件

 
 

User.java:

 
 

package com.siwuxie095.entity;

 
 

public class User {

 

Integer uid;

String username;

String address;

 

public Integer getUid() {

return uid;

}

public
void setUid(Integer uid) {

this.uid = uid;

}

 

public String getUsername() {

return username;

}

public
void setUsername(String username) {

this.username = username;

}

 

public String getAddress() {

return address;

}

public
void setAddress(String address) {

this.address = address;

}

 

@Override

public String toString() {

return
"User [uid=" + uid + ", username=" + username +

", address=" + address + "]";

}

 

}

 
 

 
 

 
 

User.hbm.xml:

 
 

<?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>

 
 

<class
name="com.siwuxie095.entity.User"
table="t_user">

 

<id
name="uid"
column="uid">

<generator
class="native"></generator>

</id>

 

<property
name="username"
column="username"></property>

<property
name="address"
column="address"></property>

 

</class>

 

</hibernate-mapping>

 
 

 
 

 
 

4、在
src/main/resources 目录下创建 Hibernate 核心配置文件

 
 

hibernate.cfg.xml:

 
 

<?xml
version="1.0"
encoding="UTF-8"?>

<!DOCTYPE hibernate-configuration PUBLIC

"-//Hibernate/Hibernate Configuration DTD 3.0//EN"

"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

<session-factory>

 

 

<property
name="hibernate.show_sql">true</property>

<property
name="hibernate.format_sql">true</property>

<!-- 注意:只有配置 hibernate.hbm2ddl.auto 为 update,才能自动创建表 -->

<property
name="hibernate.hbm2ddl.auto">update</property>

<property
name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

<!--

原来的配置:

<property name="hibernate.current_session_context_class">thread</property>

 

在 SSH 框架整合中会报错,要么将这个配置删了,要么改成如下配置

 

参考链接:http://blog.csdn.net/maoyuanming0806/article/details/61417995

-->

<property
name="hibernate.current_session_context_class">

org.springframework.orm.hibernate5.SpringSessionContext

</property>

<!--

如果没有如下配置,控制台将有如下异常信息:

Disabling contextual LOB creation as createClob() method threw error :

java.lang.reflect.InvocationTargetException

 

* 配置 *

<property name="hibernate.temp.use_jdbc_metadata_defaults">false</property>

 

其实该配置加不加都无所谓,并不影响什么

 

参考链接:http://blog.csdn.net/jiong_long/article/details/51340685

-->

<property
name="hibernate.temp.use_jdbc_metadata_defaults">false</property>

 

 

<mapping
resource="com/siwuxie095/entity/User.hbm.xml"/>

 

 

</session-factory>

</hibernate-configuration>

 
 

 
 

 
 

5、在
src/main/java 目录下创建 Action 类

 
 

UserAction.java:

 
 

package com.siwuxie095.action;

 
 

import com.opensymphony.xwork2.ActionSupport;

import com.opensymphony.xwork2.ModelDriven;

import com.siwuxie095.entity.User;

import com.siwuxie095.service.UserService;

 
 

public class UserAction extends ActionSupport implements ModelDriven<User> {

 
 

private User user=new User();

 

@Override

public User getModel() {

return user;

}

 

private UserService userService;

 

public
void setUserService(UserService userService) {

this.userService = userService;

}

 

public String add() {

userService.add(user);

return
"add";

}

 
 

}

 
 

 
 

 
 

6、在
src/main/java 目录下创建 Service 类

 
 

UserService.java:

 
 

package com.siwuxie095.service;

 
 

import org.springframework.transaction.annotation.Transactional;

 
 

import com.siwuxie095.dao.UserDao;

import com.siwuxie095.entity.User;

 
 

@Transactional

public class UserService {

 

private UserDao userDao;

 

public
void setUserDao(UserDao userDao) {

this.userDao = userDao;

}

 
 

public
void add(User user) {

userDao.add(user);

}

 

}

 
 

 
 

 
 

7、在
src/main/java 目录下创建 DAO 接口及其实现类

 
 

UserDao.java:

 
 

package com.siwuxie095.dao;

 
 

import com.siwuxie095.entity.User;

 
 

public interface UserDao {

 
 

void add(User user);

 

}

 
 

 
 

 
 

UserDaoImpl.java:

 
 

package com.siwuxie095.dao.impl;

 
 

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

 
 

import com.siwuxie095.dao.UserDao;

import com.siwuxie095.entity.User;

 
 

/**

* 让 DAO 接口实现类继承 HibernateDaoSupport 类,直接获取 HibernateTemplate

*/

public class UserDaoImpl extends HibernateDaoSupport implements UserDao {

 

@Override

public
void add(User user) {

 

// 直接通过 this 获取 HibernateTemplate,调用 save() 方法保存

this.getHibernateTemplate().save(user);

 

/*

* 此时,也可以获取 SessionFactory

*

* 法一:this.getSessionFactory()

* 法二:this.getHibernateTemplate().getSessionFactory()

*

*

* 此时,也可以获取 Session

*

* 法一:this.getSessionFactory().getCurrentSession()

* 法二:...

*/

}

 

}

 
 

 
 

 
 

8、在
src/main/resources 目录下创建 Struts2 核心配置文件

 
 

struts.xml:

 
 

<?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
name="user_*"
class="userAction"
method="{1}">

<result
name="add">/succ.jsp</result>

</action>

 

</package>

 
 

</struts>

 
 

 
 

 
 

9、在
src/main/resources 目录下创建 Spring 核心配置文件

 
 

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"

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/aop

http://www.springframework.org/schema/aop/spring-aop.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context.xsd

http://www.springframework.org/schema/tx

http://www.springframework.org/schema/tx/spring-tx.xsd">

 

 

<!-- (1) -->

<!-- 配置 C3P0 连接池 -->

<bean
id="dataSource"
class="com.mchange.v2.c3p0.ComboPooledDataSource">

<property
name="driverClass"
value="com.mysql.jdbc.Driver"/>

<!--

jdbc:mysql:///maven_db 是 jdbc:mysql://localhost:3306/maven_db 的简写

-->

<property
name="jdbcUrl"
value="jdbc:mysql:///maven_db"/>

<property
name="user"
value="root"/>

<property
name="password"
value="8888"/>

</bean>

 

 

<!-- SessionFactory 对象的创建交给 Spring 进行管理 -->

<bean
id="sessionFactory"

class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">

<!--

因为在 Hibernate 核心配置文件中,没有数据库配置,

而是在 Spring 的核心配置文件中进行配置,所以需要

注入 dataSource

LocalSessionFactoryBean 中有相关属性,所以可以

注入

-->

<property
name="dataSource"
ref="dataSource"></property>

<!-- 指定 Hibernate 核心配置文件的位置 -->

<property
name="configLocations"
value="classpath:hibernate.cfg.xml"></property>

</bean>

 

 

 

<!-- (2) -->

<!-- 配置 Action 对象 -->

<!--

注意:由于 Action 对象是多实例的,所以服务器启动时,

不会被创建,只有在访问时,才会被创建

-->

<bean
id="userAction"
class="com.siwuxie095.action.UserAction"
scope="prototype">

<property
name="userService"
ref="userService"></property>

</bean>

 
 

<!-- 配置 Service 对象 -->

<bean
id="userService"
class="com.siwuxie095.service.UserService">

<property
name="userDao"
ref="userDaoImpl"></property>

</bean>

 
 

<!-- 配置 Dao 实现类对象 -->

<bean
id="userDaoImpl"
class="com.siwuxie095.dao.impl.UserDaoImpl">

<!-- 注入 SessionFactory 对象 -->

<property
name="sessionFactory"
ref="sessionFactory"></property>

</bean>

 
 

 

 

<!-- (3) -->

<!-- 配置事务管理器 HibernateTransactionManager -->

<bean
id="transactionManager"

class="org.springframework.orm.hibernate5.HibernateTransactionManager">

<!--注入 SessionFactory 对象 -->

<property
name="sessionFactory"
ref="sessionFactory"></property>

</bean>

 

<!-- 开启事务注解 -->

<tx:annotation-driven
transaction-manager="transactionManager"/>

 

 

</beans>

 
 

 
 

 
 

10、在部署描述文件中进行配置

 
 

web.xml:

 
 

<?xml
version="1.0"
encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">

<display-name>maven-ssh</display-name>

<welcome-file-list>

<welcome-file>index.html</welcome-file>

<welcome-file>index.htm</welcome-file>

<welcome-file>index.jsp</welcome-file>

<welcome-file>default.html</welcome-file>

<welcome-file>default.htm</welcome-file>

<welcome-file>default.jsp</welcome-file>

</welcome-file-list>

 

<!-- 配置 Struts2 的核心过滤器 -->

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

 

<!-- 配置 Spring 的监听器 ContextLoaderListener -->

<listener>

<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>

 

<!-- 配置 Spring 核心配置文件的位置(路径) -->

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath:applicationContext.xml</param-value>

</context-param>

 

</web-app>

 
 

 
 

 
 

11、访问路径

 
 

http://localhost:8080/maven-ssh/add.jsp

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

【made by siwuxie095】

最新文章

  1. C++设计模式-Composite组合模式
  2. windows添加linux 启动引导项
  3. PHP高级——抽象类与接口的区别(转)
  4. Linux 挂载2T以上存储
  5. 【BZOJ】【2253】【WC 2010 BeijingWC】纸箱堆叠
  6. dubbo与spring mvc
  7. 网站加载有商务通、商桥,定义js函数触发快商通代码
  8. mysql数据库字段区分大小写的设置方法
  9. Hadoop源码分类概要整理
  10. idea导入本地maven项目
  11. KDJ计算公式
  12. 【CF908G】New Year and Original Order(动态规划)
  13. 【UR #3】链式反应
  14. java内存模型与volatile变量与Atomic的compareAndSet
  15. Object_C与JavaScript交互使用总结
  16. 使用filter对请求设置编码
  17. javaweb中如何给自己的网站更改ico图标
  18. Centos之其他帮助命令
  19. thinkphp配置rewrite模式访问时不生效 出现No input file specified解决方法
  20. Android 多图,大图内存优化

热门文章

  1. 【转载】深入浅出REST
  2. 3-4 1449 web view
  3. jquery粘贴操作
  4. 1108 Finding Average (20 分)
  5. 1016 Phone Bills (25 分)
  6. centos自带的dvd中的官方base源,丢失了可以复制下面的内容
  7. spark 多语言编程
  8. PCIe Max_Payload_Size 和 Max_Read_Request_Size
  9. 包与常用模块:time,sys。
  10. python实现定时发送系列