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>

1.2. 依赖库信息配置

1.3. 编译及tomcat部署配置

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>

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

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>

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>

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>

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>

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>

8. log4j.properties 配置

# DEBUG,INFO,WARN,ERROR,FATAL
LOG_LEVEL=INFO

log4j.rootLogger=${LOG_LEVEL},CONSOLE,FILE

log4j.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%n

log4j.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

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>


再来看看webapp 下文件路径信息吧

我们先来启动一次项目,确保配置信息正确

  直接点击项目运行maven build 在弹出框输入 tomcat:run apply 后直接运行即可。

如果能正确访问到index.jsp页面,说明之前配置信息没得问题啦

 
时间: 2024-12-13 23:04:36

Spring+SpringMVC+shiro+mysql(一)的相关文章

Spring+SpringMVC+Mybatis+Mysql整合实例【转】

本文要实现Spring+SpringMVC+Mybatis+Mysql的一个整合,实现了SpringMVC控制访问的页面,将得到的页面参数传递给Spring中的Mybatis的bean类,然后查找Mysql数据的功能,并通过JSP显示出来.建议可以先看笔者另一文章Mybatis与Spring整合创建Web项目 .笔者觉得整合过程中问题比较多的还是Spring+Mybatis的整合,SpringMVC的整合还是比较简单. Spring        Spring 是一个开源框架, Spring 是

Spring注解处理Ajax请求-JSON格式[系统架构:Spring+SpringMVC+MyBatis+MySql]

这是自己曾写的一个系统(养老保险管理)中的一个小片段,今天突然想到把请求数据改成json,该如何处理.(Spring+SpringMVC+MyBatis+MySql)如下 1.前端jsp页面 <div class="tab_tip"> 请输入[身份证号或姓名] <input type="text" class="tab_getText" id="tab1_getText"> <input type

Spring+SpringMVC+Mybatis+Mysql整合实例

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 本文要实现Spring+SpringMVC+Mybatis+Mysql的一个整合,实现了SpringMVC控制访问的页面,将得到的页面参数传递给Spring中的Mybatis的bean类,然后查找Mysql数据的功能,并通过JSP显示出来.建议可以先看笔者另一文章Mybatis与Spring整合创建Web项目.笔者觉得整合过程中问题比较多的还是Spring+Mybatis的整合,Spring

SSM后台管理系统(Spring SpringMVC Mybatis Mysql EasyUI)

很easy的一个后台管理系统.功能不多,框架也不复杂, 源代码下载(附数据库)-ssm后台管理系统框架(Spring mvc + mybatis + mysql + easyui ) 实例图片

spring+springMVC+Maven+mysql环境搭建

转载: http://www.importnew.com/20215.html 首先看一下项目截图: 搭建完毕,访问结果: mysql数据 CREATE TABLE `t_user` ( `USER_ID` int(11) NOT NULL AUTO_INCREMENT, `USER_NAME` char(30) NOT NULL, `USER_PASSWORD` char(10) NOT NULL, PRIMARY KEY (`USER_ID`), KEY `IDX_NAME` (`USER_

SSM框架整合(注解)-Spring+SpringMVC+MyBatis+MySql

准备工作: 下载整合所需的jar包 点击此处下载 使用MyBatis Generator生成dao接口.映射文件和实体类 如何生成 搭建过程: 先来看一下项目的 目录结构 1.配置dispatcherServlet-servlet.xml,将此文件放于WEB-INF下 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/sc

spring ,springMVC,shiro 框架搭建。

1.  导入相关jar包. 2.完成spring的相关配置 1) 在web.xml中完成spring的声明 contextLoaderListener的配置,如果是location,那么配置文件必须放到web项目的根目录中. 如果是放到类路径下,需要改为classpath:applicationContext.xml 2)新建spring的配置文件 这个名称必须与web.xml中,配置的一致.如applicationContext.xml 3.完成springMVC的配置 1)在web.xml中

Spring+SpringMVC+Hibernate 与 shiro 整合步骤

通过这篇文章你可以了解到: SSH 三大框架(spring + springMVC + Hiberante) 与 shiro 安全验证框架如何整合: 通过一个示例,快速理解 shiro 框架. [TOC] 1. 业务需求分析 用户 N - 角色 N - 权限 N 我们可以想象一下,在平时工作中的职务,比如:业务经理,部门主管等,他们拥有很多的权力,而一个公司中不会只有一个业务经理,也不会只有一个部门主管,如果我们要给不同的人分配职务权力时,每次都是具体的条条框框去分配,人累心也累.而如果我们事先

shiro与Web项目整合-Spring+SpringMVC+Mybatis+Shiro(八)

Jar包 Web.xml中配置shiro的filter <?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://ja