Spring - 如何制作全局 URL 控制器?
Spring - how to make global URL controller?
我的 Spring 网络应用程序中有很多控制器,我想知道如何构建类似控制器或过滤器的东西,以便在 URL 出现时执行他的代码。 .... ?clearCache=Y ?
在控制器方法上使用这个:
@RequestMapping(value = "/urlpPath", params="clearCache=Y", method = RequestMethod.GET)
Params 是用来限制 url 参数值的参数。
如果您希望对任何请求使用此功能,您可以通过实施请求过滤器或拦截器来实现。
您可以在 Spring 中找到此类行为的一个示例。 LocaleChangeInterceptor
检查参数 lang
并修改当前请求区域设置。
扩展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>
我的 Spring 网络应用程序中有很多控制器,我想知道如何构建类似控制器或过滤器的东西,以便在 URL 出现时执行他的代码。 .... ?clearCache=Y ?
在控制器方法上使用这个:
@RequestMapping(value = "/urlpPath", params="clearCache=Y", method = RequestMethod.GET)
Params 是用来限制 url 参数值的参数。
如果您希望对任何请求使用此功能,您可以通过实施请求过滤器或拦截器来实现。
您可以在 Spring 中找到此类行为的一个示例。 LocaleChangeInterceptor
检查参数 lang
并修改当前请求区域设置。
扩展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>