利用Maven搭建SSM项目
来源:互联网 发布:eviews横截面数据步骤 编辑:程序博客网 时间:2024/06/05 01:19
1.配置pom.xml
在pom.xml中添加需要的spring,hibernate ,数据源和日志所需要的依赖
<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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com</groupId> <artifactId>login</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>login Maven Webapp</name> <url>http://maven.apache.org</url> <properties> <!-- 统一源码的编码方式 --> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!-- 统一各个框架版本 --> <struts.version>2.3.24</struts.version> <spring.version>4.3.8.RELEASE</spring.version> <hibernate.version>5.1.7.Final</hibernate.version> <aspectj.version>1.8.10</aspectj.version> <!-- 数据源 --> <mysql.version>5.1.42</mysql.version> <druid.version>1.1.4</druid.version> <c3p0.version>0.9.5</c3p0.version> <!--日志 --> <slf4j.version>1.7.25</slf4j.version> </properties> <dependencies> <!-- servlet --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <!-- Junit依赖 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <!-- Spring start --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</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> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>${aspectj.version}</version> </dependency> <!-- Spring end --> <!-- Struts2 start --> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> <version>${struts.version}</version> </dependency> <!-- Struts2和Spring整合依赖 --> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-spring-plugin</artifactId> <version>${struts.version}</version> </dependency> <!-- Struts2 end --> <!-- Hibernate start --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>${hibernate.version}</version> </dependency> <!-- Hibernate end --> <!-- 数据源 start --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql.version}</version> </dependency> <dependency> <groupId>com.mchange</groupId> <artifactId>c3p0</artifactId> <version>${c3p0.version}</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>${druid.version}</version> </dependency> <!-- 数据源 end --> <!--日志 start --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>${slf4j.version}</version> </dependency> <!--日志 end --> </dependencies></project>
2. 配置log4j.xml
log4j.xml是日志配置文件,可以设置日志打印的级别,和输出日志的目录等配置。有了打印出来的日志我们都可以很精确到出错的位置。
# info 'or' debuglog4j.rootCategory=info, stdout , R log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=[QC] %p [%t] %C.%M(%L) | %m%nlog4j.appender.R=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.R.File=D:\\logs\\qc.loglog4j.appender.R.layout=org.apache.log4j.PatternLayout1log4j.appender.R.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n
日志输出在 D:/logs/qc.l og
3,配置 web.xml
在web.xml配置struts 过滤器,spring监听器等。
<?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" id="WebApp_ID" version="2.5"> <display-name>sht</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> <!-- 扩大session作用范围 注意: 任何filter一定要在struts的filter之前调用 --> <filter> <filter-name>openSessionInView</filter-name> <filter-class>org.springframework.orm.hibernate5.support.OpenSessionInViewFilter</filter-class> </filter> <filter-mapping> <filter-name>openSessionInView</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 配置监听器 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 指定加载的配置文件 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:/spring/applicationContext.xml</param-value> </context-param> <!-- 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></web-app>
4,配置applicationContext.xml
由于在web.xml中配置spring的配置文件加载路径是在classpath中的spring文件夹中,所以我是在resource源目录中创建的spring普通目录。
<?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 "> <!-- 开启扫描 --> <context:component-scan base-package="com" /> <!--aop注释 --> <aop:aspectj-autoproxy proxy-target-class="true" /> <!--hibernate 配置 --> <import resource="spring-hibernate.xml" /> <!-- 事物管理 --> <import resource="spring-tx.xml" /></beans>
把hibernate配置和事物管理有分开管理
5,配置spring-hibernate.xml
其中 hibernate.cfg.xml的文件的配置全部交个spring管理。默认用的是mysql数据库
<?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 "> <!-- 读取db.properties文件 --> <context:property-placeholder location="classpath:db.properties" /> <!-- 用Spring配置C3P0连接池 --> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"> <property name="url" value="${jdbc.jdbcUrl}"></property> <property name="username" value="${jdbc.user}"></property> <property name="password" value="${jdbc.password}"></property> </bean> <!-- 创建SessionFactroy --> <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"> <!-- 引入数据源 --> <property name="dataSource" ref="dataSource"></property> <!-- 配置关于hibernate的信息 --> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.format_sql">true</prop> <prop key="hibernate.hbm2ddl.auto">update</prop> </props> </property> <!-- 引入映射文件 <property name="annotatedClasses"> <list> <value>com.entity.User</value> <value>com.aop.SysLog</value> <value>com.entity.LinkMan</value> <value>com.entity.Customer</value> <value>com.entity.BaseDict</value> <value>com.entity.SaleVisit</value> </list> </property> --> <property name="annotatedClasses"> <list> </list> </property> </bean> <!-- 创建一下HibernateTemplate --> <bean id="hibernateTemplate" class="org.springframework.orm.hibernate5.HibernateTemplate"> <!-- 注入SessionFactory --> <property name="sessionFactory" ref="sessionFactory"></property> </bean></beans>
db.properties里面是数据库的配置信息。注意 它在classpath目录下
db.properties文件内容
jdbc.jdbcUrl=连接地址jdbc.user=数据库账号jdbc.password=数据库密码
6,配置spring-tx.xml
利用springAOP里管理service层的事物
<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="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager"> <!-- 注入sessionFactory --> <property name="sessionFactory" ref="sessionFactory"></property> </bean> <!-- 关于事务的第二步操作:开启事务注解 --> <tx:annotation-driven transaction-manager="transactionManager" /> <!-- AOP配置事物 --> <tx:advice id="transactionAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="find*" propagation="REQUIRED"></tx:method> <tx:method name="delete*" propagation="REQUIRED" rollback-for="Exception" /> <tx:method name="save*" propagation="REQUIRED" rollback-for="Exception" /> <tx:method name="update*" propagation="REQUIRED" rollback-for="Exception" /> <tx:method name="insert*" propagation="REQUIRED" rollback-for="Exception" /> <tx:method name="*" propagation="REQUIRED" /> </tx:attributes> </tx:advice> <!-- 配置AOP切面 --> <aop:config> <aop:pointcut id="transactionPointcut" expression="execution(* 包名..*.*(..))" /> <aop:advisor pointcut-ref="transactionPointcut" advice-ref="transactionAdvice" /> </aop:config></beans>
7,配置struts.xml
struts的核心配置文件,默认是在classpath目录下面
<?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> <!-- # struts.objectFactory = spring 将action的创建交给spring容器 struts.objectFactory.spring.autoWire = name spring负责装配Action依赖属性 --> <constant name="struts.objectFactory" value="spring" /> <constant name="struts.action.extension" value="do,html" /> <package name="hello" namespace="/" extends="struts-default"> <!-- action交给spring创建之后,class的值就不能写action的全路径 而是写在spring中配置Action的ID --> </package></struts>
从上面配置文件中可以看出struts是交个spring管理的,所以在创建每个action的时候,配置文件的class里面只用写它的bean ID都可以,不用写全路径。
比如用注解的方式在一个action中配置bean ID
@Controller("loginAction")@Scope("prototype")
它的class属性中直接写所对应的bean ID,并且用spring管理action的时候,由于
spring管理的class的对象默认是单例的,因此每个action必须使用原型
<package name="hello" namespace="/" extends="struts-default"> <!-- action交给spring创建之后,class的值就不能写action的全路径 而是写在spring中配置Action的ID --> <action name="LoginAction_*" class="loginAction" method="{1}"> <result>/index.jsp</result> </action> </package>
8,BaseDao.class
它里面集成一些简单的增删改查和分页,因此这个BaseDao 可以大大减少我们的部分的代码量。把重复的代码提取出来,让其它的类去继承,也更好的体现出 面对对象的思想。
public class BaseDaoImpl<T> extends HibernateDaoSupport implements com.songhongtu.dao.BaseDao<T> { private Class clazz;// 用于接收运行期泛型类型 public BaseDaoImpl() { // 获得当前类型的带有泛型类型的父类 ParameterizedType ptClass = (ParameterizedType) this.getClass().getGenericSuperclass(); // 获得运行期的泛型类型 clazz = (Class) ptClass.getActualTypeArguments()[0]; } public void save(T t) { getHibernateTemplate().save(t); } public void delete(T t) { getHibernateTemplate().delete(t); } public void delete(Serializable id) { T t = this.getById(id);// 先取,再删 getHibernateTemplate().delete(t); } public void update(T t) { getHibernateTemplate().update(t); } public T getById(Serializable id) { return (T) getHibernateTemplate().get(clazz, id); } public Integer getTotalCount(DetachedCriteria dc) { // 设置查询的聚合函数,总记录数 dc.setProjection(Projections.rowCount()); List<Long> list = (List<Long>) getHibernateTemplate().findByCriteria(dc); // 清空之前设置的聚合函数 dc.setProjection(null); if (list != null && list.size() > 0) { Long count = list.get(0); return count.intValue(); } else { return null; } } public List<T> getPageList(DetachedCriteria dc, Integer start, Integer pageSize) { List<T> list = (List<T>) getHibernateTemplate().findByCriteria(dc, start, pageSize); return list; } public void saveOrUpdate(T t) { getHibernateTemplate().saveOrUpdate(t); }}
它的里面的核心代码就是利用泛型,继承它的类必须声明泛型,无参构造器中获取到该类的泛型类型。
- 利用Maven搭建SSM项目
- maven搭建SSM项目
- maven项目搭建ssm
- Maven搭建SSM项目
- maven搭建ssm项目
- maven搭建ssm项目
- Intellij IDEA中利用Maven搭建SSM项目
- eclipse maven 搭建【SSM】项目
- 利用SSM搭建web项目
- My Eclipse搭建SSM利用Maven创建Maven项目管理Jar包
- eclipse下利用maven搭建ssm环境
- maven搭建ssm项目(入门)
- SSM(Spring+SpringMVC+Mybatis)+Maven项目搭建
- IDEA使用Maven搭建SSM项目
- idea+maven+ssm搭建基本项目
- 使用idea 搭建ssm+maven+logback项目
- 搭建maven ssm项目的问题
- SSM框架搭建(Maven项目)
- Node.js——utils-merge
- 编程之上:方法论更重要
- 计算机网络
- 吴恩达-斯坦福CS229机器学习课程-2017(秋)最新课程分享
- JSF转换器&验证器的使用
- 利用Maven搭建SSM项目
- mysql调优
- 51nod 1242 斐波那契数列的第N项(矩阵幂运算)
- Docker -- dockerFile指令说明
- 51nod 1006 最长公共子序列Lcs
- springboot 在@Autowire无法注入bean时的临时处理办法
- 排列
- Jenkins
- 原码、反码与补码