Spring - 如何制作全局 URL 控制器



我的 Spring Web 应用程序中有很多控制器,我想知道,如何构建类似控制器或过滤器的东西,以执行他的代码,当在 URL 中出现时...... ?clearCache=Y ?

扩展 HandlerInterceptorAdapter 并对其进行配置:

public class CacheClearingHandlerInterceptor extends HandlerInterceptorAdapter {
  @Override
  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    if("Y".equals(request.getParameter("clearCache"))) {
      doCoolStuff();
    }
    return super.preHandle(request, response, handler);
  }
}

在 Web 应用程序上下文配置 ( mvc-dispatcher-servlet.xml ):

<mvc:interceptors>
    <mvc:interceptor>
        <mvc:mapping path="/**"/>
        <bean class="com.example.project.CacheClearingHandlerInterceptor"/>
    </mvc:interceptor>
</mvc:interceptors>

在控制器方法上使用它:

@RequestMapping(value = "/urlpPath", params="clearCache=Y", method = RequestMethod.GET)
参数

是用于限制具有该参数值的 url 的参数。

如果您希望任何请求使用此功能,可以通过实现请求过滤器或拦截器来实现此目的。

你可以在春天本身找到这种行为的一个例子。检查参数lang并修改当前请求区域设置的LocaleChangeInterceptor

最新更新