spring mvc 中對靜態資源的訪問配置
阿新 • • 發佈:2019-01-05
在web.xml中配置spring mc servlet
對url-pattern設定時,排除在spring的servlet之外。
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation< /param-name>
<param-value>/WEB-INF/mvc-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern >
</servlet-mapping>
上面的路徑配置’/’中,把所有的url處理全部交給spring mvc來處理了。這樣靜態資源也會被其攔截處理。
改進:
修改spring mvc的servlet處理的url-pattern,指定其具體處理路徑。
在web.xml中使用容器對應的default servlet優先處理靜態資源
每個java web容器都有其default servlet。在spring mvc servlet直接,先配置default servlet處理靜態資源
- Tomcat, Jetty, JBoss, and GlassFish 預設 Servlet的名字 -- "default" - Resin 預設 Servlet的名字 -- "resin-file" - WebLogic 預設 Servlet的名字 -- "FileServlet"
<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>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
在spring mvc的配置中設定方法有2種
選擇其中任意一種
<!-- 方式1 靜態資源訪問處理 這種方法就是利用容器的default servlet來處理先 -->
<mvc:default-servlet-handler/>
<!-- 方式2 靜態資源訪問處理 org.springframework.web.servlet-3.1.4版本及以後使用 -->
<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
<mvc:resources mapping="/static/**" location="/static/" />
<mvc:resources mapping="/resources/**" location="/resources/" />
<mvc:resources mapping="/images/**" location="/images/" />
<mvc:resources mapping="/js/**" location="/js/" />
在伺服器的load balance中配置
其實,靜態的資源不需要進入到spring mvc等java web容器內處理,為效能考慮,可以在前面過濾處理了。
尤其在分散式的環境中,更應如此。