在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容器内处理,为性能考虑,可以在前面过滤处理了。
尤其在分布式的环境中,更应如此。