1. springmvcインターセプタはHandlerInterceptor又は達成継承HandlerInterceptorAdapterによって実現されます。
2のカスタム実装インターセプタの手順:
A)。HandlerInterceptorインタフェースを実装するクラスを定義します
パブリック クラス myInterceptor 実装HandlerInterceptorは{ / ** * 実行方法処理する前に、一般的にいくつかの準備作業を行うために使用される、:ロギングなどを、権限チェックは 、それが虚偽の表示が傍受を返した場合、処理方法を実行しません* *は、処理方法を継続してtrueを返します * / @Override パブリック ブール ザpreHandle(HttpServletRequestのREQ、HttpServletResponseのRESP、オブジェクトハンドラ)がスロー例外{ するSystem.out.println( "---------行わpreHandler" req.getRemoteHost +()+ req.getRemoteUserを( )); resp.sendRedirect( "index.jspの" ); を返す falseに; } / ** *実行方法処理した後に実行するレンダリングされたビューの前に、一般的にいくつかのクリーンアップを行うために使用されます * / @Override 公共 のボイドpostHandle(HttpServletRequestのREQ、HttpServletResponseのRESPは、ハンドラオブジェクトを、のModelAndView音楽ビデオ)が スロー例外{ System.out.printlnはを( " PostHandlerを行う"); } / ** * 一般的なビューのレンダリングの後にリソースを解放するために実行 * / @Override 公共 ボイドafterCompletion(HttpServletRequestのarg0に、HttpServletResponseのARG1、ARG2オブジェクト、例外ARG3)が スロー例外{ するSystem.out.printlnを( "実行afterCompletion "); } }
B)springmvcプロファイルでは、配置されたインターセプターを追加
<MVC:インターセプタは> <! - コンフィギュレーション・インターセプタを定義 - > < MVC:インターセプタ > <! - 傍受されたURLマッピングを指定 / *が傍受されたルート・パス内のすべての要求を表し、 - / hello.do / **ルートパスとサブパス内のすべての要求が/user/add.do傍受されていることを示します - > <MVC:マッピング・パス=「/ **」/> <! - コンフィギュレーション・インターセプター・パス - > <クラス=豆"cn.sxt.interceptor.MyInterceptor"> </豆> </ MVC:インターセプタ > </ MVC:インターセプタ>
C)試験
達成するためにログインしますインターセプタ
パブリック クラス LoginInterceptor 拡張巧妙という名前HandlerInterceptorAdapterは { @Override 公共 ブールザ・preHandle(HttpServletRequestのリクエストは、レスポンスのHttpServletResponse、ハンドラオブジェクト) スロー例外を{ // アドレスがダウンして継続するために行われた場合のアドレス検証要求がログに記録されている場合 文字列URI = Request.getRequestURIを(); URI uri.substring =(uri.lastIndexOf( "/")+ 1 ); 場合(uri.equals( "login.doが" )){ 戻り trueに; } // セッションが継続した場合、ユーザが存在するか否かを確認し た場合(。!でrequest.getSession()のgetAttribute( "ユーザ名")= ヌル){ リターン trueには、 } // 実行は、ログインページにジャンプし Response.sendRedirect(request.getContextPath()+ "/ login.jspを" ); を返す falseに; } }