Maven项目整合SSH框架
---------------------siwuxie095
Maven 项目整合 SSH 框架
创建
Maven 项目 maven-ssh,项目目录结构如下:

将
src/main/java 展开如下:

具体实现如下:
1、在
Maven 项目的核心配置文件中进行配置
pom.xml:
|
<project 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" <html> <head> <meta <title>添加用户</title> </head> <body>
<form 用户名:<input 地址:<input <input </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" <html> <head> <meta <title>添加成功</title> </head> <body>
<h1>添加成功!<a
</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 this.uid = uid; }
public String getUsername() { return username; } public this.username = username; }
public String getAddress() { return address; } public this.address = address; }
@Override public String toString() { return ", address=" + address + "]"; }
} |
User.hbm.xml:
|
<?xml <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping> <class
<id <generator </id>
<property <property
</class>
</hibernate-mapping> |
4、在
src/main/resources 目录下创建 Hibernate 核心配置文件
hibernate.cfg.xml:
|
<?xml <!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 <property <!-- 注意:只有配置 hibernate.hbm2ddl.auto 为 update,才能自动创建表 --> <property <property <!-- 原来的配置: <property name="hibernate.current_session_context_class">thread</property>
在 SSH 框架整合中会报错,要么将这个配置删了,要么改成如下配置
参考链接:http://blog.csdn.net/maoyuanming0806/article/details/61417995 --> <property 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
<mapping
</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 this.userService = userService; }
public String add() { userService.add(user); return } } |
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 this.userDao = userDao; } public 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
// 直接通过 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 <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts>
<package
<action <result </action>
</package> </struts> |
9、在
src/main/resources 目录下创建 Spring 核心配置文件
applicationContext.xml:
|
<?xml <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 <property <!-- jdbc:mysql:///maven_db 是 jdbc:mysql://localhost:3306/maven_db 的简写 --> <property <property <property </bean>
<!-- SessionFactory 对象的创建交给 Spring 进行管理 --> <bean class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"> <!-- 因为在 Hibernate 核心配置文件中,没有数据库配置, 而是在 Spring 的核心配置文件中进行配置,所以需要 注入 dataSource LocalSessionFactoryBean 中有相关属性,所以可以 注入 --> <property <!-- 指定 Hibernate 核心配置文件的位置 --> <property </bean>
<!-- (2) --> <!-- 配置 Action 对象 --> <!-- 注意:由于 Action 对象是多实例的,所以服务器启动时, 不会被创建,只有在访问时,才会被创建 --> <bean <property </bean> <!-- 配置 Service 对象 --> <bean <property </bean> <!-- 配置 Dao 实现类对象 --> <bean <!-- 注入 SessionFactory 对象 --> <property </bean>
<!-- (3) --> <!-- 配置事务管理器 HibernateTransactionManager --> <bean class="org.springframework.orm.hibernate5.HibernateTransactionManager"> <!--注入 SessionFactory 对象 --> <property </bean>
<!-- 开启事务注解 --> <tx:annotation-driven
</beans> |
10、在部署描述文件中进行配置
web.xml:
|
<?xml <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <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】
Maven项目整合SSH框架的更多相关文章
- Maven项目整合Struts2框架
-------------------------siwuxie095 Maven 项目整合 Struts2 框架 1. ...
- Maven 整合SSH框架
1. 传递依赖冲突 1.1 传递依赖:A(项目)依赖B,B依赖C(1.1版本),B是A的直接依赖,C是A的传递依赖; A(项目)又依赖D,D依赖C(1.2版本),此时,C有两个版本,产生冲突; 1.2 ...
- maven学习记录三——maven整合ssh框架
6 整合ssh框架 6.1 依赖传递 只添加了一个struts2-core依赖,发现项目中出现了很多jar, 这种情况 叫 依赖传递 6.2 依赖版本冲突的解决 1. 第 ...
- Maven02——回顾、整合ssh框架、分模块开发、私服
1 回顾 1.1 Maven的好处 节省空间 对jar包做了统一管理 依赖管理 一键构建 可跨平台 应用在大型项目可提高开发效率 1.2 Maven安装部署配置 1.3 Maven的仓库 本地仓库 远 ...
- spring springmvc mybatis maven 项目整合示例-导航页面
spring原理 实践解析-简单的helloworld spring原理案例-基本项目搭建 01 spring framework 下载 官网下载spring jar包 spring原理案例-基本项目 ...
- Struts2,Spring3,Hibernate4整合--SSH框架
Struts2,Spring3,Hibernate4整合--SSH框架(学习中) 一.包的导入 1.Spring包 2.Hibernate 包 3.struts 包 (还欠 struts2-sprin ...
- Maven 整合 SSH 框架
前面的一系列文章中,我们总结了三大框架:Struts2,Hibernate,Spring 的基本知识.本篇就姑且尝试着使用 Maven 这个项目构建工具来将这三个框架整合一起.说到这里,如果有对 Ma ...
- Eclipse下面的Maven管理的SSH框架整合(Struts,Spring,Hibernate)
搭建的环境:eclispe下面的maven web项目 Struts: 2.5.10 Spring: 4.3.8 Hibernate: 5.1.7 .Final MySQL: 5. ...
- 【SSM】Eclipse使用Maven创建Web项目+整合SSM框架
自己接触ssm框架有一段时间了,从最早的接触新版ITOO项目的(SSM/H+Dobbu zk),再到自己近期来学习到的<淘淘商城>一个ssm框架的电商项目.用过,但是还真的没有自己搭建过, ...
随机推荐
- VS2005常用快捷键
Visual C++ 2005有很多种快捷键的映射方案,有适合 Emacs 用户的,有适合 Visual C++ 6.0 用户的,也有 Visual Studio 2005的,下面的快捷键符合IDE默 ...
- 在chrome中安装基于REST的web服务客户端
基于REST的Web服务客户端的使用方法 点击转到基于REST的Web服务客户端下载页面 chrome浏览器如果安装扩展程序点击chrome浏览器右上角,选择“设置在“设置”对话框里选择“扩展程序”然 ...
- [UE4]为UStaticMeshComponent添加点击事件
BlockMesh->OnClicked.AddDynamic(this, &APuzzleBlock::BlockClicked); //鼠标点击事件 BlockMesh->On ...
- VMware中,该如何理解桥接网络与NAT 网络模式
原创 2016年11月16日 23:26:34,原文地址如下: http://blog.csdn.net/u010801439/article/details/53193113 首先,我在VMware ...
- python 模块被引用多次但是里面的全局表达式总共只会执行一次
python 模块被引用多次但是里面的全局表达式总共只会执行一次
- 使用eclipse在linux下开发C/C++
一直在Linux下开发,苦于没有IDE,一般都是自己编写Makefile,然后在windows下用文本编辑器ftp打开文件编辑,然后在linux下完成编译.调试代码也只能是命令行用gdb进行调试,相当 ...
- ExtJS模版技术
学习ExtJS一段时间以后,大家基本都会对于一些显示数据的组件不太符合需求,可能自己需要的组件在ExtJS里面不存在,这是大家基本就会使用Html属性,直接使用Html进行绘制页面数据展现. 但是,使 ...
- HFDS核心技术
HDFS 设计的前提与目标 HDFS体系结构1 HDFS体系结构2 HDFS特性与优点 高容错性保障机制 HDFS不适合的场景 HDFS2.0的新特征 HA-QJM Federation 快照 异构层 ...
- zend_soap做webservice的使用方法
只用到zend_soap包中的Zend_Soap_Server,Zend_Soap_AutoDiscover和Zend_Soap_Client三个类 首先要注意ZF是调用php的soap扩展,所以 ...
- sed 小结
语法格式1: sed option command file 注意区分 option command, option 以-开始 command 以单?引号包围 ———— 这完全是误会, 我测试好多后发 ...