1.DispatcherServlet:
它继承了HttpServlet这个抽象类。前端控制器是Spring MVC的集中访问点,主要职责是调度、流程控制。为了给整个Web项目配置一个前端控制器,需要在web.xml文件中进行如下配置。
<servlet>
<servlet-name>springDispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--初始化时 加载sringmvx.xml -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<!--启动服务器时,创建Servlet -->
<load-on-startup>1</load-on-startup>
</servlet>
<!--放行静态资源-->
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>springDispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
如何你的DispatcherServlet拦截"*.do"这样的有后缀的URL,就不存在访问不到静态资源的问题。
如果你的DispatcherServlet拦截"/",为了实现REST风格,拦截了所有的请求,那么同时对*.js,*.jpg等静态文件的访问也就被拦截了。
如果你配置的是
<servlet-mapping>
<servlet-name>springDispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
静态资源将不能被访问到
若要访问静态资源要配置default
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
2.在spring3.0.4以后版本提供了mvc:resources , 可以在springmvc.xml中使用方法:
<!--放行静态资源-->
<mvc:resources mapping="/css/**" location="/css/"></mvc:resources>
<mvc:resources mapping="/img/**" location="/img/"></mvc:resources>
<mvc:resources mapping="/js/**" location="/js/"></mvc:resources>
<!--开启springmvc对注解的支持-->
<mvc:annotation-driven></mvc:annotation-driven>