zoukankan      html  css  js  c++  java
  • spring-mybatis-springMVC 整合

    这是一个spring mybatis springMVC 的整合 里面包括日志,druid,的配置。可以说是一个现成的模板,直接复制下来就能用。


    首先是web.xml

    web.xml 中包括

    • Spring beans 配置文件所在目录
    • utf-8编码过滤器
    • spring的监听器
    • springmvc的配置
    • druid的配置
    • 默认的首页index

    这里说一下,springmvc没有指定springmvc的配置文件的位置,因为springmvc默认是去web-info文件夹下找spring-servlet.xml的配置文件的。需要注意一下。这里配置druid是因为我们要利用durid来监测我们访问的url,

    durid是一个非常出色数据库连接池。非常的强大,他自带的有监控界面,但是需要配置一下。

    <?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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 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>Archetype Created Web Application</display-name>
    
        <!-- Spring beans 配置文件所在目录 -->
        <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:applicationContext.xml</param-value>
        </context-param>
    
        <!-- Encoding -->
        <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>
            <init-param>
                <param-name>forceEncoding</param-name>
                <param-value>true</param-value>
            </init-param>
        </filter>
    
        <filter>
            <filter-name>DruidWebStatFilter</filter-name>
            <filter-class>com.alibaba.druid.support.http.WebStatFilter</filter-class>
            <init-param>
                <param-name>exclusions</param-name>
                <param-value>*.js,*.css,*.jpg,*.png,*.ico,*.gif,/sys/druid/*</param-value>
            </init-param>
        </filter>
        <filter-mapping>
            <filter-name>encodingFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
        <filter-mapping>
            <filter-name>DruidWebStatFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
    
        <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
    
        <!-- spring mvc 配置 -->
        <servlet>
            <servlet-name>spring</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        </servlet>
        <!-- druid -->
        <servlet>
            <servlet-name>DruidStatServlet</servlet-name>
            <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
            <init-param>
                <param-name>loginUsername</param-name>
                <param-value>druid</param-value>
            </init-param>
            <init-param>
                <param-name>loginPassword</param-name>
                <param-value>druid</param-value>
            </init-param>
        </servlet>
        <servlet-mapping>
            <servlet-name>spring</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
            <servlet-name>DruidStatServlet</servlet-name>
            <url-pattern>/sys/druid/*</url-pattern>
        </servlet-mapping>
    
        <welcome-file-list>
            <welcome-file>index.jsp</welcome-file>
        </welcome-file-list>
    </web-app>
    View Code

     spring-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:context="http://www.springframework.org/schema/context"
           xmlns:mvc="http://www.springframework.org/schema/mvc"
           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/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    
        <context:annotation-config />
    
        <!-- 启动注解驱动的spring mvc 功能 -->
        <mvc:annotation-driven/>
    
        <!--<mvc:interceptors>
            <bean class="com.mmall.common.HttpInterceptor" />
        </mvc:interceptors>-->
    
        <!-- 启动包扫描功能 -->
        <context:component-scan base-package="com.mmall.controller" />
        
    
        <mvc:resources location="/js/" mapping="/js/**"/>
        <mvc:resources location="/css/" mapping="/css/**"/>
        <mvc:resources location="/bootstrap3.3.5/" mapping="/bootstrap3.3.5/**"/>
        <mvc:resources location="/assets/" mapping="/assets/**"/>
        <mvc:resources location="/ztree/" mapping="/ztree/**"/>
    
        
        <!--他们两个一般配套使用,意思是根据你所需要的配置返回数据,比如说你要json数据,你在controller中加上@responseBody注解,他就会让jsonView这个类来处理-->
        <bean class="org.springframework.web.servlet.view.BeanNameViewResolver" />
        <bean id="jsonView" class="org.springframework.web.servlet.view.json.MappingJackson2JsonView" />
    
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/views/" />
            <property name="suffix" value=".jsp" />
        </bean>
    
    </beans>
    View Code

     mvc忽略静态文件的三种方法:https://www.cnblogs.com/banning/p/6195072.html

    applicationContext.xml

    • 这之前需要理一下关系。首先作为applicationContext.xml核心文件,肯定需要的是
    • 配置加载的属性文件.properties(数据库连接池用)
    • 配置数据库连接池dataSource(里面需要一些配置就不说了账号密码驱动之类的。。。)
    • 配置sqlSessionFactory(这个是mybatis提供的类,需要的属性有mybatisConfig.xml,数据库连接池dataSource,映射的mapper文件)
    • 配置扫描dao层接口的类(也是mybatis提供的,需要配置的参数有,你这个接口的位置,还有上面的sqlSessionFactory)
    • 需要事务tx(spring-jdbc提供的类,只需要把dataSource扔进去就行)
    • 配置事务的使用方法(一般都是注解,加上一句话就行,具体看代码)
    • druid的配置(这个可有可无)
    <?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: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.alibaba.com/schema/stat
           http://www.alibaba.com/schema/stat.xsd
           http://www.springframework.org/schema/mvc
           http://www.springframework.org/schema/mvc/spring-mvc.xsd
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
    
        <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
            <property name="ignoreUnresolvablePlaceholders" value="true"/>
            <property name="locations">
                <list>
                    <value>classpath:settings.properties</value>
                </list>
            </property>
        </bean>
        <!-- 扫描service层 -->
        <context:component-scan base-package="com.qytx.service"/>
        <!--<import resource="redis.xml" />-->
        <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
            <property name="driverClassName" value="${db.driverClassName}" />
            <property name="url" value="${db.url}" />
            <property name="username" value="${db.username}" />
            <property name="password" value="${db.password}" />
            <property name="initialSize" value="3" />
            <property name="minIdle" value="3" />
            <property name="maxActive" value="20" />
            <property name="maxWait" value="60000" />
            <property name="filters" value="stat,wall" />
        </bean>
    
        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="configLocation" value="classpath:mybatis-config.xml" />
            <property name="dataSource" ref="dataSource" />
            <property name="mapperLocations" value="classpath:mapper/*.xml" />
        </bean>
    
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <property name="basePackage" value="com.qytx.dao" />
            <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
        </bean>
    
        <!-- tx -->
        <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="dataSource" />
        </bean>
    
        <tx:annotation-driven transaction-manager="transactionManager" />
    
        <!-- druid -->
        <bean id="stat-filter" class="com.alibaba.druid.filter.stat.StatFilter">
            <property name="slowSqlMillis" value="3000" />
            <property name="logSlowSql" value="true" />
            <property name="mergeSql" value="true" />
        </bean>
        <bean id="wall-filter" class="com.alibaba.druid.wall.WallFilter">
            <property name="dbType" value="mysql" />
        </bean>
    
    </beans>
    View Code

    settings.properties(数据库连接参数)

    db.driverClassName=com.mysql.jdbc.Driver
    db.url=jdbc:mysql://localhost:3306/spring_security?useUnicode=true&characterEncoding=UTF-8
    db.username=root
    db.password=root
    View Code

     mybatis-config.xml

    <?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>
            <setting name="safeRowBoundsEnabled" value="true"/>
            <setting name="cacheEnabled" value="false" />
            <setting name="useGeneratedKeys" value="true" />
        </settings>
    
        <!--<typeAliases>-->
            <!---->
        <!--</typeAliases>-->
    
        <!--<plugins>-->
            <!--<plugin interceptor=""></plugin>-->
        <!--</plugins>-->
    
        <!--<typeHandlers>-->
            <!---->
        <!--</typeHandlers>-->
    
    </configuration>
    View Code

     logback.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <property name="LOG_HOME" value="/logs/permission" />
    
        <appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%logger{50}] %msg%n</pattern>
            </encoder>
        </appender>
    
        <appender name="normalLog"
                  class="ch.qos.logback.core.rolling.RollingFileAppender">
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <FileNamePattern>${LOG_HOME}/web.normal.%d{yyyy-MM-dd}.log
                </FileNamePattern>
                <MaxHistory>30</MaxHistory>
            </rollingPolicy>
            <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
                <maxFileSize>10MB</maxFileSize>
            </triggeringPolicy>
            <layout class="ch.qos.logback.classic.PatternLayout">
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
                </pattern>
            </layout>
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>ERROR</level>
                <onMatch>DENY</onMatch>
                <onMismatch>ACCEPT</onMismatch>
            </filter>
        </appender>
        <appender name="errorLog"
                  class="ch.qos.logback.core.rolling.RollingFileAppender">
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <FileNamePattern>${LOG_HOME}/web.error.%d{yyyy-MM-dd}.log
                </FileNamePattern>
                <MaxHistory>30</MaxHistory>
            </rollingPolicy>
            <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
                <maxFileSize>10MB</maxFileSize>
            </triggeringPolicy>
            <layout class="ch.qos.logback.classic.PatternLayout">
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
                </pattern>
            </layout>
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>ERROR</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>
        </appender>
    
    
        <logger name="com.mmall" level="debug" >
            <appender-ref ref="normalLog" />
            <appender-ref ref="errorLog" />
        </logger>
    
    
        <root level="info">
            <appender-ref ref="Console" />
        </root>
    </configuration>
    View Code

     

    pom.xml

    <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.imooc</groupId>
      <artifactId>permission</artifactId>
      <packaging>war</packaging>
      <version>1.0-SNAPSHOT</version>
      <name>permission Maven Webapp</name>
      <url>http://maven.apache.org</url>
    
      <properties>
        <springframework.version>4.3.10.RELEASE</springframework.version>
      </properties>
    
      <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>3.8.1</version>
          <scope>test</scope>
        </dependency>
    
    
        <!--spring核心  https://mvnrepository.com/artifact/org.springframework/spring-beans -->
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-beans</artifactId>
          <version>${springframework.version}</version>
        </dependency>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-context</artifactId>
          <version>${springframework.version}</version>
        </dependency>
    
        <!--Spring MVC + Spring web -->
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-web</artifactId>
          <version>${springframework.version}</version>
        </dependency>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-webmvc</artifactId>
          <version>${springframework.version}</version>
        </dependency>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-jdbc</artifactId>
          <version>${springframework.version}</version>
        </dependency>
    
    
        <!-- mybatis -->
        <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis</artifactId>
          <version>3.4.0</version>
        </dependency>
        <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis-spring</artifactId>
          <version>1.3.0</version>
        </dependency>
    
        <!-- druid -->
        <dependency>
          <groupId>com.alibaba</groupId>
          <artifactId>druid</artifactId>
          <version>1.0.20</version>
        </dependency>
    
        <!-- mysql -->
        <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>5.1.30</version>
        </dependency>
    
        <!-- lombok -->
        <dependency>
          <groupId>org.projectlombok</groupId>
          <artifactId>lombok</artifactId>
          <version>1.16.12</version>
        </dependency>
    
        <!-- Jackson -->
        <dependency>
          <groupId>com.fasterxml.jackson.datatype</groupId>
          <artifactId>jackson-datatype-guava</artifactId>
          <version>2.5.3</version>
        </dependency>
    
        <!-- logback -->
        <dependency>
          <groupId>ch.qos.logback</groupId>
          <artifactId>logback-core</artifactId>
          <version>1.1.8</version>
        </dependency>
        <dependency>
          <groupId>ch.qos.logback</groupId>
          <artifactId>logback-classic</artifactId>
          <version>1.1.8</version>
        </dependency>
        <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-api</artifactId>
          <version>1.7.22</version>
        </dependency>
    
        <!-- jsp api -->
        <dependency>
          <groupId>org.apache.tomcat</groupId>
          <artifactId>jsp-api</artifactId>
          <version>6.0.36</version>
        </dependency>
    
        <!-- validator -->
        <dependency>
          <groupId>javax.validation</groupId>
          <artifactId>validation-api</artifactId>
          <version>1.1.0.Final</version>
        </dependency>
        <dependency>
          <groupId>org.hibernate</groupId>
          <artifactId>hibernate-validator</artifactId>
          <version>5.2.4.Final</version>
        </dependency>
    
        <!-- tools -->
        <dependency>
          <groupId>commons-collections</groupId>
          <artifactId>commons-collections</artifactId>
          <version>3.2.2</version>
        </dependency>
        <dependency>
          <groupId>commons-codec</groupId>
          <artifactId>commons-codec</artifactId>
          <version>1.10</version>
        </dependency>
    
        <!-- jackson -->
        <dependency>
          <groupId>org.codehaus.jackson</groupId>
          <artifactId>jackson-core-asl</artifactId>
          <version>1.9.13</version>
        </dependency>
        <dependency>
          <groupId>org.codehaus.jackson</groupId>
          <artifactId>jackson-mapper-asl</artifactId>
          <version>1.9.13</version>
        </dependency>
    
        <dependency>
          <groupId>org.apache.commons</groupId>
          <artifactId>commons-lang3</artifactId>
          <version>3.5</version>
        </dependency>
    
        <!-- email -->
        <dependency>
          <groupId>org.apache.commons</groupId>
          <artifactId>commons-email</artifactId>
          <version>1.4</version>
        </dependency>
    
        <!-- redis -->
        <dependency>
          <groupId>redis.clients</groupId>
          <artifactId>jedis</artifactId>
          <version>2.8.1</version>
          <type>jar</type>
        </dependency>
    
    
      </dependencies>
      <build>
        <finalName>permission</finalName>
      </build>
    </project>
    View Code
  • 相关阅读:
    正则:连续数字
    [f]聊天的时间格式化
    微信物理返回刷新页面
    npm 使用记录
    Java内存可见性volatile
    EA通过MySQL多人协作
    Sonarqube Webhook自定义参数
    使用阿里云加速Docker镜像下载
    Java异常堆栈丢失的现象及解决方法
    fo-dicom库 Dicom.Native.dll如何自动到编译输出目录
  • 原文地址:https://www.cnblogs.com/coder-lzh/p/8640470.html
Copyright © 2011-2022 走看看