开发者社区> 问答> 正文

springMVC中关于拦截器的两种配置有什么不同? : 配置报错

第一种配置方法:

<bean id="handlerInterceptor1"
class="cn.javass.chapter5.web.interceptor.HandlerInterceptor1"/>
<bean id="handlerInterceptor2"
class="cn.javass.chapter5.web.interceptor.HandlerInterceptor2"/>

<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">
    <property name="interceptors">
        <list>
           <ref bean="handlerInterceptor1"/>
          <ref bean="handlerInterceptor2"/>
        </list>
    </property>
</bean>
第二种配置方法:
<mvc:interceptors>  
      <bean class="cn.javass.chapter5.web.interceptor.HandlerInterceptor1" />
      <bean class="cn.javass.chapter5.web.interceptor.HandlerInterceptor2" />  
    </mvc:interceptors>
第二种配置方法看上去很简洁,还有没有其它优点呢?还想知道以<mvc:xxxxx>开头的标签配置方法是不是针对SpringMVC所特有的?

谢谢!

展开
收起
kun坤 2020-06-03 15:42:21 642 0
1 条回答
写回答
取消 提交回答
  • mvc是spring3之后的一个新的命名空间,推荐用第二种。
    <mvc:annotation-driven /> 是一种简写形式,替代了很多配置。
    不过你的mvc:interceptors写的有点奇怪。。。你不配置拦截路径吗?
        <mvc:interceptors>         <mvc:interceptor>             <mvc:mapping path="/admin/**"/>             <bean class="tk.gbl.web.filter.AdminInterceptor"/>         </mvc:interceptor>     </mvc:interceptors>

    (代表admin子路径也拦截,否则只拦截admin/下的) ###### 用第二种的原因是因为用了<mvc:annotation-driven>,<mvc:annotation-driven>会自动注入BeanNameUrlHandlerMapping,而且官方也不推荐手动注入BeanNameUrlHandlerMapping这个方法
    结果:请用第二种,不过第二种写法是不是有点奇怪? ######谢谢你的解答!确实没注意到拦截路径。######用第二种吧,我一直都在用

    <mvc:interceptor> <mvc:mapping path="/manage/"/> <mvc:exclude-mapping path="/manage/goLogin."/> <mvc:exclude-mapping path="/manage/login."/> <mvc:exclude-mapping path="/manage/logout.*"/> <bean class="com.xx.ManageInterceptor"/> </mvc:interceptor>

    ######GOGO我是来打酱油的! http://www.gogo.cn/######我还是喜欢传统配置方法,不喜欢mvc开头得标签。######

    引用来自“千斤难买春秋醉”的评论

    mvc是spring3之后的一个新的命名空间,推荐用第二种。 <mvc:annotation-driven /> 是一种简写形式,替代了很多配置。 不过你的mvc:interceptors写的有点奇怪。。。你不配置拦截路径吗?     <mvc:interceptors>         <mvc:interceptor>             <mvc:mapping path="/admin/**"/>             <bean class="tk.gbl.web.filter.AdminInterceptor"/>         </mvc:interceptor>     </mvc:interceptors> (**代表admin子路径也拦截,否则只拦截admin/下的) 谢谢你的解答,受教了!
    2020-06-04 10:58:40
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第20讲):经典面试题与阿里等名企内部招聘求职面试技巧 立即下载
微服务架构模式与原理Spring Cloud开发实战 立即下载
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载