基于Maven的Spring/SpringMVC/Mybatis/Mybatis-plus/Apache-Shiro基础环境配置

记录一下,以便不时之需。

pom.xml

  1 <properties>
  2         <servlet-api.version>2.5</servlet-api.version>
  3         <spring.version>4.2.5.RELEASE</spring.version>
  4         <aspectjweaver.version>1.8.9</aspectjweaver.version>
  5
  6         <mybatis.version>3.4.0</mybatis.version>
  7         <mybatis.spring.version>1.3.0</mybatis.spring.version>
  8
  9         <!-- log -->
 10         <logback-classic.version>1.1.7</logback-classic.version>
 11         <logback-ext-spring.version>0.1.4</logback-ext-spring.version>
 12         <jcl-over-slf4j.version>1.7.21</jcl-over-slf4j.version>
 13
 14         <!-- data -->
 15         <druid.version>1.0.18</druid.version>
 16         <mysql-connector-java.version>5.1.38</mysql-connector-java.version>
 17
 18         <!-- shiro -->
 19         <shiro.version>1.2.2</shiro.version>
 20
 21         <!-- test -->
 22         <junit.version>4.12</junit.version>
 23     </properties>
 24
 25     <dependencies>
 26         <dependency>
 27             <groupId>javax.servlet</groupId>
 28             <artifactId>servlet-api</artifactId>
 29             <version>${servlet-api.version}</version>
 30             <scope>provided</scope>
 31         </dependency>
 32         <!-- https://mvnrepository.com/artifact/jstl/jstl -->
 33         <dependency>
 34             <groupId>jstl</groupId>
 35             <artifactId>jstl</artifactId>
 36             <version>1.2</version>
 37         </dependency>
 38         <dependency>
 39             <groupId>javax.mail</groupId>
 40             <artifactId>mail</artifactId>
 41             <version>1.4.7</version>
 42         </dependency>
 43
 44         <dependency>
 45             <groupId>org.aspectj</groupId>
 46             <artifactId>aspectjweaver</artifactId>
 47             <version>${aspectjweaver.version}</version>
 48         </dependency>
 49         <dependency>
 50             <groupId>org.springframework</groupId>
 51             <artifactId>spring-core</artifactId>
 52             <version>${spring.version}</version>
 53         </dependency>
 54
 55         <dependency>
 56             <groupId>org.springframework</groupId>
 57             <artifactId>spring-web</artifactId>
 58             <version>${spring.version}</version>
 59         </dependency>
 60         <dependency>
 61             <groupId>org.springframework</groupId>
 62             <artifactId>spring-oxm</artifactId>
 63             <version>${spring.version}</version>
 64         </dependency>
 65         <dependency>
 66             <groupId>org.springframework</groupId>
 67             <artifactId>spring-tx</artifactId>
 68             <version>${spring.version}</version>
 69         </dependency>
 70
 71         <dependency>
 72             <groupId>org.springframework</groupId>
 73             <artifactId>spring-jdbc</artifactId>
 74             <version>${spring.version}</version>
 75         </dependency>
 76
 77         <dependency>
 78             <groupId>org.springframework</groupId>
 79             <artifactId>spring-webmvc</artifactId>
 80             <version>${spring.version}</version>
 81         </dependency>
 82         <dependency>
 83             <groupId>org.springframework</groupId>
 84             <artifactId>spring-aop</artifactId>
 85             <version>${spring.version}</version>
 86         </dependency>
 87
 88         <dependency>
 89             <groupId>org.springframework</groupId>
 90             <artifactId>spring-context-support</artifactId>
 91             <version>${spring.version}</version>
 92         </dependency>
 93
 94         <dependency>
 95             <groupId>org.springframework</groupId>
 96             <artifactId>spring-test</artifactId>
 97             <version>${spring.version}</version>
 98         </dependency>
 99         <dependency>
