SSM三大框架整合并使用log4j日志

首先准备需要的依赖

这里我们使用的是maven项目结构,首先准备我们所需要的包依赖。(如果不是用的maven,可以手动下载并导入依赖)。

必需依赖
  <!-- mybatis包 -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.2</version>
    </dependency>
    <!-- spring-webmvc包,这个包囊括了几乎所有spring应用框架,导入这个依赖就不用再导入spring-mvc 和 spring 依赖了-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.2.2.RELEASE</version>
    </dependency>
    <!-- mybatis运行需要的jdbc包 -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>5.2.2.RELEASE</version>
    </dependency>
    <!-- mybatis整合spring需要的包 -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>1.3.0</version>
    </dependency>
非必需,但很有用的依赖
 <!-- 用过都说真香的lombok包 -->
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.8</version>
      <scope>provided</scope>
    </dependency>
<!-- 不可或缺的junit测试包 -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
    </dependency>
log4j日志包
<!-- https://mvnrepository.com/artifact/log4j/log4j -->
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
    </dependency>
mysql驱动包
	<dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.47</version>
    </dependency>
pagehelper分页插件包(如果不使用分页插件可以不添加)
 <dependency>
      <groupId>com.github.pagehelper</groupId>
      <artifactId>pagehelper</artifactId>
      <version>5.1.11</version>
    </dependency>

同时,我们要在pom文件里加入下面这一段配置,使java目录下的.properties和.xml文件也能被读取,这样我们就可以把mapper映射文件写到dao包下。

<resources>
<!-- 使java目录下的.properties和.xml文件也能被读取 -->
      <resource>
        <directory>src/main/java</directory>
        <includes>
          <include>**/*.properties</include>
          <include>**/*.xml</include>
        </includes>
        <filtering>false</filtering>
      </resource>
      <resource>
        <directory>src/main/resources</directory>
        <includes>
          <include>**/*.properties</include>
          <include>**/*.xml</include>
        </includes>
        <filtering>false</filtering>
      </resource>
    </resources>

这里我的包结构如下:
SSM三大框架整合并使用log4j日志_第1张图片
接下来,我们要在resources目录下创建五个文件
SSM三大框架整合并使用log4j日志_第2张图片

  • applicationContest.xml : spring的主要配置文件(官方推荐文件名)
  • springMVC-servlet.xml : springMVC的配置文件(文件名可以自己取)
  • mybatisConfig.xml : mybatis的配置文件 (文件名可以自己取)
  • log4j.properties : log4j日志输出相关配置 (文件名固定)
  • database.properties : 数据源相关信息

配置第一步:applicationContest.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: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">
    <!--开启注解支持-->
    <context:annotation-config/>
    <!--指定注解扫描,这里的包下面的注解才可以被扫描到,正常使用-->
    <context:component-scan basepackage="cn.kgc.zhx.dao,cn.kgc.zhx.service"/>
    <!--导入外部属性文件,这里就是引入数据源文件database.properties-->
    <context:property-placeholder location="classpath:database.properties"/>
    <!--整合数据源-->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="${jdbc.driver}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="configLocation" value="classpath:mybatisConfig.xml"/>
        <!--配置pageHelper分页插件,如果不使用,可以忽略这个配置-->
        <property name="plugins">
            <array>
                <bean class="com.github.pagehelper.PageInterceptor">
                    <property name="properties">
                        <!--使用下面的方式配置参数,一行配置一个,具体参数可以去官网查询,根据自己的需要进行配置 -->
                        <value>
                            helperDialect=postgresql
                            reasonable=true
                            supportMethodsArguments=true
                            params=count=countSql
                            autoRuntimeDialect=true
                        </value>
                    </property>
                </bean>
            </array>
        </property>
     </bean>
    <!--spring和mybatis整合的关键,配置扫描mapper的包-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="cn.kgc.zhx.dao"/>
    </bean>
</beans>

配置第二步:mybatisConfig.xml

