2

我最近开始研究一个使用 Spring Security 的 Spring MVC 项目。

在用户的请求到达控制器之前,我必须做一些预检查。

这就是我想要实现的目标,就像我在 struts 中做了很多工作一样,在 struts 中,我们可以将所有动作类扩展为一个超类,假设BaseAction然后在这里编写一些验证,以便在调用子类方法之前调用它们。

我想在这里实现同样的目标,但不知道如何开始。

我不能使用过滤器,因为我需要在预检查中进行数据库调用和 Web 服务调用。

我只需要指针。

4

1 回答 1

3

您可以使用HandlerInterceptorAdapter实现拦截器。

http://static.springsource.org/spring/docs/3.0.x/reference/mvc.html#mvc-handlermapping-interceptor

在 XML 中配置 applicationContext。

<mvc:interceptors>
    <bean class="my.package.MyInterceptor" />
</mvc:interceptors>

拦截器。

public class MyInterceptor extends HandlerInterceptorAdapter {

    public boolean preHandle(
        HttpServletRequest request, 
        HttpServletResponse response, Object handler) {

        // your logic
        return true;
    }
}

如果执行链应该继续下一个拦截器或处理程序本身,则返回true。否则,DispatcherServlet 假定此拦截器已经处理了响应本身。

于 2013-06-29T21:42:30.927 回答