インターセプタとデータチェックSpringMVC

1. インターセプターは何ですか

  スプリングMVCザ・インターセプタ(インターセプタと同様に)、フィルタ(フィルタサーブレットでユーザ要求を傍受し、それに応じて処理のために主にあります)。例えば権限が、インターセプタによってログ記録要求情報を検証することができる、ユーザのログイン等か否かを判断します SpringMVC HandlerInterceptorによって達成カスタムインターセプタクラスのインターフェイス。

2、  迎撃ケース

1 MyIntercept

パッケージcom.springmvc.intercept。

輸入org.springframework.web.servlet.HandlerInterceptor;
輸入org.springframework.web.servlet.ModelAndView。

インポートのjavax.servlet.http.HttpServletRequest;
インポートのjavax.servlet.http.HttpServletResponse;

パブリッククラスMyIntercept実装HandlerInterceptor {
    @オーバーライド
    パブリックブールpreHandleは(HttpServletRequestのリクエスト、HttpServletResponseの応答、オブジェクト・ハンドラ)は{例外をスロー
        System.out.println( "========= ========= handleメソッドの中で迎撃" );
         戻り値 をtrueに
    }

    @オーバーライド
    公共ボイドpostHandle(HttpServletRequestのリクエスト、HttpServletResponseの応答、オブジェクト・ハンドラのModelAndViewのModelAndViewは){例外をスロー
        System.out.println( "ビューはパースのDispatcherServlet =====前======= HandlerAdapter後に実行されています" );
    }

    @オーバーライド
    公共ボイドafterCompletionは、(HttpServletRequestのリクエスト、HttpServletResponseの応答、オブジェクト・ハンドラは、例外EX)は{例外をスロー
        System.out.println( "========= =========現在後の呼び出し" )。
    }
}
コードの実装

2 )インターセプター配置バネmvc.xml

<! - 使用デフォルト・サーブレットのリリースリソース- > 
< MVC:デフォルト・サーブレット・ハンドラ/>

<! - 配置拦截器- > 
< MVC:インターセプタ> 
    < MVC:インターセプター> 
        < MVC:マッピングパス= "/私/ **" /> 
        < 豆のクラス= "com.springmvc.intercept.MyIntercept" > < / > 
    </ MVC:迎撃> 
</ MVC:インターセプタ>
コードの実装

(3)MyController

@コントローラ
@RequestMapping( "/私" 
パブリッククラスMyController {
    @RequestMapping( "/ doFirst" 
    パブリック文字列doFirst(){
        System.out.println( "方法コントローラ========= =========" );
         戻り "インデックス" 
    }
コードの実装

(4)コンソール効果

 

。3、Spring MVCのデータ検証

 3.1 データ検証ケース

1 )依存性を導入

<! - https://mvnrepository.com/artifact/org.hibernate/hibernate-validator - > 
< 依存> 
  < groupIdを> org.hibernate </ groupIdを> 
  < たartifactId >休止状態-バリデータ</ たartifactId > 
  < バージョン> 5.4.1.Final </ バージョン> 
</ 依存関係>
コードの実装

2 validate.jsp

<%@ページのcontentType = " text / htmlの;のcharset = UTF-8 " 言語= " javaの"  %> 
< htmlの> 
< ヘッド> 
    < タイトル>测试案例</ タイトル> 
</ ヘッド> 
< 身体> 
    < フォームアクション= "/私/検証" メソッド= "ポスト" > 
        编号:< 入力タイプ= "テキスト" 名前= "UID" /> <BR /> 
        名称:< 入力タイプ= "テキスト" 名前= "のuName" /> < BR /> 
        邮箱:< 入力タイプ= "テキスト" 名前= "メール" /> < BR /> 
        电话:< 入力タイプ= "テキスト" 名前=」電話」/> < BR /> 
        身份证号:< 入力タイプ= "text"の= "ユーザーコード" /> < BR /> 
        < 入力タイプ= ""提出= "提出" /> 
    </ フォーム> 
</ ボディ> 
</ HTML >
コードの実装

(3)エンティティクラスのUserInfo

パッケージcom.springmvc.entity。


輸入org.hibernate.validator.constraints.Email;
輸入org.hibernate.validator.constraints.Length。

輸入javax.validation.constraints.NotNull;
輸入javax.validation.constraints.Pattern;

パブリッククラスのUserInfo {

    @NotNull(メッセージ =「数は空白にすることはできません」
    プライベート整数は、UID。

    @NotNull
    @Length(MIN = 2、最大= 8は、メッセージ=「ユーザ名が8未満2以上にすることはできません」
    プライベート文字列のuName。

    @email(メッセージ =「間違ったEメールの形式」
    プライベート文字列電子メール;

    @Pattern(正規表現 = "/ ^ 1 [3456789] \\ {D}。9 $ /"、メッセージ= "間違った電話番号型" 
    プライベート文字列電話。

    @Pattern(正規表現 = "/(D \\ ^ {15} $)|(D \\ ^ {} $ 18である)|。(D \\ ^ {} 17(D \\ | X- | X)$)/" 、メッセージは=「IDカード番号の形式が正しくありません」
    プライベート文字列USERCODE。

    パブリック整数GETUID(){
        返すUID;
    }

    公共ボイドのsetuid(整数UID){
         この .UID = UID。
    }

    パブリック文字列getuName(){
        返すのuNameを。
    }

    公共ボイドsetuName(文字列のuName){
         この .uName = のuName。
    }

    パブリック文字列getEmail(){
        リターンメール。
    }

    公共のボイドsetEmail(文字列の電子メール){
         この .email = メール。
    }

    パブリック文字列getPhone(){
        戻り電話;
    }

    公共ボイドsetPhone(文字電話){
         このドットフォン= 電話;
    }

    パブリック文字列getUserCode(){
        リターンUSERCODE。
    }

    公共ボイドsetUserCode(文字列ユーザーコード){
         この .userCode = USERCODE。
    }
}
コードの実装

(4)MyController

パッケージcom.springmvc.controller。

輸入com.springmvc.entity.UserInfo;
輸入org.springframework.stereotype.Controller;
輸入org.springframework.validation.BindingResult;
輸入org.springframework.validation.ObjectError;
輸入org.springframework.web.bind.annotation.RequestMapping。

輸入javax.validation.Valid;
輸入はjava.util.List;

@コントローラ
@RequestMapping( "/私" 
パブリッククラスMyController {
    @RequestMapping( "/ doFirst" 
    パブリック文字列doFirst(){
        System.out.println( "方法コントローラ========= =========" );
         戻り "インデックス" 
    }

    @RequestMapping( "/検証" 
    公共の文字列の検証(@ValidのUserInfo情報、BindingResult bindingResult){
        // 異常情報があれば
        IF (bindingResult.hasErrors()){
             // 異常情報は、オブジェクト取得 
            一覧<ObjectError> AllErrors = bindingResult.getAllErrors();
             // 異常情報出力
            (ObjectErrorエラー:AllErrors){
                System.out.println(errors.getDefaultMessage())。
            }
        }
        リターン「インデックス」
    }
}
コードの実装

(5)結果は

 

 

 

 

おすすめ

転載: www.cnblogs.com/Zzzzn/p/11843279.html