xml里面配置标签:

  1. <!DOCTYPE web-app PUBLIC
  2. "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
  3. "http://java.sun.com/dtd/web-app_2_3.dtd" >
  4. <web-app>
  5. <display-name>Archetype Created Web Application</display-name>
  6. <servlet>
  7. <servlet-name>springmvc</servlet-name>
  8. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  9. <init-param>
  10. <param-name>contextConfigLocation</param-name>
  11. <param-value>classpath:springmvc.xml</param-value>
  12. </init-param>
  13. </servlet>
  14. <servlet-mapping>
  15. <servlet-name>springmvc</servlet-name>
  16. <!--
  17. 方式一:带后缀,比如*.action *.do *.aaa
  18. 该种方式比较精确、方便,在以前和现在企业中都有很大的使用比例
  19. 方式二:/ 不会拦截 .jsp,但是会拦截.html等静态资源(静态资源:除了servlet和jsp之外的js、css、png等)
  20. 为什么配置为/ 会拦截静态资源???
  21. 因为tomcat容器中有一个web.xml(父),你的项目中也有一个web.xml(子),是一个继承关系
  22. 父web.xml中有一个DefaultServlet, url-pattern 是一个 /
  23. 此时我们自己的web.xml中也配置了一个 / ,覆写了父web.xml的配置
  24. 为什么不拦截.jsp呢?
  25. 因为父web.xml中有一个JspServlet,这个servlet拦截.jsp文件,而我们并没有覆写这个配置,
  26. 所以springmvc此时不拦截jsp,jsp的处理交给了tomcat
  27. 如何解决/拦截静态资源这件事?
  28. 方式三:/* 拦截所有,包括.jsp
  29. -->
  30. <!--拦截匹配规则的url请求,进入springmvc框架处理-->
  31. <url-pattern>/</url-pattern>
  32. </servlet-mapping>
  33. </web-app>

父xml的路径:

我们配置的springmvc.xml只能对jsp进行拦截,但不能对html等进行拦截,我们在webapp下新建个test.html

然后访问:

原因是没有对html等静态资源后缀进行处理的handle.

我们在springmvc.xml里面配置:

  1. <mvc:default-servlet-handler/>

访问:

继续测试:
如果我们将html页面放在webapp以外的其他位置,都是无法访问的:

那如果我们想让静态资源在resources下面访问,我们应该怎么配置呢?

将test.html放在resources目录下面,然后配置springmvc.xml:

  1. <!--静态资源配置,方案二,SpringMVC框架自己处理静态资源
  2. mapping:约定的静态资源的url规则
  3. location:指定的静态资源的存放位置
  4. -->
  5. <mvc:resources location="classpath:/" mapping="/resources/**"/>

resources目录就是咱们的classpath路径。
访问:

http://localhost:8080/resources/test.html

版权声明:本文为liuyj-top原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/liuyj-top/archive/2004/01/13/13137736.html