【问题标题】:Spring MVC interceptor mapping for web application root用于 Web 应用程序根的 Spring MVC 拦截器映射
【发布时间】:2012-07-24 07:06:05
【问题描述】:

我在我的应用程序上下文中配置了一个拦截器,我想映射到 Web 应用程序的根目录(“/”)。

<mvc:interceptors>
    <bean class="com.example.SslInterceptor" />
    <mvc:interceptor>
        <mvc:mapping path="/" />
        <mvc:mapping path="/login" />
        <bean class="com.example.SslInterceptor" />
    </mvc:interceptor>
</mvc:interceptors>

但是,虽然拦截器是为“/login”调用的,但它不是为“/”调用的。请帮忙

【问题讨论】:

  • 如果颠倒 mvc:mapping 路径的顺序会发生什么?
  • 清晰度?与上一条路径 / 中的相同内容被调用,还是与 /login 中相同的内容被调用?
  • 哦..对不起,/login 有效,但“/”无效
  • 所以如果我没猜错的话,如果你完全删除“/login”并只留下“/”的条目,登录可以工作,但“/”不行?
  • 是的,重定向工作得很好......谢谢......但令人惊讶的是,在春季没有任何方法可以将根路径映射到拦截器。

标签: spring jakarta-ee spring-mvc


【解决方案1】:

请修改servlet config xml文件中的拦截器配置如下:

<mvc:annotation-driven/>
<mvc:default-servlet-handler/>

<mvc:interceptors>
  <mvc:interceptor>
    <mvc:mapping path="/**"/>
    <bean class="de.scrappy.web.TestInterceptor"/>
  </mvc:interceptor>
</mvc:interceptors>

【讨论】:

    【解决方案2】:

    您真的只想映射根路径还是您的意思是“/*”? 无论如何,以下配置适用于我使用 Spring 3.1.1,DispatcherServlet 映射到 web.xml 中的根('/'):

    <mvc:annotation-driven/>
    <mvc:default-servlet-handler/>
    
    <mvc:interceptors>
      <mvc:interceptor>
        <mvc:mapping path="/"/>
        <bean class="de.scrappy.web.TestInterceptor"/>
      </mvc:interceptor>
    </mvc:interceptors>
    

    您使用的是哪个版本的 Spring 以及 Spring 的 DispatcherServlet 是如何映射的? 并注意TestInterceptor实现HandlerInterceptor,不知道WebRequestInterceptors的处理方式是否不同。

    【讨论】:

      猜你喜欢
      • 2011-12-24
      • 1970-01-01
      • 2015-02-23
      • 1970-01-01
      • 2014-05-19
      • 1970-01-01
      • 1970-01-01
      • 2014-06-11
      • 1970-01-01
      相关资源
      最近更新 更多