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 に答える