一、静态资源的访问, css、js、static页面
我们知道SpringMVC的核心配置是DispatcherServlet,我们所有的请求都要经过Servlet
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:/spring-mvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-patten> / </url-patten> // 这里是 / , 也就是spring会拦截所有请求,如果是.do,.action则不用看下面的静态资源处理了
</servlet-mapping>
由于这里我配置的是 / ,会拦截所有,所以会拦截css、js、 static页面当然你也可以配置.action或.do;但不要配 /*
1、激活容器如tomcat、Jetty的defaultServlet来处理静态页面,这里的<servlet-mapping>要在SpringMVC的Servlet上面
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-patten>*.css</url-patten>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-patten>*.js</url-patten>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-patten>*.png</url-patten>
如果图片还有其他格式的,再添加改配置
简便的方式配置是
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-patten>*.css</url-patten>
<url-patten>*.js</url-patten>
<url-patten>*.png</url-patten>
<url-patten>images/*</url-patten>
<url-patten>static/*</url-patten>
</servlet-mapping>
不同服务容器的servlet-name不一样
Tomcat, Jetty, JBoss, GlassFish 默认Servlet名字:default
Google App Engine 默认Servlet名字: _ah_default
Resin 默认Servlet名字:resin-file
WebLogic 默认名字:FileServlet
WebSphere 默认Servlet名字: SimpleFileServlet
2、spring3.0.4之后使用<mvc:resources mapping="" location="" />
在spring-mvc.xml配置中增加
<mvc:resources mapping="/images/**" location="/images/" />
<mvc:resources mapping="/js/**" location="/js/" />
location表示资源文件所在路径,默认是在webapp下面;如果要放在WEB-INF下面,则location="/WEB-INF/images/"
3、 <mvc:default-servlet-handler /> 这种方式的访问性能比较差,这种相当于在把"/**" 注册到SimpleUrlHandlerMapping的urlMap中,把对静态资源的访问由HandlerMapping转到org.springframework.servlet.resource.DefaultServletHttpRequestHandlet处理并返回 DefaultServletHttpRequestHandler就是各个Servlet容器自己默认的Servlet 多个HandlerMapping执行顺序: DefaultAnnotationHandlerMapping的order属性值:0<mvc:resources />自动注册的SimpleUrlHandlerMapping的order属性值是: 2147483646 <mvc:default-servlet-handler />自动注册的SimpleUrlHandlerMapping的 order属性值是:2147483647 下一篇主要说下SpringMVC拦截器对权限的验证,后面再通过apache的shrio权限验证框架说下认证和授权