日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Spring+SpringMVC+shiro+mysql(一)

發布時間:2023/11/27 生活经验 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring+SpringMVC+shiro+mysql(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Spring+SpringMVC+shiro+mysql(一)

  最近要做個后臺管理系統,就會設計到權限的管理控制,于是就想到 shiro ,下面是自己對Spring+shiro的一點點理解,記錄下來,一起多探討:

項目結構

?

1. pom.xml 配置

1.1. 版本屬性信息配置

 1 <properties>
 2         <!-- base setting -->
 3         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 4         <project.build.locales>zh_CN</project.build.locales>
 5         <project.build.jdk>1.8</project.build.jdk>
 6 
 7         <!-- plugin setting -->
 8         <mybatis.generator.generatorConfig.xml>${basedir}/src/test/java/generatorConfig.xml</mybatis.generator.generatorConfig.xml>
 9         <mybatis.generator.generatorConfig.properties>file:///${basedir}/src/test/java/generatorConfig.properties</mybatis.generator.generatorConfig.properties>
10 
11         <!-- plugin versions -->
12         <plugin.mybatis.generator>1.3.1</plugin.mybatis.generator>
13         <plugin.maven-compiler>3.1</plugin.maven-compiler>
14         <plugin.maven-surefire>2.18.1</plugin.maven-surefire>
15         <skipTests>true</skipTests>
16 
17         <!-- lib versions -->
18         <junit.version>4.11</junit.version>
19         <spring.version>4.0.2.RELEASE</spring.version>
20         <mybatis.version>3.2.2</mybatis.version>
21         <mybatis.spring.version>1.2.2</mybatis.spring.version>
22         <mysql.connector.version>5.1.6</mysql.connector.version>
23         <slf4j.version>1.6.6</slf4j.version>
24         <log4j.version>1.2.12</log4j.version>
25         <httpclient.version>4.1.2</httpclient.version>
26         <jackson.version>1.9.13</jackson.version>
27         <druid.version>1.0.5</druid.version>
28         <jstl.version>1.2</jstl.version>
29         <google.collections.version>1.0</google.collections.version>
30         <cglib.version>3.1</cglib.version>
31         <shiro.version>1.2.3</shiro.version>
32         <commons.fileupload.version>1.3.1</commons.fileupload.version>
33         <commons.codec.version>1.9</commons.codec.version>
34         <commons.net.version>3.3</commons.net.version>
35         <aspectj.version>1.6.12</aspectj.version>
36         <netty.version>4.0.18.Final</netty.version>
37         <hibernate.validator.version>5.1.1.Final</hibernate.validator.version>
38     </properties>
View Code

??1.2. 依賴庫信息配置

?

  1     <dependencies>
  2         <!-- springframe start -->
  3         <dependency>
  4             <groupId>org.springframework</groupId>
  5             <artifactId>spring-core</artifactId>
  6             <version>${spring.version}</version>
  7         </dependency>
  8 
  9         <dependency>
 10             <groupId>org.springframework</groupId>
 11             <artifactId>spring-web</artifactId>
 12             <version>${spring.version}</version>
 13         </dependency>
 14 
 15         <dependency>
 16             <groupId>org.springframework</groupId>
 17             <artifactId>spring-oxm</artifactId>
 18             <version>${spring.version}</version>
 19         </dependency>
 20 
 21         <dependency>
 22             <groupId>org.springframework</groupId>
 23             <artifactId>spring-tx</artifactId>
 24             <version>${spring.version}</version>
 25         </dependency>
 26 
 27         <dependency>
 28             <groupId>org.springframework</groupId>
 29             <artifactId>spring-jdbc</artifactId>
 30             <version>${spring.version}</version>
 31         </dependency>
 32 
 33         <dependency>
 34             <groupId>org.springframework</groupId>
 35             <artifactId>spring-webmvc</artifactId>
 36             <version>${spring.version}</version>
 37         </dependency>
 38 
 39         <dependency>
 40             <groupId>org.springframework</groupId>
 41             <artifactId>spring-aop</artifactId>
 42             <version>${spring.version}</version>
 43         </dependency>
 44 
 45         <dependency>
 46             <groupId>org.springframework</groupId>
 47             <artifactId>spring-context-support</artifactId>
 48             <version>${spring.version}</version>
 49         </dependency>
 50 
 51         <dependency>
 52             <groupId>org.springframework</groupId>
 53             <artifactId>spring-test</artifactId>
 54             <version>${spring.version}</version>
 55         </dependency>
 56         <!-- springframe end -->
 57 
 58         <!-- shiro -->
 59         <dependency>
 60             <groupId>org.apache.shiro</groupId>
 61             <artifactId>shiro-spring</artifactId>
 62             <version>${shiro.version}</version>
 63         </dependency>
 64         <dependency>
 65             <groupId>org.apache.shiro</groupId>
 66             <artifactId>shiro-ehcache</artifactId>
 67             <version>${shiro.version}</version>
 68         </dependency>
 69         <dependency>
 70             <groupId>org.apache.shiro</groupId>
 71             <artifactId>shiro-core</artifactId>
 72             <version>${shiro.version}</version>
 73         </dependency>
 74         <dependency>
 75             <groupId>org.apache.shiro</groupId>
 76             <artifactId>shiro-web</artifactId>
 77             <version>${shiro.version}</version>
 78         </dependency>
 79         <dependency>
 80             <groupId>org.apache.shiro</groupId>
 81             <artifactId>shiro-quartz</artifactId>
 82             <version>${shiro.version}</version>
 83         </dependency>
 84 
 85         <!-- mybatis start-->
 86         <dependency>
 87             <groupId>org.mybatis</groupId>
 88             <artifactId>mybatis</artifactId>
 89             <version>${mybatis.version}</version>
 90         </dependency>
 91 
 92         <dependency>
 93             <groupId>org.mybatis</groupId>
 94             <artifactId>mybatis-spring</artifactId>
 95             <version>${mybatis.spring.version}</version>
 96         </dependency>
 97         <!--mybatis end-->
 98 
 99         <!-- mysql-connector -->
100         <dependency>
101             <groupId>mysql</groupId>
102             <artifactId>mysql-connector-java</artifactId>
103             <version>${mysql.connector.version}</version>
104         </dependency>
105 
106         <!-- DruidDataSource -->
107         <dependency>
108             <groupId>com.alibaba</groupId>
109             <artifactId>druid</artifactId>
110             <version>${druid.version}</version>
111         </dependency>
112 
113         <!-- jackson -->
114         <dependency>
115             <groupId>org.codehaus.jackson</groupId>
116             <artifactId>jackson-mapper-asl</artifactId>
117             <version>${jackson.version}</version>
118         </dependency>
119 
120         <!-- log start -->
121         <dependency>
122             <groupId>log4j</groupId>
123             <artifactId>log4j</artifactId>
124             <version>${log4j.version}</version>
125         </dependency>
126         <dependency>
127             <groupId>org.slf4j</groupId>
128             <artifactId>slf4j-api</artifactId>
129             <version>${slf4j.version}</version>
130         </dependency>
131         <dependency>
132             <groupId>org.slf4j</groupId>
133             <artifactId>slf4j-log4j12</artifactId>
134             <version>${slf4j.version}</version>
135         </dependency>
136         <!-- log end -->
137 
138         <!-- start apache -->
139         <dependency>
140             <groupId>commons-fileupload</groupId>
141             <artifactId>commons-fileupload</artifactId>
142             <version>${commons.fileupload.version}</version>
143         </dependency>
144 
145         <dependency>
146             <groupId>org.apache.httpcomponents</groupId>
147             <artifactId>httpclient</artifactId>
148             <version>${httpclient.version}</version>
149         </dependency>
150 
151         <dependency>
152             <groupId>commons-codec</groupId>
153             <artifactId>commons-codec</artifactId>
154             <version>${commons.codec.version}</version>
155         </dependency>
156 
157         <dependency>
158             <groupId>commons-net</groupId>
159             <artifactId>commons-net</artifactId>
160             <version>${commons.net.version}</version>
161         </dependency>
162 
163         <dependency>
164             <groupId>commons-logging</groupId>
165             <artifactId>commons-logging</artifactId>
166             <version>1.1.3</version>
167         </dependency>
168         <dependency>
169             <groupId>commons-collections</groupId>
170             <artifactId>commons-collections</artifactId>
171             <version>3.2.1</version>
172         </dependency>
173         <!-- end apache -->
174  
175         <!-- google -->
176         <dependency>
177             <groupId>com.google.collections</groupId>
178             <artifactId>google-collections</artifactId>
179             <version>${google.collections.version}</version>
180         </dependency>
181 
182         <!-- cglib -->
183         <dependency>
184             <groupId>cglib</groupId>
185             <artifactId>cglib-nodep</artifactId>
186             <version>${cglib.version}</version>
187         </dependency>
188  
189         <!-- aspectjweaver -->
190         <dependency>
191             <groupId>org.aspectj</groupId>
192             <artifactId>aspectjweaver</artifactId>
193             <version>${aspectj.version}</version>
194         </dependency>
195         <dependency>
196             <groupId>org.aspectj</groupId>
197             <artifactId>aspectjrt</artifactId>
198             <version>${aspectj.version}</version>
199         </dependency>
200 
201         <!-- hibernate-validator -->
202         <dependency>
203             <groupId>org.hibernate</groupId>
204             <artifactId>hibernate-validator</artifactId>
205             <version>${hibernate.validator.version}</version>
206         </dependency>
207  
208         <!-- netty -->
209         <dependency>
210             <groupId>io.netty</groupId>
211             <artifactId>netty-all</artifactId>
212             <version>${netty.version}</version>
213         </dependency>
214  
215         <!-- junit -->
216         <dependency>
217             <groupId>junit</groupId>
218             <artifactId>junit</artifactId>
219             <version>${junit.version}</version>
220             <scope>test</scope>
221         </dependency>
222 
223         <!-- servlet api -->
224         <dependency>
225             <groupId>javax.servlet</groupId>
226             <artifactId>javax.servlet-api</artifactId>
227             <version>3.0.1</version>
228             <scope>provided</scope>
229         </dependency>
230 
231         <!-- jstl -->
232         <dependency>
233             <groupId>javax.servlet</groupId>
234             <artifactId>jstl</artifactId>
235             <version>${jstl.version}</version>
236         </dependency>
237     </dependencies>
View Code

?

??1.3. 編譯及tomcat部署配置

 1     <build>
 2         <finalName>shiro01</finalName>
 3         <plugins>
 4             <!-- web.xml 配置 -->
 5             <plugin>
 6                 <groupId>org.apache.maven.plugins</groupId>
 7                 <artifactId>maven-war-plugin</artifactId>
 8                 <version>2.6</version>
 9                 <configuration>
10                     <webXml>src/main/webapp/WEB-INF/web.xml</webXml>
11                 </configuration>
12             </plugin>
13             <!-- Tomcat 部署至本機 -->
14             <plugin>
15                 <groupId>org.apache.tomcat.maven</groupId>
16                 <artifactId>tomcat7-maven-plugin</artifactId>
17                 <version>2.2</version>
18                 <configuration>
19                   <url>http://localhost:8080/manager</url>
20                   <server>tomcat</server>
21                   <username>hunter</username> 
22                   <password>hunter</password>
23                   <path>/shiro01</path>
24                   <contextReloadable>true</contextReloadable>
25                 </configuration>
26               </plugin>
27               <!-- Mybatis generator代碼生成插件 配置 -->
28               <plugin>
29                 <groupId>org.mybatis.generator</groupId>
30                 <artifactId>mybatis-generator-maven-plugin</artifactId>
31                 <version>${plugin.mybatis.generator}</version>
32                 <configuration>
33                     <configurationFile>${mybatis.generator.generatorConfig.xml}</configurationFile>
34                     <overwrite>true</overwrite>
35                     <verbose>true</verbose>
36                 </configuration>
37               </plugin>
38         </plugins>
39     </build>
View Code

??

2. spring-mvc.xml 核心配置

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3        xmlns:aop="http://www.springframework.org/schema/aop"
 4        xmlns:context="http://www.springframework.org/schema/context"
 5        xmlns:mvc="http://www.springframework.org/schema/mvc"
 6        xmlns:tx="http://www.springframework.org/schema/tx"
 7        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 8        xmlns:p="http://www.springframework.org/schema/p"
 9        xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
10         http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
11         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd 
12         http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd 
13         http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
14 
15     <!-- 掃描controller(controller層注入) -->
16     <context:component-scan base-package="com.hunter.shiro.web.controller"/>
17 
18     <!-- 會自動注冊DefaultAnnotationHandlerMapping與AnnotationMethodHandlerAdapter 兩個bean,是spring MVC為@Controllers分發請求所必須的 -->
19     <!-- 指定自己定義的validator -->
20     <mvc:annotation-driven validator="validator"/>
21 
22     <!-- 以下 validator ConversionService 在使用 mvc:annotation-driven 會 自動注冊 -->
23     <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
24         <property name="providerClass" value="org.hibernate.validator.HibernateValidator"/>
25         <!-- 如果不加默認到 使用classpath下的 ValidationMessages.properties -->
26         <property name="validationMessageSource" ref="messageSource"/>
27     </bean>
28 
29     <!-- 國際化的消息資源文件(本系統中主要用于顯示/錯誤消息定制) -->
30     <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
31         <property name="basenames">
32             <list>
33                 <!-- 在web環境中一定要定位到classpath 否則默認到當前web應用下找 -->
34                 <value>classpath:messages</value>
35                 <value>classpath:org/hibernate/validator/ValidationMessages</value>
36             </list>
37         </property>
38         <property name="useCodeAsDefaultMessage" value="false"/>
39         <property name="defaultEncoding" value="UTF-8"/>
40         <property name="cacheSeconds" value="60"/>
41     </bean>
42 
43     <mvc:interceptors>
44         <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"/>
45     </mvc:interceptors>
46 
47     <bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
48         <property name="defaultLocale" value="zh_CN"/>
49     </bean>
50 
51     <!-- 支持返回json(避免IE在ajax請求時,返回json出現下載 ) -->
52     <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
53         <property name="messageConverters">
54             <list>
55                 <ref bean="mappingJacksonHttpMessageConverter"/>
56             </list>
57         </property>
58     </bean>
59     <bean id="mappingJacksonHttpMessageConverter"
60           class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
61         <property name="supportedMediaTypes">
62             <list>
63                 <value>text/plain;charset=UTF-8</value>
64                 <value>application/json;charset=UTF-8</value>
65             </list>
66         </property>
67     </bean>
68     <!-- 支持返回json -->
69 
70     <!-- 對模型視圖添加前后綴 -->
71     <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"
72           p:prefix="/WEB-INF/views/" p:suffix=".jsp"/>
73 
74     <!-- 啟用shrio授權注解攔截方式 -->
75     <aop:config proxy-target-class="true"></aop:config>
76     <bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor">
77         <property name="securityManager" ref="securityManager"/>
78     </bean>
79 </beans>
View Code

?

3. server.properties 配置

##JDBC Global Setting
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/hunter_shiro?useUnicode=true&characterEncoding=utf-8
jdbc.username=root
jdbc.password=hunter##DataSource Global Setting#配置初始化大小、最小、最大
ds.initialSize=1
ds.minIdle=1
ds.maxActive=20#配置獲取連接等待超時的時間 
ds.maxWait=60000#配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接,單位是毫秒
ds.timeBetweenEvictionRunsMillis=60000#配置一個連接在池中最小生存的時間,單位是毫秒
ds.minEvictableIdleTimeMillis=300000
View Code

?

4. spring-mybatis.xml 配置

  1 <?xml version="1.0" encoding="UTF-8"?>
  2 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context"
  3        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
  4        xmlns:tx="http://www.springframework.org/schema/tx" xmlns:p="http://www.springframework.org/schema/p"
  5        xmlns:util="http://www.springframework.org/schema/util" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
  6        xmlns:cache="http://www.springframework.org/schema/cache"
  7        xsi:schemaLocation="
  8     http://www.springframework.org/schema/context
  9     http://www.springframework.org/schema/context/spring-context.xsd
 10     http://www.springframework.org/schema/beans
 11     http://www.springframework.org/schema/beans/spring-beans.xsd
 12     http://www.springframework.org/schema/tx
 13     http://www.springframework.org/schema/tx/spring-tx.xsd
 14     http://www.springframework.org/schema/jdbc
 15     http://www.springframework.org/schema/jdbc/spring-jdbc.xsd
 16     http://www.springframework.org/schema/cache
 17     http://www.springframework.org/schema/cache/spring-cache.xsd
 18     http://www.springframework.org/schema/aop
 19     http://www.springframework.org/schema/aop/spring-aop.xsd
 20     http://www.springframework.org/schema/util
 21     http://www.springframework.org/schema/util/spring-util.xsd">
 22 
 23     <!-- 自動掃描shiro.web包 ,將帶有注解的類 納入spring容器管理 -->
 24     <context:component-scan base-package="com.hunter.shiro.web"></context:component-scan>
 25 
 26     <!-- 引入配置文件 -->
 27     <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
 28         <property name="locations">
 29             <list>
 30                 <value>classpath*:server.properties</value>
 31             </list>
 32         </property>
 33     </bean>
 34 
 35     <!-- dataSource 配置 -->
 36     <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
 37         <!-- 基本屬性 url、user、password -->
 38         <property name="url" value="${jdbc.url}"/>
 39         <property name="username" value="${jdbc.username}"/>
 40         <property name="password" value="${jdbc.password}"/>
 41 
 42         <!-- 配置初始化大小、最小、最大 -->
 43         <property name="initialSize" value="${ds.initialSize}"/>
 44         <property name="minIdle" value="${ds.minIdle}"/>
 45         <property name="maxActive" value="${ds.maxActive}"/>
 46 
 47         <!-- 配置獲取連接等待超時的時間 -->
 48         <property name="maxWait" value="${ds.maxWait}"/>
 49 
 50         <!-- 配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接,單位是毫秒 -->
 51         <property name="timeBetweenEvictionRunsMillis" value="${ds.timeBetweenEvictionRunsMillis}"/>
 52 
 53         <!-- 配置一個連接在池中最小生存的時間,單位是毫秒 -->
 54         <property name="minEvictableIdleTimeMillis" value="${ds.minEvictableIdleTimeMillis}"/>
 55 
 56         <property name="validationQuery" value="SELECT 'x'"/>
 57         <property name="testWhileIdle" value="true"/>
 58         <property name="testOnBorrow" value="false"/>
 59         <property name="testOnReturn" value="false"/>
 60 
 61         <!-- 打開PSCache,并且指定每個連接上PSCache的大小 -->
 62         <property name="poolPreparedStatements" value="false"/>
 63         <property name="maxPoolPreparedStatementPerConnectionSize" value="20"/>
 64 
 65         <!-- 配置監控統計攔截的filters -->
 66         <property name="filters" value="stat"/>
 67     </bean>
 68 
 69     <!-- myBatis文件 -->
 70     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
 71         <property name="dataSource" ref="dataSource" />
 72         <property name="configLocation" value="classpath:mybatis-config.xml"></property>
 73         <!-- 自動掃描entity目錄, 省掉Configuration.xml里的手工配置 -->
 74         <property name="mapperLocations" value="classpath:mappers/*.xml" />
 75     </bean>
 76 
 77     <!-- spring與mybatis整合配置,掃描所有mapper -->
 78     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
 79         <property name="basePackage" value="com.hunter.shiro.web.mapper" />
 80         <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
 81     </bean>
 82 
 83     <!-- 對dataSource 數據源進行事務管理 -->
 84     <bean id="transactionManager"
 85         class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
 86         <property name="dataSource" ref="dataSource" />
 87     </bean>
 88 
 89     <!-- 攔截器方式配置事物 -->
 90     <tx:advice id="transactionAdvice" transaction-manager="transactionManager">
 91         <tx:attributes>
 92             <!-- 對insert,update,delete 開頭的方法進行事務管理,只要有異常就回滾 -->
 93             <tx:method name="insert*" propagation="REQUIRED" rollback-for="java.lang.Throwable" />
 94             <tx:method name="update*" propagation="REQUIRED" rollback-for="java.lang.Throwable" />
 95             <tx:method name="delete*" propagation="REQUIRED" rollback-for="java.lang.Throwable" />
 96             <!-- get,find,select,count開頭的方法,開啟只讀,提高數據庫訪問性能 -->
 97             <tx:method name="get*" read-only="true" />
 98             <tx:method name="find*" read-only="true" />
 99             <tx:method name="select*" read-only="true" />
100             <tx:method name="count*" read-only="true" />
101             <!-- 對其他方法 使用默認的事務管理 -->
102             <tx:method name="*"/>
103         </tx:attributes>
104     </tx:advice>
105 
106     <!-- 事務 aop 配置 -->
107     <aop:config>
108         <aop:pointcut id="serviceMethods" expression="execution(* com.hunter.shiro.web.service..*(..))"/>
109         <aop:advisor advice-ref="transactionAdvice" pointcut-ref="serviceMethods"/>
110     </aop:config>
111 
112     <!-- 配置使Spring采用CGLIB代理 -->
113     <aop:aspectj-autoproxy proxy-target-class="true"/>
114 
115     <!-- 啟用對事務注解的支持 -->
116     <tx:annotation-driven transaction-manager="transactionManager"/>
117 
118     <!-- Cache配置 -->
119     <cache:annotation-driven cache-manager="cacheManager"/>
120     <bean id="ehCacheManagerFactory" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"
121           p:configLocation="classpath:ehcache.xml"/>
122     <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager"
123           p:cacheManager-ref="ehCacheManagerFactory"/>
124 </beans>
View Code

?

5. mybatis-config.xml?配置

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE configuration
 3         PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 4         "http://mybatis.org/dtd/mybatis-3-config.dtd">
 5 <configuration>
 6     <properties>
 7         <property name="dialectClass" value="com.hunter.shiro.core.feature.orm.dialect.MySql5Dialect"/>
 8     </properties>
 9 
10     <!-- 配置mybatis的緩存,延遲加載等等一系列屬性 -->
11     <settings>
12 
13         <!-- 全局映射器啟用緩存 -->
14         <setting name="cacheEnabled" value="true"/>
15 
16         <!-- 查詢時,關閉關聯對象即時加載以提高性能 -->
17         <setting name="lazyLoadingEnabled" value="true"/>
18 
19         <!-- 對于未知的SQL查詢,允許返回不同的結果集以達到通用的效果 -->
20         <setting name="multipleResultSetsEnabled" value="true"/>
21 
22         <!-- 允許使用列標簽代替列名 -->
23         <setting name="useColumnLabel" value="true"/>
24 
25         <!-- 不允許使用自定義的主鍵值(比如由程序生成的UUID 32位編碼作為鍵值),數據表的PK生成策略將被覆蓋 -->
26         <setting name="useGeneratedKeys" value="false"/>
27 
28         <!-- 給予被嵌套的resultMap以字段-屬性的映射支持 FULL,PARTIAL -->
29         <setting name="autoMappingBehavior" value="PARTIAL"/>
30 
31         <!-- 對于批量更新操作緩存SQL以提高性能 BATCH,SIMPLE -->
32         <!-- <setting name="defaultExecutorType" value="BATCH" /> -->
33 
34         <!-- 數據庫超過25000秒仍未響應則超時 -->
35         <!-- <setting name="defaultStatementTimeout" value="25000" /> -->
36 
37         <!-- Allows using RowBounds on nested statements -->
38         <setting name="safeRowBoundsEnabled" value="false"/>
39 
40         <!-- Enables automatic mapping from classic database column names A_COLUMN to camel case classic Java property names aColumn. -->
41         <setting name="mapUnderscoreToCamelCase" value="true"/>
42 
43         <!-- MyBatis uses local cache to prevent circular references and speed up repeated nested queries. By default (SESSION) all queries executed during a session are cached. If localCacheScope=STATEMENT 
44             local session will be used just for statement execution, no data will be shared between two different calls to the same SqlSession. -->
45         <setting name="localCacheScope" value="SESSION"/>
46 
47         <!-- Specifies the JDBC type for null values when no specific JDBC type was provided for the parameter. Some drivers require specifying the column JDBC type but others work with generic values 
48             like NULL, VARCHAR or OTHER. -->
49         <setting name="jdbcTypeForNull" value="OTHER"/>
50 
51         <!-- Specifies which Object's methods trigger a lazy load -->
52         <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
53 
54         <!-- 設置關聯對象加載的形態,此處為按需加載字段(加載字段由SQL指 定),不會加載關聯表的所有字段,以提高性能 -->
55         <setting name="aggressiveLazyLoading" value="false"/>
56 
57     </settings>
58 
59     <typeAliases>
60         <package name="com.hunter.shiro.web.model"/>
61     </typeAliases>
62 
63     <plugins>
64         <plugin interceptor="com.hunter.shiro.core.feature.orm.mybatis.PaginationResultSetHandlerInterceptor"/>
65         <plugin interceptor="com.hunter.shiro.core.feature.orm.mybatis.PaginationStatementHandlerInterceptor"/>
66     </plugins>
67 
68 </configuration>
View Code

?

6. spring-shiro.xml?配置

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:util="http://www.springframework.org/schema/util"
 3        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4        xsi:schemaLocation="
 5        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
 6        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
 7 
 8     <description>apache shiro配置</description>
 9 
10     <bean id="credentialsMatcher"
11         class="com.hunter.shiro.web.shiro.credentials.RetryLimitHashedCredentialsMatcher">
12         <constructor-arg ref="shiroEhcacheManager" />
13         <property name="hashAlgorithmName" value="md5" />
14         <property name="hashIterations" value="2" />
15         <property name="storedCredentialsHexEncoded" value="true" />
16     </bean>
17     
18     <!--自定義Realm -->
19     <bean id="securityRealm" class="com.hunter.shiro.web.shiro.SecurityRealm">
20         <property name="credentialsMatcher" ref="credentialsMatcher" />
21         <property name="cachingEnabled" value="false" />
22         <!-- 使用下面配置的緩存管理器 -->
23         <property name="cacheManager" ref="shiroEhcacheManager" />
24     </bean>
25     
26     <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
27         <property name="securityManager" ref="securityManager"/>
28         <property name="loginUrl" value="/login.htm"/>
29         <property name="successUrl" value="/success.htm"/>
30         <property name="unauthorizedUrl" value="/403.htm"/>
31         <property name="filterChainDefinitions">
32             <value>
33                 <!-- 靜態資源允許訪問 -->
34                 /app/** = anon
35                 /assets/** = anon
36                 <!-- 登錄頁允許訪問 -->
37                 /user/login.htm = anon
38                 <!-- 其他資源需要認證 -->
39                 /** = authc
40             </value>
41         </property>
42     </bean>
43 
44     <!-- 緩存管理器 使用Ehcache實現 -->
45     <bean id="shiroEhcacheManager" class="org.apache.shiro.cache.ehcache.EhCacheManager">
46         <property name="cacheManagerConfigFile" value="classpath:ehcache-shiro.xml"/>
47     </bean>
48 
49     <!-- 會話DAO -->
50     <bean id="sessionDAO" class="org.apache.shiro.session.mgt.eis.MemorySessionDAO"/>
51 
52     <!-- 會話管理器 -->
53     <bean id="sessionManager" class="org.apache.shiro.web.session.mgt.DefaultWebSessionManager">
54         <property name="sessionDAO" ref="sessionDAO"/>
55     </bean>
56 
57     <!-- 安全管理器 -->
58     <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
59         <property name="realm" ref="securityRealm" />
60         <property name="sessionManager" ref="sessionManager"/>
61     </bean>
62 
63     <!-- Shiro生命周期處理器 -->
64     <bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor"/>
65     <bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"
66           depends-on="lifecycleBeanPostProcessor">
67     </bean>
68 </beans>
View Code

?

7. 緩存文件配置

7.1?ehcache.xml

1 <?xml version="1.0" encoding="UTF-8"?>
2 <ehcache updateCheck="false" name="txswx-ehcache">
3     <diskStore path="java.io.tmpdir" />
4     <!-- DefaultCache setting. -->
5     <defaultCache maxEntriesLocalHeap="10000" eternal="true"
6         timeToIdleSeconds="300" timeToLiveSeconds="600" overflowToDisk="true"
7         maxEntriesLocalDisk="100000" />
8 </ehcache>
View Code

7.2 ehcache-shiro.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <ehcache updateCheck="false" name="shiroCache">
 3     <defaultCache
 4             maxElementsInMemory="10000"
 5             eternal="false"
 6             timeToIdleSeconds="120"
 7             timeToLiveSeconds="120"
 8             overflowToDisk="false"
 9             diskPersistent="false"
10             diskExpiryThreadIntervalSeconds="120"
11             />
12 </ehcache>
View Code

?

8. log4j.properties?配置

# DEBUG,INFO,WARN,ERROR,FATAL
LOG_LEVEL=INFOlog4j.rootLogger=${LOG_LEVEL},CONSOLE,FILElog4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Encoding=utf-8
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
#log4j.appender.CONSOLE.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss} %C{8}@(%F:%L):%m%n 
log4j.appender.CONSOLE.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss} %C{1}@(%F:%L):%m%nlog4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.FILE.File=${catalina.base}/logs/shiro01.log
log4j.appender.FILE.Encoding=utf-8
log4j.appender.FILE.DatePattern='.'yyyy-MM-dd
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
#log4j.appender.FILE.layout=org.apache.log4j.HTMLLayout
log4j.appender.FILE.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH\:mm\:ss} %C{8}@(%F\:%L)\:%m%n
View Code

?

9. web.xml 配置

  
  1 <?xml version="1.0" encoding="utf-8"?>
  2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee"
  3          xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  4          id="WebApp_ID" version="3.0">
  5 
  6     <!-- Spring -->
  7     <!-- 配置Spring配置文件路徑 -->
  8     <context-param>
  9         <param-name>contextConfigLocation</param-name>
 10         <param-value>
 11             classpath*:spring-mybatis.xml
 12             classpath*:spring-shiro.xml
 13         </param-value>
 14     </context-param>
 15     <!-- 配置Spring上下文監聽器 -->
 16     <listener>
 17         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 18     </listener>
 19     <!-- Spring -->
 20 
 21     <!-- 配置Spring字符編碼過濾器 -->
 22     <filter>
 23         <filter-name>encodingFilter</filter-name>
 24         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
 25         <init-param>
 26             <param-name>encoding</param-name>
 27             <param-value>UTF-8</param-value>
 28         </init-param>
 29         <init-param>
 30             <param-name>forceEncoding</param-name>
 31             <param-value>true</param-value>
 32         </init-param>
 33     </filter>
 34     <filter-mapping>
 35         <filter-name>encodingFilter</filter-name>
 36         <url-pattern>/*</url-pattern>
 37     </filter-mapping>
 38 
 39     <!-- shiro 安全過濾器 -->
 40     <filter>
 41         <filter-name>shiroFilter</filter-name>
 42         <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
 43         <async-supported>true</async-supported>
 44         <init-param>
 45             <param-name>targetFilterLifecycle</param-name>
 46             <param-value>true</param-value>
 47         </init-param>
 48     </filter>
 49     <filter-mapping>
 50         <filter-name>shiroFilter</filter-name>
 51         <url-pattern>/*</url-pattern>
 52     </filter-mapping>
 53 
 54     <!-- 配置log4j配置文件路徑 -->
 55     <context-param>
 56         <param-name>log4jConfigLocation</param-name>
 57         <param-value>classpath:log4j.properties</param-value>
 58     </context-param>
 59     <!-- 60s 檢測日志配置 文件變化 -->
 60     <context-param>
 61         <param-name>log4jRefreshInterval</param-name>
 62         <param-value>60000</param-value>
 63     </context-param>
 64 
 65     <!-- 配置Log4j監聽器 -->
 66     <listener>
 67         <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
 68     </listener>
 69  
 70     <!-- Spring MVC 核心控制器 DispatcherServlet 配置 -->
 71     <servlet>
 72         <servlet-name>dispatcher</servlet-name>
 73         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
 74         <init-param>
 75             <param-name>contextConfigLocation</param-name>
 76             <param-value>classpath*:spring-mvc.xml</param-value>
 77         </init-param>
 78         <load-on-startup>1</load-on-startup>
 79     </servlet>
 80     <servlet-mapping>
 81         <servlet-name>dispatcher</servlet-name>
 82         <!-- 攔截所有*.htm 的請求,交給DispatcherServlet處理,性能最好 -->
 83         <url-pattern>*.htm</url-pattern>
 84     </servlet-mapping>
 85 
 86     <!-- 首頁 -->
 87     <welcome-file-list>
 88         <welcome-file>index.jsp</welcome-file>
 89     </welcome-file-list>
 90 
 91     <!-- 錯誤頁 -->
 92     <error-page>
 93         <error-code>404</error-code>
 94         <location>/404.jsp</location>
 95     </error-page>
 96     <error-page>
 97         <error-code>500</error-code>
 98         <location>/500.jsp</location>
 99     </error-page>
100 </web-app>
View Code
 

?

再來看看webapp 下文件路徑信息吧

?

我們先來啟動一次項目,確保配置信息正確

  直接點擊項目運行maven build?在彈出框輸入?tomcat:run?apply 后直接運行即可。

如果能正確訪問到index.jsp頁面,說明之前配置信息沒得問題啦

?
posted on 2016-05-22 17:37 Java.小學生 閱讀(...) 評論(...) 編輯 收藏

轉載于:https://www.cnblogs.com/javatochen/p/5517246.html

總結

以上是生活随笔為你收集整理的Spring+SpringMVC+shiro+mysql(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。