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框架的电商项目.用过,但是还真的没有自己搭建过, ...
随机推荐
- [转][Chrome]浏览器粘贴行为
<html> <head> <meta charset="UTF-8"> <title>test chrome paste imag ...
- 第8章 信号(1)_Linux信号处理机制
1. 信号的基本概念 1.1 基本概念 (1)信号(signal)机制是linux系统中最为古老的进程之间的通信机制,解决进程在正常运行过程中被中断的问题,导致进程的处理流程会发生变化. (2)信号本 ...
- js判断当前为pc端还是wap端
var checkBrowser; function browserRedirect() { var sUserAgent = navigator.userAgent.toLowerCase(); v ...
- 2017-2018-2 20165233 实验四 Android程序设计
20165233 实验四 Android程序设计 实验内容 任务一: 参考http://www.cnblogs.com/rocedu/p/6371315.html#SECANDROID,安装 Andr ...
- js-传送file
这是选择文件的标签 <input type="file" class="add-image-input"> 这是js实现传输文件 var addIm ...
- 手贱!使用django,在数据库直接删除了表
莫名其妙的错误. 删除了migreation文件,并且更换了数据库. 1.直接makemigrations + migrate error: no change ?? WTF 2.makemi ...
- jar包双击执行引用外部包问题
大家都知道一个java应用项目可以打包成一个jar,当然你必须指定一个拥有main函数的main class作为你这个jar包的程序入口. 具体的方法是修改jar包内目录META-INF下的MANIF ...
- 最近学习下,nohup和&的区别
nohup是永久执行 &是指在后台运行 运行 nohup --helpRun COMMAND, ignoring hangup signals. 可以看到是“运行命令,忽略挂起信号” 就是指, ...
- shiro与threamleaf的整合
1.添加依赖 2.在配置类中添加shiroDialect
- AJAX服务器返回数据 连接数据库查询数据
getcustomer.asp" 中的源代码负责对数据库进行查询,然后用 HTML 表格返回结果: <% response.expires=-1 sql="SELECT * ...