Spring MVC Displatch Servletフロントエンドコントローラとブロッカーを配置する方法

18920 ワード

自分が宿題をしている時に、jspの中で画像をガイドして正常に表示できない状況に遭遇しました.その後、カスタムのintercepterが画像をブロックしていることに気づきました.だから、画像を入手できませんでした.
.xmlファイルのコード
_; web.xmlの部分構成情報(Dispactch Servletの設定):

	<servlet>
		<servlet-name>DispatcherServletservlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
		<init-param>
			<param-name>contextConfigLocationparam-name>
			<param-value>classpath:springmvc-config.xmlparam-value>
		init-param>
		
		<load-on-startup>1load-on-startup>
	servlet>
	<servlet-mapping>
		<servlet-name>DispatcherServletservlet-name>
		<url-pattern>/url-pattern>
	servlet-mapping>
_; springmvc-config.xmlにおける構成情報の一部(静的リソースのアクセスマップを構成することは、静的リソースをブロックしないこと):
 
	  <mvc:resources location="/js/" mapping="/js/**" >mvc:resources>
	  <mvc:resources location="/css/" mapping="/css/**">mvc:resources>
	  <mvc:resources location="/fonts/" mapping="/fonts/**">mvc:resources>
	  <mvc:resources location="/images/" mapping="/images/**">mvc:resources>
 
	  <mvc:interceptors>
	  	<mvc:interceptor>
	  		<mvc:mapping path="/**"/>
	  		<bean class="com.edu.bdu.interceptor.LoginInterceptor">bean>
	  	mvc:interceptor>
	  mvc:interceptors>
        よくこのように配置されていますので、静的資源は全部放出されたと思いますが、何度も実験してもブロックされました.ですから、ブロックがブロックされたのではないかと思います.ブロックの配置を修正します.
第一の方法:ブロック内にブロッキング不要なリソースパスを配置する(私のは写真です)

	  <mvc:interceptors>
	  	<mvc:interceptor>
	  		<mvc:mapping path="/**"/>
	  		
	  		<mvc:exclude-mapping path="/**/*.png"/>
	        <mvc:exclude-mapping path="/**/*.gif"/>
	        <mvc:exclude-mapping path="/**/*.jpg"/>
	        
	  		<bean class="com.edu.bdu.interceptor.LoginInterceptor">bean>
	  	mvc:interceptor>
	  mvc:interceptors>
第二の方法:標準ブロックをweb.xmlに設定し、静的リソースをブロックしない.
この方法を使うにはweb.xmlにservlet-mappingを追加する必要があります.
	  
	<servlet-mapping>  
	    <servlet-name>defaultservlet-name>  
	    <url-pattern>/js/*url-pattern>  
	    <url-pattern>/css/*url-pattern>   
	    <url-pattern>/fonts/*url-pattern>  
	    <url-pattern>/images/*url-pattern> 
	servlet-mapping>
_; springmvc-config.xmlに追加する(私が使っているtomcatのデフォルトservletの名前はdefaultです)
<mvc:default-servlet-handler default-servlet-name="default"/>
このような方法で配置すればいいです.ブロックにも書きません.
第3の方法:特定のものをweb.xmlに配置する.

	<servlet>
		<servlet-name>DispatcherServletservlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
		<init-param>
			<param-name>contextConfigLocationparam-name>
			<param-value>classpath:springmvc-config.xmlparam-value>
		init-param>
		
		<load-on-startup>1load-on-startup>
	servlet>
	<servlet-mapping>
		<servlet-name>DispatcherServletservlet-name>
		<url-pattern>*.actionurl-pattern>
	servlet-mapping>
このような方法でspringブロック時に「.action」の最後の要求だけをブロックすると、静的資源のメンテナンスがなくなります.もういらないです.ブロックにも書かなくてもいいです.
Dispring MVCは、DispartServlet要求マッピングが「/」に設定されている場合、静的リソースの要求を含むWebコンテナのすべての要求をキャプチャし、Spring MVCは、それらを通常の要求処理として扱い、対応するプロセッサが見つけられなくなり、エラーを引き起こす.