ssm+shrio+...框架的后台开发pom.xml maven包

4 篇文章 0 订阅
1 篇文章 0 订阅
// 注意里面的版本一定要和相应的软件、包相对应
<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>zhuoyue.com</groupId>
   <artifactId>ResearchManagement</artifactId>
   <packaging>war</packaging>
   <version>1.0-SNAPSHOT</version>
   <name>ResearchManagement Maven Webapp</name>
   <url>http://maven.apache.org</url>
   <properties>
      <spring.version>4.3.5.RELEASE</spring.version>
      <!-- mybatis版本号 -->
      <mybatis.version>3.3.1</mybatis.version>
      <mybatis-spring.version>1.2.5</mybatis-spring.version>
      <!-- mybatis分页插件 -->
      <mybatis-pagehelper.version>4.0.3</mybatis-pagehelper.version>
      <!-- log4j日志文件管理包版本 -->
      <slf4j.version>1.7.12</slf4j.version>
      <log4j.version>2.11.0</log4j.version>
      <commons-lang3.version>3.3</commons-lang3.version>
      <commons-collections.version>3.2.1</commons-collections.version>
      
      <!-- shiro版本号 -->
      <shiro.version>1.2.3</shiro.version>
      <ehcache.version>2.6.9</ehcache.version>
      <servlet-api.version>3.1.0</servlet-api.version>
      
      <cxf.version>2.7.8</cxf.version>
   </properties>
   <dependencies>
      <!--Unit Test - 单元测试-->
      <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <version>4.12</version>
      </dependency>
      <!-- 日志文件管理包 -->
      <!-- log start -->
      <dependency>
         <groupId>org.slf4j</groupId>
         <artifactId>slf4j-api</artifactId>
         <version>${slf4j.version}</version>
      </dependency>
      <dependency>
         <groupId>org.slf4j</groupId>
         <artifactId>jcl-over-slf4j</artifactId>
         <version>${slf4j.version}</version>
         <scope>runtime</scope>
      </dependency>
      <dependency>
         <groupId>org.apache.logging.log4j</groupId>
         <artifactId>log4j-api</artifactId>
         <version>${log4j.version}</version>
      </dependency>
      <dependency>
         <groupId>org.apache.logging.log4j</groupId>
         <artifactId>log4j-core</artifactId>
         <version>${log4j.version}</version>
      </dependency>
      <dependency>
         <groupId>org.apache.logging.log4j</groupId>
         <artifactId>log4j-slf4j-impl</artifactId>
         <version>${log4j.version}</version>
      </dependency>
      <dependency>
         <groupId>org.apache.logging.log4j</groupId>
         <artifactId>log4j-web</artifactId>
         <version>${log4j.version}</version>
         <scope>runtime</scope>
      </dependency>
      <!-- log end -->
      <!--Spring-->
      <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-core</artifactId>
         <version>${spring.version}</version>
      </dependency>
      <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-aop</artifactId>
         <version>${spring.version}</version>
      </dependency>
      <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-orm</artifactId>
         <version>${spring.version}</version>
      </dependency>
      <!--Spring transaction-->
      <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-tx</artifactId>
         <version>${spring.version}</version>
      </dependency>
      <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-test</artifactId>
         <version>${spring.version}</version>
      </dependency>
      <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-mock</artifactId>
         <version>2.0.8</version>
      </dependency>
      <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-jdbc</artifactId>
         <version>${spring.version}</version>
      </dependency>
      <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-context</artifactId>
         <version>${spring.version}</version>
      </dependency>
      <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-context-support</artifactId>
         <version>${spring.version}</version>
      </dependency>
      <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-expression</artifactId>
         <version>${spring.version}</version>
      </dependency>
      <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-jms</artifactId>
         <version>${spring.version}</version>
      </dependency>
      <!-- xbean 如<amq:connectionFactory /> -->
      <dependency>
         <groupId>org.apache.xbean</groupId>
         <artifactId>xbean-spring</artifactId>
         <version>3.16</version>
      </dependency>
      
      <!--Spring Web + Spring MVC-->
      <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-web</artifactId>
         <version>${spring.version}</version>
      </dependency>
      <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-webmvc</artifactId>
         <version>${spring.version}</version>
      </dependency>
      
      <!-- websocket -->
      <dependency>
         <groupId>javax.websocket</groupId>
         <artifactId>javax.websocket-api</artifactId>
         <version>1.1</version>
      </dependency>
      <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-messaging</artifactId>
         <version>${spring.version}</version>
      </dependency>
      <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-websocket</artifactId>
         <version>${spring.version}</version>
      </dependency>

      <!--mysql jdbc-->
      <dependency>
         <groupId>mysql</groupId>
         <artifactId>mysql-connector-java</artifactId>
         <version>5.1.38</version>
      </dependency>
      <!--c3p0-->
      <dependency>
         <groupId>c3p0</groupId>
         <artifactId>c3p0</artifactId>
         <version>0.9.1.2</version>
      </dependency>
      <!--NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config-->
      <!-- https://mvnrepository.com/artifact/jstl/jstl -->
      <dependency>
         <groupId>jstl</groupId>
         <artifactId>jstl</artifactId>
         <version>1.2</version>
      </dependency>
      <!--file upload jar package-->
      <!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
      <dependency>
         <groupId>commons-fileupload</groupId>
         <artifactId>commons-fileupload</artifactId>
         <version>1.3.1</version>
      </dependency>
      <!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
      <dependency>
         <groupId>commons-io</groupId>
         <artifactId>commons-io</artifactId>
         <version>2.4</version>
      </dependency>
      <!--json-->
      <!-- https://mvnrepository.com/artifact/org.json/json -->
      <dependency>
         <groupId>org.json</groupId>
         <artifactId>json</artifactId>
         <version>20160212</version>
      </dependency>
      <!-- https://mvnrepository.com/artifact/net.sf.json-lib/json-lib -->
      <dependency>
         <groupId>net.sf.json-lib</groupId>
         <artifactId>json-lib</artifactId>
         <version>2.4</version>
      </dependency>
      <!-- https://mvnrepository.com/artifact/commons-lang/commons-lang -->
      <dependency>
         <groupId>commons-lang</groupId>
         <artifactId>commons-lang</artifactId>
         <version>2.6</version>
      </dependency>
      <!-- https://mvnrepository.com/artifact/commons-beanutils/commons-beanutils -->
      <dependency>
         <groupId>commons-beanutils</groupId>
         <artifactId>commons-beanutils</artifactId>
         <version>1.8.3</version>
      </dependency>
      <!-- https://mvnrepository.com/artifact/commons-collections/commons-collections -->
      <dependency>
         <groupId>commons-collections</groupId>
         <artifactId>commons-collections</artifactId>
         <version>3.2.1</version>
      </dependency>
      <!-- https://mvnrepository.com/artifact/net.sf.ezmorph/ezmorph -->
      <dependency>
         <groupId>net.sf.ezmorph</groupId>
         <artifactId>ezmorph</artifactId>
         <version>1.0.6</version>
      </dependency>
      <!--Base64 加解密-->
      <!-- https://mvnrepository.com/artifact/net.iharder/base64 -->
      <dependency>
         <groupId>net.iharder</groupId>
         <artifactId>base64</artifactId>
         <version>2.3.8</version>
      </dependency>
      <!-- https://mvnrepository.com/artifact/commons-codec/commons-codec -->
      <dependency>
         <groupId>commons-codec</groupId>
         <artifactId>commons-codec</artifactId>
         <version>1.10</version>
      </dependency>
      <dependency>
         <groupId>org.jetbrains</groupId>
         <artifactId>annotations-java5</artifactId>
         <version>RELEASE</version>
      </dependency>
      <!--mybatis-->
      <dependency>
         <groupId>org.mybatis</groupId>
         <artifactId>mybatis</artifactId>
         <version>${mybatis.version}</version>
      </dependency>
      <dependency>
         <groupId>org.mybatis</groupId>
         <artifactId>mybatis-spring</artifactId>
         <version>${mybatis-spring.version}</version>
      </dependency>
      
      <dependency>
         <groupId>javax.servlet</groupId>
         <artifactId>javax.servlet-api</artifactId>
         <version>3.0.1</version>
         <scope>provided</scope>
      </dependency>
      
      <!-- https://mvnrepository.com/artifact/com.google.collections/google-collections -->
      <dependency>
         <groupId>com.google.collections</groupId>
         <artifactId>google-collections</artifactId>
         <version>1.0</version>
      </dependency>
      
      <dependency>
         <groupId>org.aspectj</groupId>
         <artifactId>aspectjweaver</artifactId>
         <version>1.8.11</version>
      </dependency>
      <dependency>
         <groupId>org.aspectj</groupId>
         <artifactId>aspectjrt</artifactId>
         <version>1.8.11</version>
      </dependency>
      
      <!-- https://mvnrepository.com/artifact/org.bouncycastle/bcprov-jdk16 -->
      <dependency>
         <groupId>org.bouncycastle</groupId>
         <artifactId>bcprov-jdk16</artifactId>
         <version>1.46</version>
      </dependency>
      
      <!-- https://mvnrepository.com/artifact/net.sf.jmimemagic/jmimemagic -->
      <dependency>
         <groupId>net.sf.jmimemagic</groupId>
         <artifactId>jmimemagic</artifactId>
         <version>0.1.5</version>
      </dependency>
      
      <dependency>
         <groupId>javax.servlet</groupId>
         <artifactId>javax.servlet-api</artifactId>
         <version>3.1.0</version>
      </dependency>
      <!-- 映入JSON -->
      <dependency>
         <groupId>org.codehaus.jackson</groupId>
         <artifactId>jackson-mapper-asl</artifactId>
         <version>1.9.13</version>
      </dependency>
      <dependency>
         <groupId>com.fasterxml.jackson.core</groupId>
         <artifactId>jackson-core</artifactId>
         <version>2.8.3</version>
      </dependency>
      <dependency>
         <groupId>com.fasterxml.jackson.core</groupId>
         <artifactId>jackson-databind</artifactId>
         <version>2.8.3</version>
      </dependency>
      <dependency>
         <groupId>com.fasterxml.jackson.core</groupId>
         <artifactId>jackson-annotations</artifactId>
         <version>2.8.3</version>
      </dependency>
      
      <!-- https://mvnrepository.com/artifact/net.coobird/thumbnailator -->
      <dependency>
         <groupId>net.coobird</groupId>
         <artifactId>thumbnailator</artifactId>
         <version>0.4.8</version>
      </dependency>
      
      <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
      <dependency>
         <groupId>com.google.code.gson</groupId>
         <artifactId>gson</artifactId>
         <version>2.8.2</version>
      </dependency>
      
      <dependency>
         <groupId>com.github.pagehelper</groupId>
         <artifactId>pagehelper</artifactId>
         <version>4.1.6</version>
      </dependency>

      <!-- https://mvnrepository.com/artifact/joda-time/joda-time -->
      <dependency>
         <groupId>joda-time</groupId>
         <artifactId>joda-time</artifactId>
         <version>2.9.9</version>
      </dependency>

      <dependency>
         <groupId>org.apache.shiro</groupId>
         <artifactId>shiro-core</artifactId>
         <version>${shiro.version}</version>
      </dependency>
      <dependency>
         <groupId>org.apache.shiro</groupId>
         <artifactId>shiro-ehcache</artifactId>
         <version>${shiro.version}</version>
      </dependency>
      <dependency>
         <groupId>org.apache.shiro</groupId>
         <artifactId>shiro-web</artifactId>
         <version>${shiro.version}</version>
      </dependency>
      <dependency>
         <groupId>org.apache.shiro</groupId>
         <artifactId>shiro-spring</artifactId>
         <version>${shiro.version}</version>
      </dependency>

      <!-- velocity -->
      <dependency>
         <groupId>org.apache.velocity</groupId>
         <artifactId>velocity</artifactId>
         <version>1.7</version>
      </dependency>
      <dependency>
         <groupId>org.apache.velocity</groupId>
         <artifactId>velocity-tools</artifactId>
         <version>2.0</version>
      </dependency>
   </dependencies>
   <build>
      <finalName>ResearchManagement</finalName>
      <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
         <plugins>
            <plugin>
               <artifactId>maven-clean-plugin</artifactId>
               <version>3.0.0</version>
            </plugin>
            <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
            <plugin>
               <artifactId>maven-resources-plugin</artifactId>
               <version>3.0.2</version>
            </plugin>
            <plugin>
               <artifactId>maven-compiler-plugin</artifactId>
               <version>3.7.0</version>
            </plugin>
            <plugin>
               <artifactId>maven-surefire-plugin</artifactId>
               <version>2.20.1</version>
            </plugin>
            <plugin>
               <artifactId>maven-war-plugin</artifactId>
               <version>3.2.0</version>
            </plugin>
            <plugin>
               <artifactId>maven-install-plugin</artifactId>
               <version>2.5.2</version>
            </plugin>
            <plugin>
               <artifactId>maven-deploy-plugin</artifactId>
               <version>2.8.2</version>
            </plugin>
            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-compiler-plugin</artifactId>
               <version>2.3.2</version>
               <configuration>
                  <source>1.8</source>
                  <target>1.8</target>
               </configuration>
            </plugin>
         </plugins>
      </pluginManagement>
   </build>
