今天一天都花在了mvc:exclude-mapping这个配置上,表示很无语。
一开始这样写的
<mvc:interceptors>
<mvc:interceptor>
<mvc:exclude-mapping path="/api"/>
<bean class="com.ljf.interceptor.LoginInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
写的过程中发现eclipse没提示,然后运行也出错。一查发现http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd不支持exclude-mapping 。好吧,改成3.2是有提示了,但是运行报错,发现了以元素 'mvc:exclude-mapping' 开头的无效内容。应以 '{"http://www.springframework.org/schema/mvc":mapping}' 之一开头。
好吧,当时没仔细思考这句话导致了接下来的绕圈,虽然这个绕圈让我知道了spring对xsd文件的一系列相关的处理。
循着这个错我以为是xml解析器还是没读到3.2.xsd文件,于是开始查询spring对本地xsd文件的处理。然后知道了spring为了防止断网等不可控因素在jar包里都准备好了各个版本的xsd文件,好吧,连版本升级都考虑到了。jar包META-INF下的spring.schemas,spring.handlers指示(映射)你在xml文件中配置的命名空间以及xsi:schemaLocation对应的uri,指示去jar包的org/springframework/web/servlet/config下去找相关的处理类以及xsd文件。我找到了其中的xsd文件,发现没什么问题。那按道理应该不会有错啊,于是我怀疑本地xsd文件写错了?于是把相关文件全删了,好吧,确实找不到了。我连上了网让它去网上获取xsd,结果找到了,但还是报错。我郁闷了,百度原因,发现又扯到了maven插件的原因,好吧,我又新建了非maven构建的web项目,结果还是报错,那就说明跟maven无关。至此,我已经想尽了并排除了所有原因,呆呆的看着那个错误信息:发现了以元素 'mvc:exclude-mapping' 开头的无效内容。应以 '{"http://www.springframework.org/schema/mvc":mapping}' 之一开头,卧槽,不会是我用法有问题吧,立马加上<mvc:mapping path="/**"/> ,
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<mvc:exclude-mapping path="/dd"/>
<bean class="com.ljf.interceptor.LoginInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
好吧,果然。原谅我单纯的以为exclude时不需要include。