SSM框架简单整合

导入jar包

  <dependencies>
   <dependency>
     <groupId>junit</groupId>
     <artifactId>junit</artifactId>
     <version>4.13</version>
     <scope>test</scope>
   </dependency>
   <!--spring 核心包-->
   <dependency>
     <groupId>org.springframework</groupId>
     <artifactId>spring-beans</artifactId>
     <version>5.2.5.RELEASE</version>
   </dependency>
   <dependency>
     <groupId>org.springframework</groupId>
     <artifactId>spring-context</artifactId>
     <version>5.2.5.RELEASE</version>
   </dependency>
   <dependency>
     <groupId>org.springframework</groupId>
     <artifactId>spring-core</artifactId>
     <version>5.2.5.RELEASE</version>
   </dependency>
   <dependency>
     <groupId>org.springframework</groupId>
     <artifactId>spring-expression</artifactId>
     <version>5.2.5.RELEASE</version>
   </dependency>
   <dependency>
     <groupId>org.springframework</groupId>
     <artifactId>spring-test</artifactId>
     <version>5.2.5.RELEASE</version>
     <scope>test</scope>
   </dependency>
   <dependency>
     <groupId>org.springframework</groupId>
     <artifactId>spring-web</artifactId>
     <version>5.2.5.RELEASE</version>
   </dependency>
   <dependency>
     <groupId>org.springframework</groupId>
     <artifactId>spring-webmvc</artifactId>
     <version>5.2.5.RELEASE</version>
   </dependency>
   <dependency>
     <groupId>org.springframework</groupId>
     <artifactId>spring-orm</artifactId>
     <version>5.2.5.RELEASE</version>
   </dependency>
   <dependency>
     <groupId>org.springframework</groupId>
     <artifactId>spring-jdbc</artifactId>
     <version>5.2.5.RELEASE</version>
   </dependency>
   <dependency>
     <groupId>org.springframework</groupId>
     <artifactId>spring-tx</artifactId>
     <version>5.2.5.RELEASE</version>
   </dependency>
   <!--数据库连接-->
   <dependency>
     <groupId>mysql</groupId>
     <artifactId>mysql-connector-java</artifactId>
     <version>8.0.13</version>
   </dependency>
   <!--数据库连接池-->
   <dependency>
     <groupId>com.mchange</groupId>
     <artifactId>c3p0</artifactId>
     <version>0.9.5.2</version>
   </dependency>
   <!-- spring aop开发包 -->
   <dependency>
     <groupId>org.springframework</groupId>
     <artifactId>spring-aop</artifactId>
     <version>5.2.5.RELEASE</version>
   </dependency>
   <dependency>
     <groupId>aopalliance</groupId>
     <artifactId>aopalliance</artifactId>
     <version>1.0</version>
   </dependency>
   <dependency>
     <groupId>org.aspectj</groupId>
     <artifactId>aspectjweaver</artifactId>
     <version>1.9.5</version>
     <scope>runtime</scope>
   </dependency>
   <dependency>
     <groupId>org.aspectj</groupId>
     <artifactId>aspectjrt</artifactId>
     <version>1.9.5</version>
   </dependency>
   <!--mybatis spring-->
   <dependency>
     <groupId>org.mybatis</groupId>
     <artifactId>mybatis-spring</artifactId>
     <version>2.0.4</version>
   </dependency>
   <!--mybatis-->
   <dependency>
     <groupId>org.mybatis</groupId>
     <artifactId>mybatis</artifactId>
     <version>3.5.5</version>
   </dependency>
   <!--映入json-->
   <dependency>
     <groupId>org.codehaus.jackson</groupId>
     <artifactId>jackson-mapper-asl</artifactId>
     <version>1.9.13</version>
   </dependency>

   <dependency>
     <groupId>javax.servlet</groupId>
     <artifactId>javax.servlet-api</artifactId>
     <version>3.1.0</version>
     <scope>provided</scope>
   </dependency>

   <!-- 格式化对象-->
   <dependency>
     <groupId>com.alibaba</groupId>
     <artifactId>fastjson</artifactId>
     <version>1.2.62</version>
   </dependency>
   <dependency>
     <groupId>org.ow2.asm</groupId>
     <artifactId>asm</artifactId>
     <version>8.0.1</version>
   </dependency>
   <dependency>
     <groupId>cglib</groupId>
     <artifactId>cglib</artifactId>
     <version>3.3.0</version>
   </dependency>
   <!--日志-->
   <dependency>
     <groupId>org.projectlombok</groupId>
     <artifactId>lombok</artifactId>
     <version>1.18.8</version>
     <scope>provided</scope>
   </dependency>
   <dependency>
     <groupId>org.slf4j</groupId>
     <artifactId>slf4j-log4j12</artifactId>
     <version>1.7.21</version>
     <scope>test</scope>
   </dependency>
   <dependency>
     <groupId>org.slf4j</groupId>
     <artifactId>slf4j-api</artifactId>
     <version>1.7.21</version>
   </dependency>
   <dependency>
     <groupId>log4j</groupId>
     <artifactId>log4j</artifactId>
     <version>1.2.17</version>
   </dependency>
   <!-- JSTL标签类 -->
   <dependency>
     <groupId>javax.servlet.jsp.jstl</groupId>
     <artifactId>jstl</artifactId>
     <version>1.2</version>
   </dependency>
 </dependencies>

