SpringMVCのブロッキング、ブロッキングスタック、およびDateタイプへの変換

16212 ワード

文書ディレクトリ
  • SpringMVCインターセプタinterceptor
  • ブロッキングスタック
  • SpringMVC対Dateタイプの変換
  • SpringMVCインターセプタinterceptor
  • Spring MVCのインターセプタ(Interceptor)は、主にユーザ要求をブロックし、対応する処理に使用されるサーブレットのフィルタ(Filter)に似ています.
  • SpringMVCブロッカーとFilterの違い
  • ブロッキングはブロッキングコントローラ
  • のみ可能
  • Filterは、任意の要求
  • をブロックすることができる.
  • HandlerInterceptorを実現することによって、定義ブロック
  • から来る.
  • 1、HandlerInterceptorインタフェースを実現する
  • 実装インタフェースpreHandler、postHandler、およびafterCompletionメソッド
  • を書き換える.
  • preHandlerメソッド10は、コントローラに入る前に実行する、Trueに戻り、コントローラに入りfalseに戻ると、コントローラに入らず、ページは空白のページ
  • に戻る.
  • この方法の3番目のパラメータarg 2は、コントローラに入ってから実行する方法
  • である.
  • この方法は、上陸制御
  • によく用いられる.
  • postHandlerメソッドは、コントローラの実行が完了すると、jspページに入る前に
  • を実行する.
  • この方法の4番目のパラメータは、コントローラで伝達する値を取得し、この値を変更することができ、ジャンプするビューページ名
  • を取得することができる.
  • は、ログ記録、機密語フィルタ
  • によく用いられる.
  • afterCompletionメソッドは、jsp実行完了後に
  • を実行する.
  • の3番目のパラメータは、実行中の異常を記録する、異常情報
  • を取得することができる.
  • 異常ログのレコード
  • によく使用される
    public class DemoInterceptor implements HandlerInterceptor {
    
    	@Override
    	public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {
    		System.out.println("preHandler");
    		System.out.println(arg2);
    		return true;
    	}
    
    	@Override
    	public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
    			throws Exception {
    		System.out.println("postHandler");
    		System.out.println(arg2);
    		System.out.println(arg3.getViewName());
    		System.out.println(arg3.getModel().get("model"));
    		arg3.getModel().put("model", "     ");
    	}
    
    	@Override
    	public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
    			throws Exception {
    		System.out.println("afterCompletion");
    		System.out.println(arg3.getMessage());
    	}
    }
    
  • 2、springmvc.xmlでブロッキングを構成し、どのコントローラをブロッキングする必要がありますか?
  • が注釈されると、すべてのコントローラがブロックされ、任意の要求がブロック
  • に進む.
  • の下にあるのは、特定の要求をブロックするブロック構成であり、demoを要求する場合にのみ、このブロック
  • が進む.
    	
    	<mvc:interceptors>
    	
    		<mvc:interceptor>
    			<mvc:mapping path="/demo" />
    			<bean class="com.mak.interceptor.DemoInterceptor">bean>
    		mvc:interceptor>
    	mvc:interceptors>
    
  • 3、コントローラ
  • @Controller
    public class DemoController {
    	
    	@RequestMapping("demo")
    	public String demo(Model model) {
    		System.out.println("  demo");
    		model.addAttribute("model", "model  ");
    		return "/index.jsp";
    	}
    }
    

    ブロッキングスタック
  • 複数のブロッキングが同時に有効になると、ブロッキングスタック
  • が構成される.
  • 実行順は先進後出、中心点はコントローラ
  • である.
  • 実行順序とspringmvc.xmlにおける構成順序は
  • に関係する.
    	
    	<mvc:interceptors>
    		<bean class="com.mak.interceptor.DemoInterceptor">bean>
    		<bean class="com.mak.interceptor.DemoInterceptor2">bean>
    	mvc:interceptors>
    

    実行順序
    preHandler
    preHandler2
      demo
    postHandler2
    postHandler
    index.jsp
    afterCompletion2
    afterCompletion
    

    SpringMVCのDateタイプへの変換
  • 1、springmvcでグローバルタイムタイプ変換を使用する.xmlで構成、コードを動かさない
  • joda-timeをインポート.jar

  • 	<bean id="conversionService"
    		class="org.springframework.format.support.Formattin gConversionServiceFactoryBean">
    		<property name="registerDefaultFormatters" value="false" />
    		<property name="formatters">
    			<set>
    				<bean
    					class="org.springframework.format.number.NumberForm atAnnotationFormatterFactory" />
    			</set>
    		</property>
    		<property name="formatterRegistrars">
    			<set>
    				<bean
    					class="org.springframework.format.datetime.joda.Jod aTimeFormatterRegistrar">
    					<property name="dateFormatter">
    						<bean
    							class="org.springframework.format.datetime.joda.Dat eTimeFormatterFactoryBean">
    							<property name="pattern" value="yyyy-MM-dd" />
    						</bean>
    					</property>
    				</bean>
    			</set>
    		</property>
    	</bean>