web.xml中配置
<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/spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
一般url-pattern配置都是/
這樣配置會攔截html,js css等靜態資源
因爲Web容器Tomcat中有一個DefatulServlet 主要提供靜態資服務默認的url-pattern也是/
這裏覆蓋了,
- JSP爲什麼不攔截呢?
容器tomcat 中還有一個JspServlet,這裏並沒有重寫
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jsp</url-pattern>
<url-pattern>*.jspx</url-pattern>
</servlet-mapping>
解決方法一
spingmvc配置文件中使用下面標籤就可以了
<mvc:default-servlet-handler/>
會在Spring上下文中定義一個DefaultServletHttpRequestHandler對象
會對進行DispatcherServelt的請求進行過濾,如果發現是一個靜態資源請求,會把請求轉給Web容器-Tomcat處理
不是靜態資源,繼承由SpringMVC管理
缺點:靜態資源只能放在Webapp根目錄下,可以建立目錄
解決方法二
使用<mvc:resources標籤
<mvc:resources mapping="/resources/**" location="classpath:/"/>
location元素表示webapp目錄下的static包下的所有文件;
這裏是resources目錄
mapping元素表示以/static開頭的所有請求路徑,如/static/a 或者/static/a/b;
mapping這裏表示以resources開頭的請求路徑
如:
http://localhost:8088/resources/test1.html
解決方法三-web.xml中配置defaultServlet的mapping
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.js</url-pattern>
<url-pattern>*.css</url-pattern>
<url-pattern>*.html</url-pattern>
<url-pattern>*.htm</url-pattern>
<url-pattern>*.png</url-pattern>
<url-pattern>*.jpg</url-pattern>
<url-pattern>*.gif</url-pattern>
<url-pattern>*.ico</url-pattern>
</servlet-mapping>