SpringMVC:インターセプタ、POST中国のゴミ問題

SpringMVC:インターセプタ、POST中国のゴミ問題

1、インターセプタ

スプリングMVCは、フィルタ(フィルタ)と同様インターセプタ(インターセプタ)サーブレットは、ユーザの要求し、それに応じて処理をインターセプトするための主です。

フィルタとインターセプターの差:ブロッカーはAOP思想の適用です。

フィルタ

  • サーブレット仕様の一部は、任意のJava Webプロジェクトを使用することができます
  • *に/ URLパターンを設定した後、アクセスしたいすべてのリソースを傍受することができます

迎撃機

  • インターセプタはSpringMVCのフレームワークを使用するためのプロジェクトを使用して、自分自身のSpringMVCフレームワークです
  • 訪問は、JSP / HTML / CSS /画像/ JSが傍受されることはありませんであればインターセプタは、アクセス制御方法を傍受します

カスタム実装インターセプタ:

実施することによりHandlerInterceptorAdapterインタフェースを、そしてSpring MVCのカスタムインターセプタを使用することができます登録。

HandlerInterceptorAdapter インターフェイスは、3つのメソッドを提供します。

  • preHandle() サービス・プロセッサーは、要求を処理する前に呼び出されます

    • この方法は、コントローラのメソッドの前に実行されます
    • 戻り値は、後続の動作を継続するかどうかを示します。
    • それは行くことを示す、trueを返します。
    • falseを返します、割り込み(通話傍受方法および次回の実行コントローラを含む)すべての後続の操作。
  • postHandle() サービスプロセッサが実行する処理要求が完了した後、実行する前にビューを生成

    • コントローラのメソッド呼び出しと解析には、ビューの前に実行した後。
    • この方法は、モデルとビューにさらに変更を加えることができます。
  • afterCompletion() DispatcherServletのでは完全に呼び出した後、要求の処理を完了し、リソースをクリーンアップするために使用することができます。

    • この方法は、終了(すなわち、端面図のレンダリング)全体の要求の後に行われます。
    • あなたはこの方法で仕事にいくつかのリソースのクリーンアップ、ログやその他の情報を得ることができます。
public class MyInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        return false;
    }

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

    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

    }
}

春web.xml構成:

<mvc:interceptors>
  <bean class="com.xu.web.interceptor.MyInterceptor1"/> <!-- 1 -->

  <mvc:interceptor> <!-- 2 -->
    <mvc:mapping path="/**"/> <!-- 3 -->
    <mvc:exclude-mapping path=""/> <!-- 4 -->
    <bean class="com.xu.web.interceptor.MyInterceptor2"/> <!-- 5 -->
  </mvc:interceptor>

  <mvc:interceptor> <!-- 6 -->
    <mvc:mapping path="/hello"/> <!-- 7 -->
    <bean class="com.xu.web.interceptor.MyInterceptor3"/> <!-- 8 -->
  </mvc:interceptor>

</mvc:interceptors>
  • 1示され、インターセプタに登録されているすべての要求のグローバルインターセプターインターセプターインターセプトされています
  • 2 | 6示され、部分的に遮断、明示的にどの傍受リクエストインターセプタを設定する必要が迎撃迎撃の下で登録されています。
  • 3示され、すべてのパスを表すブロック
  • 4示され、前提の下ではない、いくつかの要求を横取り/除く、特定のリクエストを傍受表し
  • 7示され、全てのブロック表現/helloのパスが始まると

インターセプタが複数、配列プレス呼び出すときpreHandleの方法を、次いで逆それぞれインターセプタ呼び出しpostHandle及びafterCompletion方法は、すなわち:

  • 用A
  • Bについて
  • Cの場合
  • C-ポスト
  • C-後
  • B-ポスト
  • B-後
  • ポスト
  • A-後

2、POSTは、中国の文字化けを要求します

Spring MVCのは、ゴミ問題を解決するために、専用のフィルターPOSTリクエストを提供し、web.xmlファイルを使用するように設定する必要があります。

<filter>
    <filter-name>characterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
        <param-name>forceEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>characterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

要求は、一般的な構成設定ファイルTomcatを修正することで解決することができます。

おすすめ

転載: www.cnblogs.com/whitespaces/p/12455031.html