100             <groupId>org.mybatis</groupId>
101             <artifactId>mybatis</artifactId>
102             <version>${mybatis.version}</version>
103         </dependency>
104         <dependency>
105             <groupId>org.mybatis</groupId>
106             <artifactId>mybatis-spring</artifactId>
107             <version>${mybatis.spring.version}</version>
108         </dependency>
109
110
111         <!-- log begin -->
112         <dependency>
113             <groupId>ch.qos.logback</groupId>
114             <artifactId>logback-classic</artifactId>
115             <version>${logback-classic.version}</version>
116         </dependency>
117         <dependency>
118             <groupId>org.logback-extensions</groupId>
119             <artifactId>logback-ext-spring</artifactId>
120             <version>${logback-ext-spring.version}</version>
121         </dependency>
122         <dependency>
123             <groupId>org.slf4j</groupId>
124             <artifactId>jcl-over-slf4j</artifactId>
125             <version>${jcl-over-slf4j.version}</version>
126         </dependency>
127         <!-- log end -->
128
129         <!-- data begin -->
130         <dependency>
131             <groupId>com.alibaba</groupId>
132             <artifactId>druid</artifactId>
133             <version>${druid.version}</version>
134         </dependency>
135         <dependency>
136             <groupId>mysql</groupId>
137             <artifactId>mysql-connector-java</artifactId>
138             <version>${mysql-connector-java.version}</version>
139         </dependency>
140         <!-- data end -->
141
142         <!-- test begin -->
143         <dependency>
144             <groupId>junit</groupId>
145             <artifactId>junit</artifactId>
146             <version>${junit.version}</version>
147             <scope>test</scope>
148         </dependency>
149         <!-- test end -->
150
151         <!-- json start -->
152         <dependency>
153             <groupId>com.fasterxml.jackson.core</groupId>
154             <artifactId>jackson-core</artifactId>
155             <version>2.1.0</version>
156         </dependency>
157         <dependency>
158             <groupId>com.fasterxml.jackson.core</groupId>
159             <artifactId>jackson-databind</artifactId>
160             <version>2.1.0</version>
161         </dependency>
162         <dependency>
163             <groupId>com.fasterxml.jackson.core</groupId>
164             <artifactId>jackson-annotations</artifactId>
165             <version>2.1.0</version>
166         </dependency>
167         <dependency>
168             <groupId>com.alibaba</groupId>
169             <artifactId>fastjson</artifactId>
170             <version>1.2.9</version>
171         </dependency>
172         <!-- json end -->
173
174
175         <!-- shiro start -->
176         <dependency>
177             <groupId>org.apache.shiro</groupId>
178             <artifactId>shiro-core</artifactId>
179             <version>1.2.2</version>
180         </dependency>
181         <dependency>
182             <groupId>org.apache.shiro</groupId>
183             <artifactId>shiro-web</artifactId>
184             <version>1.2.2</version>
185         </dependency>
186         <dependency>
187             <groupId>org.apache.shiro</groupId>
188             <artifactId>shiro-spring</artifactId>
189             <version>1.2.2</version>
190         </dependency>
191         <!-- shiro end -->
192         <!-- fileupload start -->
193         <dependency>
194             <groupId>commons-fileupload</groupId>
195             <artifactId>commons-fileupload</artifactId>
196             <version>1.2.1</version>
197         </dependency>
198         <dependency>
199             <groupId>commons-io</groupId>
200             <artifactId>commons-io</artifactId>
201             <version>2.5</version>
202         </dependency>
203         <!-- fileupload end -->
204
205         <!-- poi -->
206         <dependency>
207             <groupId>org.apache.poi</groupId>
208             <artifactId>poi-ooxml</artifactId>
209             <version>3.9</version>
210         </dependency>
211
212
213
214     </dependencies>
215
216     <profiles>
217         <profile>
218             <id>jdk16</id>
219             <activation>
220                 <activeByDefault>true</activeByDefault>
221                 <jdk>1.6</jdk>
222             </activation>
223             <properties>
224                 <maven.compiler.source>1.6</maven.compiler.source>
225                 <maven.compiler.target>1.6</maven.compiler.target>
226                 <maven.compiler.compilerVersion>1.6</maven.compiler.compilerVersion>
227                 <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
228             </properties>
229         </profile>
230     </profiles>
231
232     <build>
233         <finalName>gzwlw</finalName>
234         <resources>
235             <resource>
236                 <directory>src/main/java</directory>
237                 <includes>
238                     <include>**/*.xml</include>
239                 </includes>
240             </resource>
241             <resource>
242                 <directory>src/main/resources</directory>
243             </resource>
244         </resources>
245         <plugins>
246             <plugin>
247                 <artifactId>maven-compiler-plugin</artifactId>
248                 <configuration>
249                     <source>1.6</source>
250                     <target>1.6</target>
251                     <encoding>UTF-8</encoding>
252                 </configuration>
253             </plugin>
254             <!--jetty 插件,mvn jetty:run -->
255             <plugin>
256                 <groupId>org.eclipse.jetty</groupId>
257                 <artifactId>jetty-maven-plugin</artifactId>
258                 <version>9.3.7.v20160115</version>
259                 <configuration>
260                     <webApp>
261                         <contextPath>/</contextPath>
262                         <descriptor>${basedir}/src/main/webapp/WEB-INF/web.xml</descriptor>
263                     </webApp>
264                     <stopKey>exit</stopKey>
265                     <stopPort>9091</stopPort>
266                     <webAppSourceDirectory>${project.basedir}/src/main/webapp</webAppSourceDirectory>
267                     <scanIntervalSeconds>0</scanIntervalSeconds>
268                     <httpConnector>
269                         <port>8080</port>
270                     </httpConnector>
271                 </configuration>
272             </plugin>
273             <!-- tomcat 插件,mvn tomcat:run -->
274             <plugin>
275                 <groupId>org.codehaus.mojo</groupId>
276                 <artifactId>tomcat-maven-plugin</artifactId>
277                 <version>1.1</version>
278                 <configuration>
279                     <path>/</path>
280                     <port>8080</port>
281                     <uriEncoding>UTF-8</uriEncoding>
282                     <warFile>${project.build.directory}/${project.build.finalName}.war</warFile>
283                 </configuration>
284             </plugin>
285         </plugins>
286
287     </build>

jdbc.properties

## MySqlConfig
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8
jdbc.username=root
jdbc.password=root

logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="true" scanPeriod="1000 seconds">
    <timestamp key="date" datePattern="yyyyMMdd" />
    <!-- 输出到控制台 -->
    <appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>[%d{yyyy-MM-dd HH:mm:ss} %level %c:%L]\n%msg%n\n</pattern>
<!--             <charset>UTF-8</charset> -->
        </encoder>
    </appender>
    <!-- 输出到文件 -->
    <appender name="File"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>./logs/ssm.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>
                ./logs/ssm.%d{yyyy-MM-dd}.log
            </FileNamePattern>
            <!-- 保存前10天的日志文件 -->
            <MaxHistory>10</MaxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>[%d{yyyy-MM-dd HH:mm:ss} %level %c:%L]\n%msg%n\n</pattern>
<!--             <charset>UTF-8</charset> -->
        </encoder>
    </appender>

    <!-- 输出到数据库 -->
    <appender name="Database" class="ch.qos.logback.classic.db.DBAppender">
        <connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource">
            <dataSource class="com.alibaba.druid.pool.DruidDataSource">
                <driverClass>com.mysql.jdbc.Driver</driverClass>
                <url>jdbc:mysql://127.0.0.1:3306/test</url>
                <user>root</user>
                <password>root</password>
            </dataSource>
        </connectionSource>
    </appender>

    <!-- 打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF 默认是DEBUG -->
    <root level="DEBUG">
        <appender-ref ref="Console" />
        <!-- 不写入文件和数据库(影响程序效率)
        <appender-ref ref="File" />
        <appender-ref ref="Database" /> -->
    </root>
    <logger name="org.springframework" level="ERROR" />

    <!-- 不需要打印日志的包-->
    <logger name="org.apache.shiro" level="OFF" />
</configuration>

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>
    <!--
     | 全局配置设置
     |
     | 可配置选项                                        默认值, 描述
     |
     | aggressiveLazyLoading     true, 当设置为‘true’的时候,懒加载的对象可能被任何懒属性全部加载。否则,每个属性都按需加载。
     | multipleResultSetsEnabled true, 允许和不允许单条语句返回多个数据集(取决于驱动需求)
     | useColumnLabel            true, 使用列标签代替列名称。不同的驱动器有不同的作法。参考一下驱动器文档,或者用这两个不同的选项进行测试一下。
     | useGeneratedKeys          false, 允许JDBC 生成主键。需要驱动器支持。如果设为了true,这个设置将强制使用被生成的主键,有一些驱动器不兼容不过仍然可以执行。
     | autoMappingBehavior       PARTIAL, 指定MyBatis 是否并且如何来自动映射数据表字段与对象的属性。PARTIAL将只自动映射简单的,没有嵌套的结果。FULL 将自动映射所有复杂的结果。
     | defaultExecutorType       SIMPLE, 配置和设定执行器,SIMPLE 执行器执行其它语句。REUSE 执行器可能重复使用prepared statements 语句,BATCH执行器可以重复执行语句和批量更新。
     | defaultStatementTimeout   null, 设置一个时限,以决定让驱动器等待数据库回应的多长时间为超时
     | -->
    <settings>
        <!-- 这个配置使全局的映射器启用或禁用缓存 -->
        <setting name="cacheEnabled" value="true" />
        <!-- 全局启用或禁用延迟加载。当禁用时,所有关联对象都会即时加载 -->
        <setting name="lazyLoadingEnabled" value="true" />
        <setting name="multipleResultSetsEnabled" value="true" />
        <setting name="useColumnLabel" value="true" />
        <setting name="defaultExecutorType" value="REUSE" />
        <setting name="defaultStatementTimeout" value="25000" />
    </settings>

    <!-- mybatis 性能拦截器
    <plugins>
        <plugin interceptor="org.jeeweb.interceptor.PerformanceInterceptor"></plugin>
    </plugins> -->
</configuration>

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

    <!-- 激活自动代理功能 -->
    <aop:aspectj-autoproxy proxy-target-class="true" /> 

    <!-- 自动装载 @Component, @Repository, @Service, @Controller, @RestController, @ControllerAdvice-->
    <context:component-scan base-package="com.runnet">
        <!-- 排除@Controller, 该组件由servlet-context.xml单独扫描 -->
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
        <!-- 排除@Service, 该组件由app-transaction.xml单独扫描 -->
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>
    </context:component-scan>
</beans>

servlet-context.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-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/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd">

    <mvc:annotation-driven />
    <!-- 扫描 controller -->
    <context:component-scan base-package="org.jeeweb.controller" />

    <!-- 静态资源放行 -->
    <mvc:resources mapping="/resources/**" location="/resources/" />
    <mvc:resources mapping="/css/**" location="/css/" />
    <mvc:resources mapping="/images/**" location="/images/" />
    <mvc:resources mapping="/js/**" location="/js/" />

    <!-- 视图解析器 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/" />
        <property name="suffix" value=".jsp" />
    </bean>

    <!-- Jackson转换器 -->
    <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" />
    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"  >
        <property name="messageConverters">
           <list>
              <ref bean="mappingJacksonHttpMessageConverter" /><!-- json转换器 -->
           </list>
        </property>
     </bean>

    <mvc:annotation-driven>
        <!-- 编码转换 -->
        <mvc:message-converters>
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                <property name="supportedMediaTypes">
                    <list>
                        <value>text/plain;charset=UTF-8</value>
                        <value>text/html;charset=UTF-8</value>
                        <value>application/json;charset=UTF-8</value>
                    </list>
                </property>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven> 

    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="maxUploadSize" value="32505856" /><!-- 上传文件大小限制为31M,31*1024*1024 -->
        <property name="maxInMemorySize" value="4096" />
    </bean>
</beans>

app-datasource.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:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-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/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">

    <!-- 引入属性文件 -->
    <context:property-placeholder location="classpath:jdbc.properties" ignore-unresolvable="true"/>

    <!-- 配置Druid数据源 -->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
        init-method="init" destroy-method="close">
        <property name="driverClassName" value="${jdbc.driverClassName}" />
        <property name="url" value="${jdbc.url}" />
        <property name="username" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
    </bean>

    <!-- MyBatis SqlSessionFactoryBean 配置 -->
    <bean id="sqlSessionFactory" class="org.jeeweb.core.mybatisplus.spring.MybatisSqlSessionFactoryBean">
           <property name="dataSource" ref="dataSource" />
        <property name="configLocation" value="classpath:mybatis-config.xml" />
        <property name="mapperLocations" value="classpath:org/jeeweb/**/dao/mapper/*Mapper.xml" />
        <property name="plugins">
            <array>
                <!-- 分页插件配置 -->
                <bean id="paginationInterceptor" class="org.jeeweb.core.mybatisplus.plugins.PaginationInterceptor">
                    <property name="dialectType" value="mysql" />
                </bean>
            </array>
        </property>
    </bean>

    <!-- 加载 mapper.xml 接口 配置文件 -->
    <bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="org.jeeweb.dao" />
    </bean>

</beans>

app-transaction.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:tx="http://www.springframework.org/schema/tx"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-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/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">

    <!-- 扫描 service -->
    <context:component-scan base-package="org.jeeweb.service" />

    <!-- 使用annotation注解方式配置事务 -->
    <tx:annotation-driven transaction-manager="transactionManager" />

    <!-- 使用JDBC事物 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>

    <!-- 定义事务通知 -->
    <tx:advice id="transactionAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="select*" read-only="true" propagation="REQUIRED" />
            <tx:method name="delete*"  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(* com.runnet.*.service.*.*(..))"/>
        <aop:advisor pointcut-ref="transactionPointcut" advice-ref="transactionAdvice"/>
    </aop:config>
</beans>

app-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: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/tx http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    <!-- 自定义realm-->
    <bean id="myRealm" class="org.jeeweb.framework.authority.ShiroDataBaseRealm" />

    <!-- 配置权限管理器 -->
    <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
        <property name="realm" ref="myRealm" />
        <!-- 缓存管理器 -->
        <property name="cacheManager" ref="cacheManager" />
    </bean>

    <!-- shiro的过滤器工厂类,id- shiroFilter和web.xml中配置的过滤器一致 -->
    <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
        <!-- 权限管理器 -->
        <property name="securityManager" ref="securityManager" />
        <!-- 登陆页面 -->
        <property name="loginUrl" value="/targetToLogin.do" />
        <!-- 登录成功后的跳转地址,如果你访问的是非/login地址,则跳到您访问的地址 -->
        <property name="successUrl" value="/main.do" />
        <!-- 如果您请求的资源不再您的权限范围,则跳转到/denied请求地址 -->
        <property name="unauthorizedUrl" value="/denied.do" />
        <!-- 权限配置 -->
        <property name="filterChainDefinitions">
            <value>
                <!-- anon表示此地址不需要任何权限即可访问 -->
                /resources/**=anon
                /login.do=anon
                /targetToLogin.do=anon
                /doLogin.do=anon
                /index.jsp=anon
                <!--所有的请求(除去配置的静态资源请求或请求地址为anon的请求)都要通过登录验证,如果未登录则跳到/login -->
                /** = authc
            </value>
        </property>
    </bean>

    <bean id="cacheManager" class="org.apache.shiro.cache.MemoryConstrainedCacheManager" />
    <bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor" />

</beans>

web.xml

<?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"
	version="2.5">
	<!-- Spring 配置路径 -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:spring/spring-framework.xml,classpath:spring/app-*.xml</param-value>
	</context-param>

	<!-- LogBack 日志管理文件 -->
	<context-param>
		<param-name>logbackConfigLocation</param-name>
		<param-value>classpath:logback.xml</param-value>
	</context-param>
	<listener>
		<listener-class>ch.qos.logback.ext.spring.web.LogbackConfigListener</listener-class>
	</listener>

	<!-- Spring 监听启动 -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	<listener>
		<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
	</listener>
	<servlet>
		<servlet-name>springServlet</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:spring/servlet-context.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>springServlet</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>

	<!-- 检测开发环境,/druid/index.html -->
	<servlet>
		<servlet-name>druidStatView</servlet-name>
		<servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>druidStatView</servlet-name>
		<url-pattern>/druid/*</url-pattern>
	</servlet-mapping>

	<!-- Shiro配置 -->
	<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>

	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
</web-app>

  

时间: 2024-08-11 04:20:20

基于Maven的Spring/SpringMVC/Mybatis/Mybatis-plus/Apache-Shiro基础环境配置的相关文章

使用intellij idea搭建MAVEN+SSM(Spring+SpringMVC+MyBatis)框架

基本概念 使用SSM(Spring,SpringMVC和Mybatis) 1.1.Spring Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来.它是为了解决企业应用开发的复杂性而创建的.Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情.然而,Spring的用途不仅限于服务器

基于maven进行spring 和mybatis的整合(Myeclpise)

学习日记:基于maven进行spring和mybatis的整合,进行分页查询 什么是maven:maven是一个项目管理工具,使用maven可以自动管理java项目的整个生命周期,包括编译.构建.测试.发布和报告等.在大型项目开发中,使用maven来管理是必不可少的. 开发工具myeclipse:myclipse 10.0自带了maven的插件.也可以网上下载maven插件 1.新建一个maven project,点击next,选择maven-archetype-webapp,点击next,填写

使用maven整合spring+springmvc+mybatis

使用maven整合spring+springmvc+mybatis 开发环境: 1. jdk1.8 2. eclipse4.7.0 (Oxygen) 3. mysql 5.7 在pom.xml文件中,引入我们需要的jar包:(按需引入jar包) <properties> <!-- 自定义的spring的版本号 --> <spring.version>4.3.18.RELEASE</spring.version> <!-- 自定义的mybaits的版本号

SSM(MyBatis+Spring+SpringMVC)之MyBatis总结

对于SSM(MyBatis+Spring+SpringMVC)之MyBatis总结 对于ORM持久化框架之前一直是用的JDBC去连接数据库 ,对于JDBC来连接库来说可能存在一些不足,那么MyBatis确切的说只能算半持久化框架,因为MyBatis是需要我们去自动的编写我们的SQL语句的,我们可以用JDBC&MyBatis做一些比较 我们在使用JDBC的时候会对数据库进行一些频繁创建连接和释放连接的操作从而影响的整个系统的性能.那么针对这一方面我们的MyBatis很好的利用了数据库连接池来对我们

IDEA中maven搭建Spring+SpringMVC+mybatis项目

一.介绍 使用IDEA搭建maven web项目,整合框架Spring+SpringMVC+mybatis 项目结构图: 二.搭建 1.新建maven项目 2.创建项目结构(如上图) 3.配置pom.xml 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 2 xsi:schemaLocation=

整合spring,springmvc和mybatis

我创建的是maven项目,使用到的依赖架包有下面这些: <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.1.2.RELEASE</version> </dependency> <dependency> <

Spring + SpringMVC + Druid + MyBatis 灵活的后端解决方案

生命不息,折腾不止. 折腾能遇到很多坑,填坑我理解为成长. 两个月前自己倒腾了一套用开源框架构建的 JavaWeb 后端解决方案. Spring + SpringMVC + Druid + JPA(Hibernate impl) 给你一个稳妥的后端解决方案 引入到项目组后经过几番打磨,现在也出落的有模有样. 最近将工程中的 Hibernate 换了换 Mybatis 试试,毕竟人都需要新鲜感. 我 Hibernate 接触的要比 MyBatis 早,作为最流行的两 ORM 框架,个人认为其中很多

基于Maven构建整合SpringMVC+Mybtis+Druid

前几天趁空闲时间整合了下SpringMVC+Mybatis+Druid,这里小记录下,这个Demo是基于Maven构建的,数据源用的是阿里巴巴温少的开源项目Druid,数据库用的是Mysql. 由于eclipse去安装Maven很不方便,也老出错,这里我使用的是Spring Tool Suite(STS,基于 Spring IDE ,提供了其它的一些特性,如 基于 Spring dm Server 的osgi 开发,及其它一些 Spring 项目的支持,如 Spring Roo , Spring

在Intellij Idea中使用Maven创建Spring&amp;SpringMVC项目

环境及版本 Jetbrains Intellij Idea 15.0.6 Spring 4.1.6 JDK 1.8.0_20 Tomcat 8 Windows 10 从 Maven archetype 创建 Java Web 项目 点击 File > New > Project > Maven,勾选 Create from archetype 并在列表中选择 maven-archetype-webapp . 随后的步骤自行设置: 随后Maven 会根据默认的 pom.xml 自动导入依赖