1

我加入了一个现有项目,该项目使用 Spring mvc 的 2 种前端机制:

  • A) 控制器类扩展 org.springframework.web.servlet.mvc.SimpleFormController
  • B) 控制器类使用注解@Controller。

现在我找到了一个拦截器:

@Aspect
public class RequestMonitor {

    @Autowired
    private RequestMonitorService requestMonitorService;

    @Before("execution(* org.springframework.web.servlet.mvc.Controller+.handleRequest(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse))"
            + "&& args(request,response)")
    public void storeUserAccess(HttpServletRequest request, HttpServletResponse response) {
        requestMonitorService.storeUserAccess(request);
    }
}

谁捕获来自 org.springframework.web.servlet.mvc.Controller 的所有请求(机制 A)

如何适应拦截所有其他带有注释“@Controller”的控制器:org.springframework.stereotype.Controller(机制B)

4

1 回答 1

3

你有HandlerInterceptorAdapter类。您可以扩展它并使用子类中的方法:

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

public void postHandle(
        HttpServletRequest request, HttpServletResponse response, 
        Object handler, ModelAndView modelAndView)
        throws Exception

你需要注册你的拦截器,即:

<mvc:interceptors>
        <bean class="my.fully.qualified.package.RequestInterceptor" />
</mvc:interceptors>
于 2012-06-29T10:38:27.423 回答