由于我们大部分配置都已经整合到spring配置文件中,这里我们只需要做很少的配置

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<!-- 开启配置 -->
<configuration>
    <settings>
        <!-- 开启日志,使用log4j日志格式-->
        <setting name="logImpl" value="LOG4J"/>
        <!-- 显示开启二级缓存-->
        <setting name="cacheEnabled" value="true"/>
    </settings>
    
    <!--自动添加前置包名,这里一般写到自己的实体类包下-->
    <typeAliases>
        <package name="cn.kgc.zhx.pojo"/>
    </typeAliases>

</configuration>

配置第三步:springMVC-servlet.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: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.xsd
        http://www.springframework.org/schema/mvc
        https://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd">
    <!-- 自动扫描包,让指定包下的注解生效,由IOC容器统一管理 -->
    <context:component-scan base-package="cn.kgc.zhx.controller"/>
    <!-- 让Spring MVC不处理静态资源 -->
    <mvc:default-servlet-handler />
    
    <mvc:annotation-driven>
        <!--配置springMVC防止返回页面中文乱码-->
        <mvc:message-converters register-defaults="true">
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                <constructor-arg value="UTF-8" />
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>
    
    <!--配置视图解析器-->
    <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
    <!--关于拦截器的配置-->
    <mvc:interceptors>
        <mvc:interceptor>
            <!--/** 包括路径及其子路径-->
            <!--/admin/* 拦截的是/admin/add等等这种 , /admin/add/user不会被拦截-->
            <!--/admin/** 拦截的是/admin/下的所有-->
            <mvc:mapping path="/**"/>
            <!--不拦截哪些资源-->
            <mvc:exclude-mapping path="/zhx"/>
            <mvc:exclude-mapping path="/Login"/>
            <!--bean配置的就是拦截器配置,被拦截的资源会经过如下拦截器-->
            <bean class="cn.kgc.zhx.interceptor.MyIntercepeor"/>
        </mvc:interceptor>
    </mvc:interceptors>
</beans>

配置第四步:web.xml

在配置完ssm配置文件后,我们需要配置web.xml,使web容器和我们的springMVC关联上。

<web-app>
  <display-name>Archetype Created Web Application</display-name>
  <!--绑定spring容器-->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
  </context-param>
  <!--解决jsp页面乱码问题-->
  <filter>
    <filter-name>SetCharacterEncoding</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>SetCharacterEncoding</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

  <!--监听器,使web容器使用我们的配置文件配置的实现方法-->
  <listener>
    <listener-class>
      org.springframework.web.context.ContextLoaderListener
    </listener-class>
  </listener>

  <!--注册DispatcherServlet-->
  <servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!-- 关联一个springmvc的配置文件:我们这里是springMVC-servlet.xml-->
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:springMVC-servlet.xml</param-value>
    </init-param>
    <!--启动顺序,数字越小,启动越早-->
    <load-on-startup>1</load-on-startup>
  </servlet>
  <!-- / 匹配所有的请求;(不包括.jsp)-->
  <!-- /* 匹配所有的请求;(包括.jsp)-->
  <!--所有请求都会被springmvc拦截 -->
  <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>

配置最后一步: log4j.properties 和 database.properties

因为这两个是属于自己的个性化配置,所以我只提供一个模板,具体配置还得要看使用者自己的需要。

database.properties 配置:

#选择驱动
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/zxks?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimeZone=GMT
jdbc.username=你的数据库登录名
jdbc.password=你的数据库密码

log4j.properties 配置:

#将等级为DEBUG的日志信息输出到console和file这两个目的地,console和file的定义在下面的代码
log4j.rootLogger=DEBUG,console,file

#控制台输出的相关设置
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.Target = System.out
log4j.appender.console.Threshold=DEBUG
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[%c]--%m%n

#文件输出的相关设置
log4j.appender.file = org.apache.log4j.RollingFileAppender
log4j.appender.file.File=./log/zhx.log
log4j.appender.file.MaxFileSize=10mb
log4j.appender.file.Threshold=DEBUG
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%p][%d{yy-MM-dd HH:mm:ss}][%c]%m%n

#日志输出级别
log4j.logger.org.mybatis=DEBUG
log4j.logger.java.sql=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG

到此为止,SSM三大框架就整合完毕了!现在你就可以去写一个jsp页面,看看自己框架有没有整合成功吧!

你可能感兴趣的:(SSM)