javaweb中靜態文件的經常使用處置辦法匯總。本站提示廣大學習愛好者:(javaweb中靜態文件的經常使用處置辦法匯總)文章只能為提供參考,不一定能成為您想要的結果。以下是javaweb中靜態文件的經常使用處置辦法匯總正文
本文實例匯總了javaweb中靜態文件的經常使用處置辦法,在Javaweb法式開辟中很有適用價值,詳細辦法匯總以下:
辦法一:激活Tomcat的defaultServlet來處置靜態文件
在web.xml中添加:
<servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.jpg</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.js</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.css</url-pattern> </servlet-mapping>
解釋:要寫在DispatcherServlet的後面, 讓 defaultServlet先攔阻要求,如許要求就不會進入Spring了,我想機能是最好的吧。
Tomcat, Jetty, JBoss, and GlassFish 自帶的默許Servlet的名字 -- "default"
Google App Engine 自帶的 默許Servlet的名字 -- "_ah_default"
Resin 自帶的 默許Servlet的名字 -- "resin-file"
WebLogic 自帶的 默許Servlet的名字 -- "FileServlet"
WebSphere 自帶的 默許Servlet的名字 -- "SimpleFileServlet"
辦法二: 在spring3.0.4今後版本供給了mvc:resources , 應用辦法:
<!-- 對靜態資本文件的拜訪 --> <mvc:resources mapping="/images/**" location="/images/" />
解釋:/images/**映照到ResourceHttpRequestHandler停止處置,location指定靜態資本的地位.可所以web application根目次下、jar包外面,如許可以把靜態資本緊縮到jar包中。cache-period 可使得靜態資本停止web cache
辦法三 ,應用<mvc:default-servlet-handler/>
<mvc:default-servlet-handler/>
會把"/**" url,注冊到SimpleUrlHandlerMapping的urlMap中,把對靜態資本的拜訪由HandlerMapping轉到org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler處置並前往。
DefaultServletHttpRequestHandler應用就是各個Servlet容器本身的默許Servlet.
彌補解釋:多個HandlerMapping的履行次序成績:
DefaultAnnotationHandlerMapping的order屬性值是:0
<mvc:resources/ >主動注冊的 SimpleUrlHandlerMapping的order屬性值是: 2147483646
<mvc:default-servlet-handler/>主動注冊 的SimpleUrlHandlerMapping 的order屬性值是: 2147483647
spring會先履行order值比擬小的。當拜訪一個a.jpg圖片文件時,先經由過程 DefaultAnnotationHandlerMapping 來找處置器,必定是找不到的,由於我們沒有叫a.jpg的Action。然後再按order值升序找,因為最初一個 SimpleUrlHandlerMapping 是婚配 "/**"的,所以必定會婚配上,便可以呼應圖片。
拜訪一個圖片,還要走層層婚配。不知機能若何?
最初再解釋一下,計劃2、計劃三 在拜訪靜態資本時,假如有婚配的(近似)總攔阻器,就會走攔阻器。假如你在攔阻中完成權限檢討,要留意過濾這些對靜態文件的要求。
若何你的DispatcherServlet攔阻 *.do如許的URL後綴,就不存上述成績了。照樣有後綴便利。