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)結果は