0

Spring MVC 3.0 の HandlerInterceptors を試しています。

以下は私のインターセプターです

public class SessionInterceptor extends HandlerInterceptorAdapter {

   @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
      System.out.println("inside preHandle");
      if(request.getSession().getAttribute(SessionConsta nts.USER_SESSION_NAME) == null) {
         response.sendRedirect("welcome");
         return false;
      }
      return true;
   }
}

以下は私のxmlでの私の設定です

<mvc:annotation-driven/>

<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/services/*"/>
<bean class="com.ca.myca.interceptors.SessionInterceptor " />
</mvc:interceptor>
</mvc:interceptors>

しかし、インターセプターは呼び出されていません。

何か不足している場合はお知らせください。

4

4 に答える 4

1

**このアプリケーションでは、サービスのサブパスの一致にdoubleを使用しているため、変更して、役立つかどうかを確認してください。

<mvc:mapping path="/services/**"/>
于 2012-05-23T14:51:38.090 に答える
1

あなたは<mvc:annotation-driven/>mvcインターセプターで使用しています。

Spring リファレンスを確認してください:

http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/web/servlet/DispatcherServlet.html

「Java 5+ 環境で実行する場合、デフォルトの AnnotationMethodHandlerAdapter も登録されます。HandlerAdapter オブジェクトをアプリケーション コンテキストに Bean として追加して、デフォルトの HandlerAdapter をオーバーライドできます。HandlerMappings と同様に、HandlerAdapter には任意の Bean 名を付けることができます (テスト済みです)。タイプ別)」。

<mvc:annotation-driven/>は、@RequestMapping、@Controller などのアノテーション駆動型 MVC コントローラーに使用されることになっていますが、<mvc:annotation-driven/>それをサポートするために " " を定義する必要がないことがわかりました。

jackson (json サポート用) を使用していない限り、自動配線などの一般的な用途のために<mvc:annotation-driven/>" <context:annotation-config>" を削除して代わりに使用することができます。

于 2012-11-08T00:15:14.807 に答える