SSM框架集成
利用idea开发工具集成spring+springMVC+mybatis和shiro框架配置
一、pom.xml
1 <?xml version="1.0" encoding="UTF-8"?> 2 3 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 5 <modelVersion>4.0.0</modelVersion> 6 7 <groupId>cn.susu</groupId> 8 <artifactId>crm</artifactId> 9 <version>1.0-SNAPSHOT</version> 10 <packaging>war</packaging> 11 12 <name>crm</name> 13 <url>http://www.example.com</url> 14 15 <properties> 16 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 17 <maven.compiler.source>1.8</maven.compiler.source> 18 <maven.compiler.target>1.8</maven.compiler.target> 19 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 20 <!-- spring版本号 --> 21 <spring.version>4.1.2.RELEASE</spring.version> 22 <!-- mybatis版本号 --> 23 <mybatis.version>3.2.1</mybatis.version> 24 <!-- log4j日志文件管理包版本 --> 25 <slf4j.version>1.7.2</slf4j.version> 26 <log4j.version>1.2.17</log4j.version> 27 <!-- jackson包版本 --> 28 <jackson.version>2.5.0</jackson.version> 29 </properties> 30 31 <dependencies> 32 <!--JUnit--> 33 <dependency> 34 <groupId>junit</groupId> 35 <artifactId>junit</artifactId> 36 <version>4.11</version> 37 <scope>test</scope> 38 </dependency> 39 40 <!--Spring核心--> 41 <dependency> 42 <groupId>org.springframework</groupId> 43 <artifactId>spring-aop</artifactId> 44 <version>${spring.version}</version> 45 </dependency> 46 <dependency> 47 <groupId>org.springframework</groupId> 48 <artifactId>spring-aspects</artifactId> 49 <version>${spring.version}</version> 50 </dependency> 51 <dependency> 52 <groupId>org.springframework</groupId> 53 <artifactId>spring-beans</artifactId> 54 <version>${spring.version}</version> 55 </dependency> 56 <dependency> 57 <groupId>org.springframework</groupId> 58 <artifactId>spring-context</artifactId> 59 <version>${spring.version}</version> 60 </dependency> 61 <dependency> 62 <groupId>org.springframework</groupId> 63 <artifactId>spring-core</artifactId> 64 <version>${spring.version}</version> 65 </dependency> 66 <dependency> 67 <groupId>org.springframework</groupId> 68 <artifactId>spring-expression</artifactId> 69 <version>${spring.version}</version> 70 </dependency> 71 <dependency> 72 <groupId>org.springframework</groupId> 73 <artifactId>spring-jdbc</artifactId> 74 <version>${spring.version}</version> 75 </dependency> 76 <dependency> 77 <groupId>org.springframework</groupId> 78 <artifactId>spring-test</artifactId> 79 <version>${spring.version}</version> 80 </dependency> 81 <dependency> 82 <groupId>org.springframework</groupId> 83 <artifactId>spring-tx</artifactId> 84 <version>${spring.version}</version> 85 </dependency> 86 <dependency> 87 <groupId>commons-logging</groupId> 88 <artifactId>commons-logging</artifactId> 89 <version>1.1.1</version> 90 </dependency> 91 92 <!--SpringMVC--> 93 <dependency> 94 <groupId>org.springframework</groupId> 95 <artifactId>spring-web</artifactId> 96 <version>${spring.version}</version> 97 </dependency> 98 <dependency> 99 <groupId>org.springframework</groupId> 100 <artifactId>spring-webmvc</artifactId> 101 <version>${spring.version}</version> 102 </dependency> 103 104 <!--aop依赖包--> 105 <dependency> 106 <groupId>aopalliance</groupId> 107 <artifactId>aopalliance</artifactId> 108 <version>1.0</version> 109 </dependency> 110 <dependency> 111 <groupId>org.aspectj</groupId> 112 <artifactId>aspectjweaver</artifactId> 113 <version>1.6.8</version> 114 </dependency> 115 116 <!--文件上传--> 117 <dependency> 118 <groupId>commons-fileupload</groupId> 119 <artifactId>commons-fileupload</artifactId> 120 <version>1.3.1</version> 121 </dependency> 122 <dependency> 123 <groupId>commons-io</groupId> 124 <artifactId>commons-io</artifactId> 125 <version>2.2</version> 126 </dependency> 127 <!--jackson--> 128 <dependency> 129 <groupId>com.fasterxml.jackson.core</groupId> 130 <artifactId>jackson-databind</artifactId> 131 <version>${jackson.version}</version> 132 </dependency> 133 <dependency> 134 <groupId>com.fasterxml.jackson.core</groupId> 135 <artifactId>jackson-core</artifactId> 136 <version>${jackson.version}</version> 137 </dependency> 138 <dependency> 139 <groupId>com.fasterxml.jackson.core</groupId> 140 <artifactId>jackson-annotations</artifactId> 141 <version>${jackson.version}</version> 142 </dependency> 143 144 <!--数据库连接池--> 145 <dependency> 146 <groupId>commons-dbcp</groupId> 147 <artifactId>commons-dbcp</artifactId> 148 <version>1.2.2</version> 149 </dependency> 150 <dependency> 151 <groupId>commons-pool</groupId> 152 <artifactId>commons-pool</artifactId> 153 <version>1.5.3</version> 154 </dependency> 155 156 <!--Mybatis集成--> 157 <dependency> 158 <groupId>org.mybatis</groupId> 159 <artifactId>mybatis</artifactId> 160 <version>${mybatis.version}</version> 161 </dependency> 162 <dependency> 163 <groupId>org.mybatis</groupId> 164 <artifactId>mybatis-spring</artifactId> 165 <version>1.2.0</version> 166 </dependency> 167 168 <!--log4j--> 169 <dependency> 170 <groupId>log4j</groupId> 171 <artifactId>log4j</artifactId> 172 <version>${log4j.version}</version> 173 </dependency> 174 175 <!--slf4j--> 176 <dependency> 177 <groupId>org.slf4j</groupId> 178 <artifactId>slf4j-api</artifactId> 179 <version>${slf4j.version}</version> 180 </dependency> 181 <dependency> 182 <groupId>org.slf4j</groupId> 183 <artifactId>slf4j-log4j12</artifactId> 184 <version>${slf4j.version}</version> 185 <scope>test</scope> 186 </dependency> 187 188 <!--数据库连接驱动--> 189 <dependency> 190 <groupId>mysql</groupId> 191 <artifactId>mysql-connector-java</artifactId> 192 <version>5.1.46</version> 193 </dependency> 194 195 <!-- JSTL标签类 --> 196 <dependency> 197 <groupId>jstl</groupId> 198 <artifactId>jstl</artifactId> 199 <version>1.2</version> 200 </dependency> 201 202 <!--servlet--> 203 <dependency> 204 <groupId>javax.servlet</groupId> 205 <artifactId>javax.servlet-api</artifactId> 206 <version>3.0.1</version> 207 <scope>provided</scope> 208 </dependency> 209 210 <dependency> 211 <groupId>javax.servlet.jsp</groupId> 212 <artifactId>jsp-api</artifactId> 213 <version>2.2</version> 214 <scope>provided</scope> 215 </dependency> 216 <!--mybatis分页插件--> 217 <dependency> 218 <groupId>com.github.pagehelper</groupId> 219 <artifactId>pagehelper</artifactId> 220 <version>5.0.1</version> 221 </dependency> 222 223 <!-- shiro的支持包 --> 224 <dependency> 225 <groupId>org.apache.shiro</groupId> 226 <artifactId>shiro-all</artifactId> 227 <version>1.4.0</version> 228 <type>pom</type> 229 </dependency> 230 <!-- shiro与Spring的集成包 --> 231 <dependency> 232 <groupId>org.apache.shiro</groupId> 233 <artifactId>shiro-spring</artifactId> 234 <version>1.4.0</version> 235 </dependency> 236 <!--LONG3--> 237 <dependency> 238 <groupId>org.apache.commons</groupId> 239 <artifactId>commons-lang3</artifactId> 240 <version>3.5</version> 241 </dependency> 242 </dependencies> 243 244 <build> 245 <finalName>crm</finalName> 246 <!--<pluginManagement><!– lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) –>--> 247 <plugins> 248 <!--代码生成器插件--> 249 <plugin> 250 <groupId>org.mybatis.generator</groupId> 251 <artifactId>mybatis-generator-maven-plugin</artifactId> 252 <version>1.3.2</version> 253 <configuration> 254 <!--自定义代码生成器的路径--> 255 <!--<configurationFile>yourLocation/mybatis-generatorConfig.xml</configurationFile>--> 256 <verbose>true</verbose> 257 <overwrite>true</overwrite> 258 </configuration> 259 </plugin> 260 <plugin> 261 <artifactId>maven-clean-plugin</artifactId> 262 <version>3.0.0</version> 263 </plugin> 264 <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging --> 265 <plugin> 266 <artifactId>maven-resources-plugin</artifactId> 267 <version>3.0.2</version> 268 </plugin> 269 <plugin> 270 <artifactId>maven-compiler-plugin</artifactId> 271 <version>3.7.0</version> 272 </plugin> 273 <plugin> 274 <artifactId>maven-surefire-plugin</artifactId> 275 <version>2.20.1</version> 276 </plugin> 277 <plugin> 278 <artifactId>maven-war-plugin</artifactId> 279 <version>3.2.0</version> 280 </plugin> 281 <plugin> 282 <artifactId>maven-install-plugin</artifactId> 283 <version>2.5.2</version> 284 </plugin> 285 <plugin> 286 <artifactId>maven-deploy-plugin</artifactId> 287 <version>2.8.2</version> 288 </plugin> 289 <plugin> 290 <groupId>org.apache.maven.plugins</groupId> 291 <artifactId>maven-compiler-plugin</artifactId> 292 <configuration> 293 <source>1.8</source> 294 <target>1.8</target> 295 </configuration> 296 </plugin> 297 </plugins> 298 <!--</pluginManagement> 与代码生成器冲突需要干掉--> 299 </build> 300 301 </project>
二、generatorConfig.xml
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE generatorConfiguration 3 PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" 4 "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> 5 <!-- 自动生成器的配置(根目录,不做过多介绍)--> 6 <generatorConfiguration> 7 <!-- 8 classPathEntry:可以配置多个,也不配置 9 数据库驱动:这里找到相应的驱动jar包就可以了(注:不同数据库的jar不一样) 10 location:里面的是路径(也可以直接写绝对路径 -> 如:E:\mybatis\mysql-connector-java-5.1.26-bin.jar) 11 --> 12 <classPathEntry location="D:\Maven\repository\mysql\mysql-connector-java\5.1.46\mysql-connector-java-5.1.46.jar"/> 13 <!-- 14 context:用于生成一组对象的环境(至少配置1个,可以配置多个) 15 id:表达唯一的名称 16 targetRuntime:用于指定生成的代码的运行环境(MyBatis3/MyBatis3Simple) 17 MyBatis3:默认值 18 MyBatis3Simple:不会生成与Example(案例)相关的方法 19 --> 20 <context id="DB2Tables" targetRuntime="MyBatis3Simple"> 21 <!-- 22 用于配置如果生成注释信息(最多可以配置一下) 23 suppressAllComments:阻止生成注释 ,默认为false 24 suppressDate:阻止生成的注释时间戳,默认为false 25 addRemarkComments:注释是否添加数据库表的备注信息,默认为false 26 --> 27 <commentGenerator> 28 <property name="suppressDate" value="true"/> 29 <property name="suppressAllComments" value="true"/> 30 </commentGenerator> 31 <!-- 32 这个应该比较清楚,配置连接数据库的基本信息 33 --> 34 <jdbcConnection driverClass="com.mysql.jdbc.Driver" 35 connectionURL="jdbc:mysql:///crm" 36 userId="root" password="000000"> 37 </jdbcConnection> 38 <!-- 39 用于指定JDBC类型和Java类型如何转换,最多可以配置一个 40 forceBigDecimals:控制是否强制将DECIMAL和NUMERIC类型的JDBC字段转换成Java类型的 BigDecimal 41 默认为false,一般不需要配置 42 --> 43 <javaTypeResolver> 44 <property name="forceBigDecimals" value="false"/> 45 </javaTypeResolver> 46 47 <!-- 48 javaModelGenerator:用来控制生成的实体类 49 targetPackage:生成Model类存放位置(包名) 50 targetProject:指定目标项目路径(根目录) 51 对应的子属性: 52 trimStrings:判断是否对数据库查询结果进行trim操作(默认false) 53 --> 54 <javaModelGenerator targetPackage="cn.susu.domain" targetProject="src/main/java"> 55 <property name="trimStrings" value="true"/> 56 </javaModelGenerator> 57 <!-- 58 sqlMapGenerator:生成映射文件存放位置(Mapper.xml文件) 59 targetPackage:生成SQL映射文件(XML文件)在哪个包中 60 targetProject:指定目标项目路径(根目录) 61 --> 62 <sqlMapGenerator targetPackage="cn.susu.mapper" targetProject="src/main/resources"> 63 </sqlMapGenerator> 64 65 <!-- 66 javaClientGenerator:Java客户端生成器(生成Dao/Mapper的接口) 67 该 标签可选(最多配置一个),如果不配置,就不会生成Mapper接口 68 type:选择客户端代码生成器 69 MyBatis3 70 ANNOTATEDMAPPER:基于注解的Mapper接口,不会有对应的XML映射文件 71 MIXEDMAPPER:XML和注解混合形式 72 XMLMAPPER:所有方法都在XML中(接口调用依赖XML) 73 MyBatis3Simple 74 ANNOTATEDMAPPER:基于注解的Mapper接口,不会有对应的XML映射文件 75 XMLMAPPER:所有方法都在XML中(接口调用依赖XML) 76 targetPackage:生成Mapper接口存放的包名 77 targetProject:指定目标项目路径 78 --> 79 <javaClientGenerator type="XMLMAPPER" targetPackage="cn.susu.mapper" targetProject="src/main/java"> 80 <property name="enableSubPackages" value="true"/> 81 </javaClientGenerator> 82 <!-- 83 table:生成对应表及类名 84 tableName:对应表名(注:%代表所有) 85 domainObjectName:对应的类名 86 generatedKey:主键自增的id字段(针对当前 数据库配置MySQL) 87 --> 88 <table tableName="role" domainObjectName="Role"> 89 <generatedKey column="id" sqlStatement="MySql"/> 90 </table> 91 </context> 92 93 </generatorConfiguration>
三、applicationContext.xml
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:context="http://www.springframework.org/schema/context" 4 xmlns:tx="http://www.springframework.org/schema/tx" 5 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 6 xsi:schemaLocation=" 7 http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 8 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd 9 http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd 10 "> 11 12 <!--扫描service层--> 13 <context:component-scan base-package="cn.susu.service"/> 14 <!--引入properties--> 15 <context:property-placeholder location="classpath:jdbc.properties"/> 16 <!--数据源--> 17 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 18 <property name="driverClassName" value="${jdbc.driverClassName}" /> 19 <property name="url" value="${jdbc.url}" /> 20 <property name="username" value="${jdbc.username}" /> 21 <property name="password" value="${jdbc.password}" /> 22 </bean> 23 <!--sqlSessionFactory--> 24 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 25 <property name="dataSource" ref="dataSource" /> 26 <!--XML的映射--> 27 <property name="mapperLocations" value="classpath:cn/susu/mapper/*.xml" /> 28 <!--为所有相应的包中的类取别名 类的名字--> 29 <property name="typeAliasesPackage" value="cn.susu.domain" /> 30 <!--配置一个拦截器(分页插件):注意一下版本问题--> 31 <property name="plugins"> 32 <array> 33 <bean class="com.github.pagehelper.PageInterceptor"> 34 <property name="properties"> 35 <value>helperDialect=mysql</value> 36 </property> 37 </bean> 38 </array> 39 </property> 40 </bean> 41 <!--创建所有的映射器mapper--> 42 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> 43 <property name="basePackage" value="cn.susu.mapper" /> 44 </bean> 45 <!--事务--> 46 <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 47 <property name="dataSource" ref="dataSource" /> 48 </bean> 49 <!--配置标签支持事务--> 50 <!--其他名<tx:annotation-driven transaction-manager="transactionManager" />--> 51 <tx:annotation-driven/> 52 53 <!--引入shiro配置文件--> 54 <import resource="applicationContext-shiro.xml"/> 55 56 </beans>
四、applicationContext-mvc.xml
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:context="http://www.springframework.org/schema/context" 4 xmlns:mvc="http://www.springframework.org/schema/mvc" 5 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 6 xsi:schemaLocation=" 7 http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 8 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd 9 http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd 10 "> 11 <!--扫描Controller--> 12 <context:component-scan base-package="cn.susu.web.controller" /> 13 <!--支持SpringMVC的注解--> 14 <mvc:annotation-driven /> 15 <!--静态资源放行--> 16 <mvc:default-servlet-handler /> 17 <!--视图解析器--> 18 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 19 <property name="prefix" value="/WEB-INF/views/" /> 20 <property name="suffix" value=".jsp" /> 21 </bean> 22 <!--上传解析器--> 23 <!--文件上传解析器--> 24 <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 25 <!-- 设置上传文件的最大尺寸为1MB --> 26 <property name="maxUploadSize"> 27 <value>1048576</value> 28 </property> 29 </bean> 30 31 <!--不要这样引入:以后还要集成其它框架(shiro)就集成不了--> 32 <!--<import resource="classpath:applicationContext.xml" />--> 33 </beans>
五、applicationContext-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" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <!--shiro的核心类--> <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager"> <property name="realm" ref="aiSellRealm"/> </bean> <!--自定义realm--> <bean id="aiSellRealm" class="cn.susu.web.shiro.CRMRealm"> <property name="credentialsMatcher"> <bean class="org.apache.shiro.authc.credential.HashedCredentialsMatcher"> <property name="hashAlgorithmName" value="MD5"/> <property name="hashIterations" value="10"/> </bean> </property> </bean> <!--支持注解权限判断--> <bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor"/> <bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" depends-on="lifecycleBeanPostProcessor"/> <bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor"> <property name="securityManager" ref="securityManager"/> </bean> <!--shiro真正的过滤器 名字与web.xml中的一致--> <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean"> <property name="securityManager" ref="securityManager"/> <!--登录失败返回的页面--> <property name="loginUrl" value="/index.jsp"/> <!--登录成功返回的页面--> <property name="successUrl" value="/department/index"/> <!--登录成功后没有权限跳转的界面--> <property name="unauthorizedUrl" value="/shiro/unauthorized.jsp"/> <!--<property name="filterChainDefinitions"> <value> /s/login = anon /login=anon /employee/index = perms[employee:index] /** = authc </value> </property>--> <property name="filterChainDefinitionMap" ref="filterChainDefinitionBuilderMap"></property> <property name="filters"> <map> <!--/employee/index = aiSell[employee:index]--> <entry key="aiSell" value-ref="aiSellFilter"></entry> </map> </property> </bean> <!--自定义拦截器--> <bean id="aiSellFilter" class="cn.susu.web.shiro.CRMPermissionsAuthorizationFilter"></bean> <!--数据库查拦截权限--> <bean id="filterChainDefinitionBuilderMap" factory-bean="filterChainDefinitionMapBuilder" factory-method="createFilterChainDefinitionMap"></bean> <bean id="filterChainDefinitionMapBuilder" class="cn.susu.web.shiro.FilterChainDefinitionMapBuilder"></bean> </beans>
六、web.xml
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app xmlns="http://java.sun.com/xml/ns/javaee" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 5 http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 6 version="3.0"> 7 8 <!-- 解决工程编码过滤器 --> 9 <filter> 10 <filter-name>characterEncodingFilter</filter-name> 11 <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 12 <init-param> 13 <param-name>encoding</param-name> 14 <param-value>UTF-8</param-value> 15 </init-param> 16 <init-param> 17 <param-name>forceEncoding</param-name> 18 <param-value>true</param-value> 19 </init-param> 20 </filter> 21 <filter-mapping> 22 <filter-name>characterEncodingFilter</filter-name> 23 <url-pattern>/*</url-pattern> 24 </filter-mapping> 25 26 <!--读取Spring的核心配置文件--> 27 <context-param> 28 <param-name>contextConfigLocation</param-name> 29 <param-value>classpath:applicationContext.xml</param-value> 30 </context-param> 31 <!--直接启动Spring--> 32 <listener> 33 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 34 </listener> 35 36 <!--配置核心控制器--> 37 <servlet> 38 <servlet-name>dispatcherServlet</servlet-name> 39 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 40 <!--SpringMVC的配置文件--> 41 <init-param> 42 <param-name>contextConfigLocation</param-name> 43 <param-value>classpath:applicationContext-mvc.xml</param-value> 44 </init-param> 45 <!--随着tomcat启动而启动--> 46 <load-on-startup>1</load-on-startup> 47 </servlet> 48 49 <servlet-mapping> 50 <servlet-name>dispatcherServlet</servlet-name> 51 <url-pattern>/</url-pattern> 52 </servlet-mapping> 53 54 <!-- Shiro的过滤器(拦截所有请求) --> 55 <!-- 56 这个过滤器只过滤,它什么功能都没有! 它什么都不做! 57 真正的过滤功能是在Spring中的过滤器完成的!!! 58 名字很重要:必需和shiro.xml中的过滤器名称一样 59 --> 60 <filter> 61 <filter-name>shiroFilter</filter-name> 62 <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 63 <init-param> 64 <param-name>targetFilterLifecycle</param-name> 65 <param-value>true</param-value> 66 </init-param> 67 </filter> 68 <filter-mapping> 69 <filter-name>shiroFilter</filter-name> 70 <url-pattern>/*</url-pattern> 71 </filter-mapping> 72 73 </web-app>