mybatis配置文件(可以不需要)

<configuration>
   <settings>
       <!--开启全局的懒加载-->
       <setting name="lazyLoadingEnabled" value="true"/>
       <!--关闭立即加载,其实不用配置,默认为false-->
       <setting name="aggressiveLazyLoading" value="false"/>
       <!--开启Mybatis的sql执行相关信息打印-->
       <setting name="logImpl" value="STDOUT_LOGGING" />
   </settings>
</configuration>

spring-mybatis配置文件(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:tx="http://www.springframework.org/schema/tx"
      xmlns:context="http://www.springframework.org/schema/context"
      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-3.0.xsd
      http://www.springframework.org/schema/tx
  http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">

   <!-- 引入配置文件 -->
   <context:property-placeholder location="classpath:db.properties"/>
   <!--配置数据库连接池信息-->
   <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
       <property name="driverClass" value="${driver}"/>
       <property name="jdbcUrl" value="${url}"/>
       <property name="user" value="${user}"/>
       <property name="password" value="${password}"/>
   </bean>
   
   <!-- 配置session工厂 -->
   <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
       <property name="dataSource" ref="dataSource" />
       <!-- 如果没有mybatis的配置文件,则不需要 -->
       <property name="configLocation" value="classpath:mybatis-config.xml"/>
       <!--配置扫描式加载SQL映射文件Mapper.xml,需要去掉mybatis-config中配置的 Mappers-->
       <property name="mapperLocations" value="classpath:mappers/*.xml"/>
   </bean>
   
  <!-- 配置SessionTemplate,已封装了繁琐的数据操作,提交事务都不用做了-->
   <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
       <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory" />
   </bean>

   <!-- 配置事务管理器,管理数据源事务处理 -->
   <bean id="transactionManager"
         class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
       <property name="dataSource" ref="dataSource" />
   </bean>

   <!-- 配置事务通知 -->
   <tx:advice id="advice">
       <tx:attributes>
     <!-- 默认只处理运行时异常,可加rollback-for="Exception/Throwable"等处理所有异常或包括错误 -->
           <tx:method name="insert*" rollback-for="Exception" />
           <tx:method name="update*" rollback-for="Exception" />
           <tx:method name="delete*" rollback-for="Exception" />
           <tx:method name="*" propagation="SUPPORTS" />
       </tx:attributes>
   </tx:advice>
   <!-- 配置切面织入的范围,后边要把事务边界定在service层 -->
   <aop:config>
       <aop:advisor advice-ref="advice" pointcut="execution(* hjy.service.*.*(..))" />
   </aop:config>

   <!-- 自动扫描组件,要把controller去除,他们是在spring-mvc.xml中配置,如果不去除会影响事务管理-->
   <context:component-scan base-package="hjy">
       <context:exclude-filter type="annotation"
                               expression="org.springframework.stereotype.Controller" />
   </context:component-scan>

   <!-- 配置 转换器,对于在basePackage设置的包(包括子包)下的接口类,
   如果接口类的全类名(Mapper.java)在Mapper.xml文件中和定义过命名空间一致,将被转换成spring的BEAN,
在调用的地方通过@Autowired方式将可以注入接口实例,不需要实际的dao层实现 -->
   <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
       <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
       <property name="basePackage" value="hjy.dao" />
   </bean>

   <!--开启aop注解使用方式-->
   <aop:aspectj-autoproxy/>
</beans>

spring-mvc配置文件

<?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:mvc="http://www.springframework.org/schema/mvc"
      xmlns:context="http://www.springframework.org/schema/context"
      xsi:schemaLocation="http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
      http://www.springframework.org/schema/context
      http://www.springframework.org/schema/context/spring-context-3.2.xsd
      http://www.springframework.org/schema/mvc
      http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">

   <!-- 注解驱动,同时开启json格式的支持 -->
   <mvc:annotation-driven>
       <!-- register-defaults="true"表示使用默认的消息转换器 -->
       <mvc:message-converters register-defaults="true">
           <!-- 需要返回json时需要配置 produces = "application/json"。不需要再指定utf-8了-->
           <bean id="fastJsonHttpMessageConverter" class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
               <property name="supportedMediaTypes">
                   <list>
              <!-- 这里顺序不能反,一定先写text/html,不然IE执行AJAX时,返回JSON会出现下载文件 -->
                       <value>text/html;charset=UTF-8</value>
                       <value>application/json;charset=UTF-8</value>
                       <value>application/xml;charset=UTF-8</value>
                   </list>
               </property>
               <property name="fastJsonConfig">
                   <bean class="com.alibaba.fastjson.support.config.FastJsonConfig">
                       <property name="features">
                           <list>
                               <value>AllowArbitraryCommas</value>
                               <value>AllowUnQuotedFieldNames</value>
                               <value>DisableCircularReferenceDetect</value>
                           </list>
                       </property>
                       <property name="dateFormat" value="yyyy-MM-dd HH:mm:ss"/>
                   </bean>
               </property>
           </bean>
       </mvc:message-converters>
   </mvc:annotation-driven>
   
   <!-- 扫描所有的controller 但是不扫描service -->
   <context:component-scan base-package="hjy.controller">
       <context:include-filter type="annotation"
                               expression="org.springframework.stereotype.Controller" />
       <context:exclude-filter type="annotation"
                               expression="org.springframework.stereotype.Service" />
   </context:component-scan>

   <!-- 静态资源 解析 -->
   <mvc:resources location="/js/" mapping="/js/**" />
   <mvc:resources location="/img/" mapping="/img/**" />

</beans>

web.xml配置文件

<!DOCTYPE web-app PUBLIC
       "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
       "http://java.sun.com/dtd/web-app_2_3.dtd" >
<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_3_0.xsd
        http://java.sun.com/xml/ns/javaee " version="3.0">
 <!--Spring监听器-->
 <listener>
   <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 </listener>
 <!-- 防止Spring内存溢出监听器 -->
 <listener>
     <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
 </listener>
 <!--加载spring-mybatis配置文件-->  
 <context-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>classpath:applicationContext.xml</param-value>
 </context-param>

 <!--Mvc分配器-->
 <servlet>
   <servlet-name>mvc</servlet-name>
   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
   <init-param>
     <param-name>contextConfigLocation</param-name>
     <param-value>classpath:spring-mvc.xml</param-value>
   </init-param>
   <load-on-startup>1</load-on-startup>
   <async-supported>true</async-supported>
 </servlet>
 <servlet-mapping>
   <servlet-name>mvc</servlet-name>
<!--RESTful 接口-->
   <url-pattern>/</url-pattern>
 </servlet-mapping>

 <!--中文过滤器-->
 <filter>
   <filter-name>encodingFilter</filter-name>
   <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
   <init-param>
     <param-name>encoding</param-name>
     <param-value>UTF-8</param-value>
   </init-param>
 </filter>
 <filter-mapping>
   <filter-name>encodingFilter</filter-name>
   <url-pattern>/*</url-pattern>
 </filter-mapping>
</web-app>

其他配置文件

数据库配置文件

driver = com.mysql.cj.jdbc.Driver
url = jdbc:mysql://localhost:3306/ssm?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC
user = root
password = 123456

日志配置文件

### 设置日志级别 ###
log4j.rootLogger = debug,stdout,logfile,errorlog

###输出到控制台
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

###输出到日志文件
log4j.appender.logfile = org.apache.log4j.FileAppender
log4j.appender.logfile.File = log4j.html
log4j.appender.logfile.Append = false
log4j.appender.logfile.Threshold = DEBUG
log4j.appender.logfile.layout = org.apache.log4j.HTMLLayout
log4j.appender.logfile.layout.LocationInfo = true
log4j.appender.logfile.layout.Title= My Log

### 保存异常信息到单独文件 ###
log4j.appender.errorlog = org.apache.log4j.FileAppender
log4j.appender.errorlog.File = error.log
log4j.appender.errorlog.Append = true
log4j.appender.errorlog.Threshold = ERROR
log4j.appender.errorlog.layout = org.apache.log4j.PatternLayout
log4j.appender.errorlog.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n

 项目结构

 

原文地址:https://www.cnblogs.com/yjh1995/p/14164401.html