</project>

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"
       version="3.0">
   <display-name>Archetype Created Web Application</display-name>
   <!-- Spring和mybatis的配置文件 -->
   <context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:applicationContext.xml</param-value>
   </context-param>
   <!-- 配置spring的默认profile 测试设置脚本:-Dspring.profiles.active="dev" -->
   <context-param>
      <param-name>spring.profiles.default</param-name>
      <param-value>product</param-value>
   </context-param>
   <!-- 编码过滤器 -->
   <filter>
      <filter-name>encodingFilter</filter-name>
      <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
      <async-supported>true</async-supported>
      <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>
   
   <filter>
      <filter-name>corsFilter</filter-name>
      <filter-class>com.zhuoyue.researchManement.filter.CorsFilter</filter-class>
      <init-param>
         <param-name>allowOrigin</param-name>
         <param-value>http://localhost,null,http://192.168.1.137:8080</param-value>
      </init-param>
      <init-param>
         <param-name>allowMethods</param-name>
         <param-value>GET,POST,PUT,DELETE,OPTIONS</param-value>
      </init-param>
      <init-param>
         <param-name>allowCredentials</param-name>
         <param-value>true</param-value>
      </init-param>
      <init-param>
         <param-name>allowHeaders</param-name>
         <param-value>Content-Type</param-value>
      </init-param>
   </filter>
   <filter-mapping>
      <filter-name>corsFilter</filter-name>
      <url-pattern>/*</url-pattern>
   </filter-mapping>
   
   <!-- 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 MVC servlet -->
   <servlet>
      <servlet-name>SpringMVC</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>SpringMVC</servlet-name>
      <url-pattern>/</url-pattern>
   </servlet-mapping>

   <!-- Shiro filter -->
   <filter>
      <filter-name>shiroFilter</filter-name>
      <filter-class>
         org.springframework.web.filter.DelegatingFilterProxy
      </filter-class>
   </filter>
   <filter-mapping>
      <filter-name>shiroFilter</filter-name>
      <url-pattern>/*</url-pattern>
   </filter-mapping>
</web-app>

 

spring-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="cacheEnabled" value="true" />
      <!-- 全局启用或禁用延迟加载。当禁用时,所有关联对象都会即时加载。 -->
      <setting name="lazyLoadingEnabled" value="true" />
      <!-- 当启用时,有延迟加载属性的对象在被调用时将会完全加载任意属性。否则,每种属性将会按需要加载。 -->
      <setting name="aggressiveLazyLoading" value="true" />
      <!-- 是否允许单条sql返回多个数据集(取决于驱动的兼容性)default:true -->
      <setting name="multipleResultSetsEnabled" value="true" />
      <!-- 是否可以使用列的别名(取决于驱动的兼容性)default:true -->
      <setting name="useColumnLabel" value="true" />
      <!-- 允许JDBC生成主键。需要驱动器支持。如果设为了true,这个设置将强制使用被生成的主键,有一些驱动器不兼容不过仍然可以执行。default:false -->
      <setting name="useGeneratedKeys" value="true" />
      <!-- 指定 MyBatis 如何自动映射 数据基表的列 NONE: 不映射 PARTAL:部分 FULL:全部 -->
      <setting name="autoMappingBehavior" value="PARTIAL" />
      <!-- 这是默认的执行类型(SIMPLE:简单;REUSE:执行器可能重复使用prepared statements语句;BATCH:执行器可以重复执行语句和批量更新) -->
      <setting name="defaultExecutorType" value="SIMPLE" />
      <!-- 使用驼峰命名法转换字段。 -->
      <setting name="mapUnderscoreToCamelCase" value="true" />
      <!-- 设置本地缓存范围 session:就会有数据的共享 statement:语句范围(这样就不会有数据的共享)default:session -->
      <setting name="localCacheScope" value="SESSION" />
      <!-- 设置但JDBC类型为空时,某些驱动程序要指定值,default:OTHER,插入空值时不需要指定类型 -->
      <setting name="jdbcTypeForNull" value="NULL" />
   </settings>
   <typeHandlers>
      <typeHandler handler="com.zhuoyue.researchManement.handler.SubjectClassificationTypeHandler"
                javaType="com.zhuoyue.researchManement.enums.SubjectClassification"/>
      <typeHandler handler="com.zhuoyue.researchManement.handler.SubjectCategoryTypeHandler"
                javaType="com.zhuoyue.researchManement.enums.SubjectCategory"/>
      <typeHandler handler="com.zhuoyue.researchManement.handler.FinancialcategoryTypeHandler"
                javaType="com.zhuoyue.researchManement.enums.SubjectFinancialcategory"/>
      <typeHandler handler="com.zhuoyue.researchManement.handler.SubjectStateTypeHandler"
                javaType="com.zhuoyue.researchManement.enums.SubjectState"/>
      <typeHandler handler="com.zhuoyue.researchManement.handler.SubjectSpecialistTypeTypeHandler"
                javaType="com.zhuoyue.researchManement.enums.SubjectSpecialistType"/>
      <typeHandler handler="com.zhuoyue.researchManement.handler.SubjectMediumStateTypeHandler"
                javaType="com.zhuoyue.researchManement.enums.SubjectMediumState"/>
      <typeHandler handler="com.zhuoyue.researchManement.handler.SubjectFinalStateTypeHandler"
                javaType="com.zhuoyue.researchManement.enums.SubjectFinalState"/>
      <typeHandler handler="com.zhuoyue.researchManement.handler.SubjectFinalTypeTypeHandler"
                javaType="com.zhuoyue.researchManement.enums.SubjectFinalType"/>
      <typeHandler handler="com.zhuoyue.researchManement.handler.SubjectChangeStateTypeHandler"
                javaType="com.zhuoyue.researchManement.enums.SubjectChangeState"/>
      <typeHandler handler="com.zhuoyue.researchManement.handler.SubjectChangeTypeTypeHandler"
                javaType="com.zhuoyue.researchManement.enums.SubjectChangeType"/>
      <typeHandler handler="com.zhuoyue.researchManement.handler.ActivityStateTypeHandler"
                javaType="com.zhuoyue.researchManement.enums.ActivityState"/>
      <typeHandler handler="com.zhuoyue.researchManement.handler.RoleTypeEnumTypeHandler"
                javaType="com.zhuoyue.researchManement.enums.RoleTypeEnum"/>
      <typeHandler handler="com.zhuoyue.researchManement.handler.SubjectBudgetsTypeHandler"
                javaType="java.util.List"/>

   </typeHandlers>
   <plugins>
      <!-- com.github.pagehelper为PageHelper类所在包名 -->
      <plugin interceptor="com.github.pagehelper.PageHelper">
         <!-- 4.0.0以后版本可以不设置该参数 -->
         <property name="dialect" value="mysql" />
         <!-- 该参数默认为false -->
         <!-- 设置为true时,会将RowBounds第一个参数offset当成pageNum页码使用 -->
         <!-- 和startPage中的pageNum效果一样 -->
         <property name="offsetAsPageNum" value="true" />
         <!-- 该参数认为false -->
         <!-- 设置为true时,使用RowBounds分页会进行count查询 -->
         <property name="rowBoundsWithCount" value="true" />
         <!-- 设置为true时,如果pageSize=0或者RowBounds.limit=0就会查询出全部的结果 -->
         <!-- (相当于没有执行分页查询,但是返回结果仍然是Page类型) -->
         <property name="pageSizeZero" value="true" />
         <!-- 3.3.0版本可用 - 分页参数合理化,默认false禁用 -->
         <!-- 启用合理化时,如果pageNum<1会查询第一页,如果pageNum>page会查询最后一页 -->
         <!-- 禁用合理化,如果pageNum<1或pageNum>pages会返回空数据 -->
         <property name="reasonable" value="false" />
         <!-- 3.5.0版本可用 - 为了支持startPage(Object params)方法 -->
         <!-- 增加一个'params'参数来配置参数映射,用于从Map或ServletRequest中取值 -->
         <!-- 可以配置pageNum,pageSize,count,pageSizeZero,reasonable,orderBy,不配置映射的用默认值 -->
         <!-- 不理解该含义的前提下,不要随便复制该配置 -->
         <property name="params" value="pageNum=pageNumKey;pageSize=pageSizeKey;" />
         <!-- 支持通过Mapper接口参数来传递分页参数 -->
         <property name="supportMethodsArguments" value="false" />
         <!-- always总是返回PageInfo类型,check检查返回类型是否为PageInfo,none返回Page -->
         <property name="returnPageInfo" value="none" />
      </plugin>
   </plugins>
</configuration>

spring-mybatis.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: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/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
   <!-- mybatis -->
   <bean id="writeTransactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
      <property name="dataSource" ref="dataSource" />
   </bean>

   <!-- 自动扫描事务注解 -->
   <tx:annotation-driven transaction-manager="writeTransactionManager" proxy-target-class = "true"/>
   
   <!-- 配置数据源 -->
   <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
      <property name="driverClass" value="${jdbc.driverClassName}"/>
      <property name="jdbcUrl" value="${jdbc.url}"/>
      <property name="user" value="${jdbc.username}"/>
      <property name="password" value="${jdbc.password}"/>
      <property name="minPoolSize" value="${c3p0.minPoolSize}"/>
      <property name="acquireIncrement" value="${c3p0.acquireIncrement}"/>
      <property name="acquireRetryAttempts" value="${c3p0.acquireRetryAttempts}"/>
      <property name="acquireRetryDelay" value="${c3p0.acquireRetryDelay}"/>
      <property name="autoCommitOnClose" value="${c3p0.autoCommitOnClose}"/>
      <property name="checkoutTimeout" value="${c3p0.checkoutTimeout}"/>
      <property name="idleConnectionTestPeriod" value="${c3p0.idleConnectionTestPeriod}"/>
      <property name="maxIdleTime" value="${c3p0.maxIdleTime}"/>
      <property name="testConnectionOnCheckin" value="${c3p0.testConnectionOnCheckin}"/>
      <property name="maxStatements" value="${c3p0.maxStatements}"/>
      <property name="maxStatementsPerConnection" value="${c3p0.maxStatementsPerConnection}"/>
      <property name="unreturnedConnectionTimeout" value="${c3p0.unreturnedConnectionTimeout}"/>
   </bean>
   
   <!-- 配置mybatisSqlSessionFactoryBean -->
   <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
      <property name="dataSource" ref="dataSource"/>
      <property name="configLocation" value="classpath:spring-mybatis-config.xml"/>
      <property name="mapperLocations" value="classpath:mapper/*.xml"/>
   </bean>
   <!-- 配置mybatis mapper接口 -->
   <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
      <property name="basePackage" value="com.zhuoyue.researchManement.dao"/>
      <!--<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>-->
   </bean>
   
   <!-- 配置事务管理器 -->
   <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
      <property name="dataSource" ref="dataSource"/>
   </bean>

</beans>

spring-mvc.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" xmlns:aop="http://www.springframework.org/schema/aop"
      xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
   
   
   <!--启动注解驱动的Spring MVC功能,注册请求url和注解POJO类方法的映射-->
   
   <mvc:annotation-driven conversion-service="conversionService">
      <!--处理请求返回json字符串的中文乱码问题 -->
      <mvc:message-converters register-defaults="true">
         <bean class="org.springframework.http.converter.StringHttpMessageConverter">
            <property name="supportedMediaTypes" value="text/html;charset=UTF-8"/>
         </bean>
         <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
            <property name="objectMapper">
               <bean class="com.fasterxml.jackson.databind.ObjectMapper">
                  <property name="serializationInclusion">
                     <value type="com.fasterxml.jackson.annotation.JsonInclude$Include">NON_NULL</value>
                  </property>
                  <property name="propertyNamingStrategy">
                     <bean class="com.fasterxml.jackson.databind.PropertyNamingStrategy.SnakeCaseStrategy"/>
                  </property>
               </bean>
            </property>
         </bean>
      </mvc:message-converters>
   </mvc:annotation-driven>

   <!-- 枚举类型自动绑定 -->
   <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
      <property name="converters">
         <set>
            <bean class="com.zhuoyue.researchManement.convert.StringToSubjectClassification" />
            <bean class="com.zhuoyue.researchManement.convert.StringtoSubjectCategory" />
            <bean class="com.zhuoyue.researchManement.convert.StringToFinancialcategoryConvert" />
            <bean class="com.zhuoyue.researchManement.convert.StringToSubjectState" />
            <bean class="com.zhuoyue.researchManement.convert.StringtoSubjectSpecialistType" />
            <bean class="com.zhuoyue.researchManement.convert.StringToSubjectFinalType" />
            <bean class="com.zhuoyue.researchManement.convert.StringtoSubjectChangeType" />
         </set>
      </property>
   </bean>
   
   <!-- 启动包扫描功能,以便注册带有@Controllers、@service、@repository、@Component等注解的类成为spring的bean -->
   <context:component-scan base-package="com.zhuoyue.researchManement.controller"/>

   <!-- 视图模式配置,velocity配置文件-->
   <bean id="velocityConfig" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
      <property name="resourceLoaderPath" value="/WEB-INF/view" />
      <property name="velocityProperties">
         <props>
            <prop key="input.encoding">UTF-8</prop>
            <prop key="output.encoding">UTF-8</prop>
         </props>
      </property>
   </bean>

   <!-- 配置后缀 -->
   <bean id="velocityViewResolver" class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">
      <property name="suffix" value=".html" />
      <property name="contentType" value="text/html;charset=UTF-8" />
      <property name="dateToolAttribute">
         <value>dateTool</value>
      </property>
      <property name="numberToolAttribute">
         <value>numberTool</value>
      </property>
   </bean>
   
   <!-- 访问静态文件(jpg,js,css)的方法 -->
   <mvc:resources location="/css/" mapping="/css/**" />
   <mvc:resources location="/js/" mapping="/js/**" />
   <!--<mvc:resources location="/styles/" mapping="/styles/**" />-->
   <!--<mvc:resources location="/Views/" mapping="/Views/**" />-->
   
   <!-- 配置文件上传,如果没有使用文件上传可以不用配置,当然如果不配,那么配置文件中也不必引入上传组件包 -->
   <bean id="multipartResolver"
        class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
      <!-- 默认编码 -->
      <property name="defaultEncoding" value="utf-8"/>
      <!-- 文件大小最大值 -->
      <property name="maxUploadSize" value="400000000"/>
      <!-- 内存中的最大值 -->
      <property name="maxInMemorySize" value="40960"/>
   </bean>
   
   <!-- AOP 注解方式 ;定义Aspect -->
   <!-- 激活组件扫描功能,在包"com.example.aop及其子包下面自动扫描通过注解配置的组件-->
   <context:component-scan base-package="com.zhuoyue.researchManement.aop"/>
   <!-- 启动AspectJ支持   只对扫描过的bean有效-->
   <aop:aspectj-autoproxy proxy-target-class="true"/>

   <!-- Shiro生命周期处理器 -->
   <bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor"/>

    <!-- 开启shiro注解 -->
    <bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" depends-on="lifecycleBeanPostProcessor">
        <property name="proxyTargetClass" value="true" />
    </bean>
    <bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor">
        <property name="securityManager" ref="securityManager" />
    </bean>
</beans>

log4j2.xml 的配置

<!-- status为不记录log4j本身的日志 -->
<configuration status="OFF">
    <properties>
        <property name="LOG_HOME">C:/logs</property>
        <property name="FILE_NAME">mylog</property>
    </properties>
    <appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <!-- ThresholdFilter相当于拦截器.info以上的命令不会被拦截. -->
            <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
        </Console>
        <File name="Error" fileName="${LOG_HOME}/error.log">
            <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="%d{yyyy.MM.dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
        </File>
        <RollingFile name="RollingFile" fileName="${LOG_HOME}/${FILE_NAME}.log"
                     filePattern="${LOG_HOME}/$${date:yyyy-MM}/${FILE_NAME}-%d{MM-dd-yyyy}-%i.log.gz">
            <PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
            <Policies>
                <TimeBasedTriggeringPolicy/>
                <SizeBasedTriggeringPolicy size="10 MB"/>
            </Policies>
        </RollingFile>
    </appenders>
    <loggers>
        <root level="info">
            <appender-ref ref="RollingFile"/>
            <appender-ref ref="Console"/>
            <appender-ref ref="Error" />
        </root>
        <Logger name="com.hlhdidi.servlet" additivity="false">
            <appender-ref ref="RollingFile"/>
            <appender-ref ref="Console"/>
        </Logger>
        <Logger name="com.hlhdidi.service" level="error" additivity="true">
            <appender-ref ref="Console"/>
        </Logger>
    </loggers>
</configuration>

jdbc.properties 的配置

#mysql
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://192.168.1.161:3307/research?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=true
jdbc.username=yangjiang
jdbc.password=123
#c3p0连接池信息
c3p0.minPoolSize=10
c3p0.maxPoolSize=100
#当连接池中的连接耗尽的时候c3p0一次同时获取的连接数
c3p0.acquireIncrement=3
#定义在从数据库获取新连接失败后重复尝试的次数
c3p0.acquireRetryAttempts=60
#两次连接中间隔时间,单位毫秒
c3p0.acquireRetryDelay=1000
#连接关闭时默认将所有未提交的操作回滚
c3p0.autoCommitOnClose=false
#当连接池用完时客户端调用getConnection()后等待获取新连接的时间,超时后将抛出SQLException,如设为0则无限
c3p0.checkoutTimeout=3000
#每120秒检查所有连接池中的空闲连接。Default: 0
c3p0.idleConnectionTestPeriod=120
#最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0
c3p0.maxIdleTime=600
#如果设为true那么在取得连接的同时将校验连接的有效性。Default: false
c3p0.testConnectionOnCheckin=false
#如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default: 0
c3p0.maxStatements=8
#maxStatementsPerConnection定义了连接池内单个连接所拥有的最大缓存statements数。Default: 0
c3p0.maxStatementsPerConnection=5
#自动超时回收Connection
c3p0.unreturnedConnectionTimeout=25

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:context="http://www.springframework.org/schema/context"
      xmlns:task="http://www.springframework.org/schema/task"
      xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd">
   
   <context:annotation-config/>
   <!-- 配置component所在的包,自动加载需要管理的Bean -->
   <context:component-scan base-package="com.zhuoyue.researchManement.service,com.zhuoyue.researchManement.dao"/>
   <import resource="spring-mybatis.xml"/>
   <import resource="spring-shiro.xml" />

   <context:component-scan base-package="com.zhuoyue.researchManement.common,com.zhuoyue.researchManement.util" />
   <!-- task任务扫描注解 -->
   <task:annotation-driven />
   <!-- 扫描任务 -->
   <context:component-scan base-package="com.zhuoyue.researchManement.task" />

   <bean class="com.zhuoyue.researchManement.util.FileUploadUtils">
      <property name="basePath" value="/server/researchManagement" />
   </bean>
   <bean class="com.zhuoyue.researchManement.util.SubjectOpenTimeUtil">
      <property name="basePath" value="/server/researchManagement/data/" />
   </bean>

   <beans profile="test"  >
      <context:property-placeholder location="classpath*:jdbc-test.properties" />
   </beans>
   <beans profile="dev"  >
      <context:property-placeholder location="classpath*:jdbc-dev.properties" />
   </beans>
   <beans profile="product"  >
      <context:property-placeholder location="classpath*:jdbc-product.properties" />
   </beans>
</beans>

shiro-ehcache.xml

<ehcache updateCheck="false" name="shiroCache">
    <defaultCache
            maxElementsInMemory="10000"
            eternal="false"
            timeToIdleSeconds="120"
            timeToLiveSeconds="120"
            overflowToDisk="false"
            diskPersistent="false"
            diskExpiryThreadIntervalSeconds="120"
    />
</ehcache>

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

    <!--&lt;!&ndash; 继承自AuthorizingRealm的自定义Realm,即指定Shiro验证用户登录的类为自定义的UserRealm.java &ndash;&gt;-->
    <!--<bean id="userRealm" class="com.zhuoyue.researchManement.shiro.UserRealm">-->
        <!--<property name="credentialsMatcher">-->
            <!--<bean class="org.apache.shiro.authc.credential.HashedCredentialsMatcher">-->
                <!--<property name="hashAlgorithmName" value="MD5"></property> &lt;!&ndash; 加密算法的名称 &ndash;&gt;-->
                <!--<property name="hashIterations" value="3"></property> &lt;!&ndash; 配置加密的次数 &ndash;&gt;-->
            <!--</bean>-->
        <!--</property>-->
    <!--</bean>-->

    <!--&lt;!&ndash; Shiro默认会使用Servlet容器的Session,可通过sessionMode属性来指定使用Shiro原生Session &ndash;&gt;-->
    <!--&lt;!&ndash; 即<property name="sessionMode" value="native"/>,详细说明见官方文档 &ndash;&gt;-->
    <!--&lt;!&ndash; 这里主要是设置自定义的单Realm应用,若有多个Realm,可使用'realms'属性代替 &ndash;&gt;-->
    <!--<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">-->
        <!--<property name="realm" ref="userRealm"/>-->
    <!--</bean>-->

    <!--&lt;!&ndash; Shiro主过滤器本身功能十分强大,其强大之处就在于它支持任何基于URL路径表达式的、自定义的过滤器的执行 &ndash;&gt;-->
    <!--&lt;!&ndash; Web应用中,Shiro可控制的Web请求必须经过Shiro主过滤器的拦截,Shiro对基于Spring的Web应用提供了完美的支持 &ndash;&gt;-->
    <!--<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">-->
        <!--&lt;!&ndash; Shiro的核心安全接口,这个属性是必须的 &ndash;&gt;-->
        <!--<property name="securityManager" ref="securityManager"/>-->
        <!--&lt;!&ndash; 要求登录时的链接(可根据项目的URL进行替换),非必须的属性,默认会自动寻找Web工程根目录下的"/login.html"页面 &ndash;&gt;-->
        <!--&lt;!&ndash;<property name="loginUrl" value="/login.jsp"/>&ndash;&gt;-->
        <!--&lt;!&ndash; 登录成功后要跳转的连接 &ndash;&gt;-->
        <!--<property name="successUrl" value="/views/admin/common/master.jsp"/>-->
        <!--&lt;!&ndash; 用户访问未对其授权的资源时,所显示的连接 &ndash;&gt;-->
        <!--&lt;!&ndash; 若想更明显的测试此属性可以修改它的值,如unauthor.jsp,然后用[玄玉]登录后访问/admin/listUser.jsp就看见浏览器会显示unauthor.jsp &ndash;&gt;-->
        <!--&lt;!&ndash; <property name="unauthorizedUrl" value="/no_permissions.jsp" />  &ndash;&gt;-->

        <!--<property name="filters">-->
            <!--<map>-->
                <!--<entry key="authc">-->
                    <!--<bean class="com.zhuoyue.researchManement.shiro.CustomAuthenticationFilter" />-->
                <!--</entry>-->
                <!--&lt;!&ndash;<entry key="role">&ndash;&gt;-->
                    <!--&lt;!&ndash;<bean class="com.zhuoyue.researchManement.shiro.CustomRolesAuthorizationFilter" />&ndash;&gt;-->
                <!--&lt;!&ndash;</entry>&ndash;&gt;-->
                <!--<entry key="logout">-->
                    <!--<bean class="com.zhuoyue.researchManement.shiro.CustomLogoutFilter" />-->
                <!--</entry>-->

            <!--</map>-->
        <!--</property>-->

        <!--&lt;!&ndash; Shiro连接约束配置,即过滤链的定义 &ndash;&gt;-->
        <!--&lt;!&ndash; 此处可配合我的这篇文章来理解各个过滤连的作用http://blog.csdn.net/jadyer/article/details/12172839 &ndash;&gt;-->
        <!--&lt;!&ndash; 下面value值的第一个'/'代表的路径是相对于HttpServletRequest.getContextPath()的值来的 &ndash;&gt;-->
        <!--&lt;!&ndash; anon:它对应的过滤器里面是空的,什么都没做,这里.do和.jsp后面的*表示参数,比方说login.jsp?main这种 &ndash;&gt;-->
        <!--&lt;!&ndash; authc:该过滤器下的页面必须验证后才能访问,它是Shiro内置的一个拦截器org.apache.shiro.web.filter.authc.FormAuthenticationFilter &ndash;&gt;-->
        <!--<property name="filterChainDefinitions">-->
            <!--<value>-->
                <!--&lt;!&ndash; anon表示此地址不需要任何权限即可访问 &ndash;&gt;-->
                <!--/api/user/login = anon-->
                <!--/api/user/logout = logout-->
                <!--/api/** = authc-->
                <!--/main/** = authc-->
                <!--/** = anon-->
            <!--</value>-->
        <!--</property>-->
    <!--</bean>-->
    <!--&lt;!&ndash; Shiro生命周期处理器 &ndash;&gt;-->
    <!--<bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor"/>-->


    <!-- Shiro的注解配置放在spring-mvc中 -->

    <!-- web.xml中shiro的filter对应的bean -->
    <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
        <!-- 管理器,必须设置 -->
        <property name="securityManager" ref="securityManager" />
        <!-- 拦截到,跳转到的地址,通过此地址去认证 -->
        <property name="loginUrl" value="/login" />
        <!-- 认证成功统一跳转到/admin/index.do,建议不配置,shiro认证成功自动到上一个请求路径 -->
        <property name="successUrl" value="/admin/index.do" />
        <!-- 通过unauthorizedUrl指定没有权限操作时跳转页面 -->
        <property name="unauthorizedUrl" value="/refuse.jsp" />
        <!-- 自定义filter,可用来更改默认的表单名称配置 -->
        <property name="filters">
            <map>
                <entry key="authc">
                    <bean class="com.zhuoyue.researchManement.shiro.CustomAuthenticationFilter" />
                </entry>
                <entry key="logout">
                    <bean class="com.zhuoyue.researchManement.shiro.CustomLogoutFilter" />
                </entry>
            </map>
        </property>
        <property name="filterChainDefinitions">
            <value>
                <!-- anon表示此地址不需要任何权限即可访问 -->
                /css/** = anon
                /js/** = anon
                /api/unit/area/list = anon
                /api/user/pubkey = anon
                /api/user/register = anon
                /api/user/login = anon
                /api/user/logout = logout
                /api/** = authc
                /explain/** = anon
                /register = anon
                /login = anon
                /logout = logout
                /** = authc
            </value>
        </property>
    </bean>

    <!-- securityManager安全管理器 -->
    <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
        <property name="realm" ref="customRealm" />
        <!-- 注入缓存管理器 -->
        <property name="cacheManager" ref="cacheManager" />
        <!-- 注入session管理器 -->
        <!-- <property name="sessionManager" ref="sessionManager" /> -->
        <!-- 记住我 -->
        <property name="rememberMeManager" ref="rememberMeManager" />
    </bean>

    <!-- 自定义realm -->
    <bean id="customRealm" class="com.zhuoyue.researchManement.shiro.UserRealm">
        <!-- 将凭证匹配器设置到realm中,realm按照凭证匹配器的要求进行散列 -->
         <property name="credentialsMatcher" ref="credentialsMatcher" />
    </bean>

    <!-- 凭证匹配器 -->
    <bean id="credentialsMatcher"
          class="org.apache.shiro.authc.credential.HashedCredentialsMatcher">
        <!-- 选用MD5散列算法 -->
        <property name="hashAlgorithmName" value="md5" />
        <!-- 进行一次加密 -->
        <property name="hashIterations" value="3" />
    </bean>

    <!-- 会话管理器 -->
    <bean id="sessionManager"
          class="org.apache.shiro.web.session.mgt.DefaultWebSessionManager">
        <!-- session的失效时长,单位毫秒 -->
        <property name="globalSessionTimeout" value="600000" />
        <!-- 删除失效的session -->
        <property name="deleteInvalidSessions" value="true" />
    </bean>
    <!-- 缓存管理器 -->
    <bean id="cacheManager" class="org.apache.shiro.cache.ehcache.EhCacheManager">
        <property name="cacheManagerConfigFile" value="classpath:shiro-ehcache.xml" />
    </bean>
    <!-- rememberMeManager管理器,写cookie,取出cookie生成用户信息 -->
    <bean id="rememberMeManager" class="org.apache.shiro.web.mgt.CookieRememberMeManager">
        <property name="cookie" ref="rememberMeCookie" />
    </bean>
    <!-- 记住我cookie -->
    <bean id="rememberMeCookie" class="org.apache.shiro.web.servlet.SimpleCookie">
        <!-- rememberMe是cookie的名字 -->
        <constructor-arg value="rememberMe" />
        <!-- 记住我cookie生效时间30天 -->
        <property name="maxAge" value="2592000" />
    </bean>
</beans>

velocity.properties

#encoding
input.encoding  =UTF-8
output.encoding=UTF-8
contentType=text/html;charset=UTF-8

#autoreload when vm changed
file.resource.loader.cache=false
file.resource.loader.modificationCheckInterval=1
velocimacro.library.autoreload=false

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值