zoukankan      html  css  js  c++  java
  • 在web.xml中配置SpringMVC

    代码如下

      <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:springMVC.xml</param-value>
      	</init-param>
      </servlet>
      
      <servlet-mapping>
      	<servlet-name>springMVC</servlet-name>
      	<url-pattern>/</url-pattern>
      </servlet-mapping>
    

      可以看到,在web.xml中配置SpringMVC时,实际上是配置了一个servlet.

    那么,在<servlet-mapping>下的<url-pattern>的匹配规则是怎样的呢?

    url-pattern的匹配规则

    <url-pattern>中的/实际上是从完整路径中项目名后的内容开始匹配

    比如http://localhost:8081/projectName/homepage/test.do  ,

    /*匹配的就是    /homepage/test.do    这一段

    有三种,分别是:

    1.精确匹配

    <url-pattern>/test/userList.action</url-pattern>
    

      精确匹配就是完全精准地匹配到URL地址

    2.路径匹配

    <url-pattern>/</url-pattern>
    <!--或者-->
    <url-pattern>/*</url-pattern>
    <!--或者-->
    <url-pattern>/base/*</url-pattern>
    

      其中,/和/*的区别是

    /   ==>  会匹配到路径型的URL,例如 /abc/test这种类型的路径

    /*  ==>  则不仅匹配路径型URL,也匹配后缀型URL,例如/abc/test.jsp

    因此如果<url-pattren>仅设置为/*的话,那么在请求返回时(请求返回的一般是/WEB-INF/view/XXX.jsp),也会被前端控制器(DispatcherServlet)拦截,导致找不到对应的handler,出现404错误!

    如果一定要使用/*的话,可以用/XXX/*这种方法,来避免拦截返回的请求

    3.扩展名匹配

    <url-pattern>*.do</url-pattern>
    <url-pattern>*.action</url-pattern>
    <url-pattern>*</url-pattern>//这是错误用法!
    <!-- 等等 -->

      会拦截以*.do和*.action结尾的请求.

    容器匹配顺序

    容器会首先进行精确匹配,找不到则进行路径匹配,还找不到就进行扩展名匹配.一旦匹配成功,就不进行下边的匹配.

     参考:https://blog.csdn.net/yzh18373476791/article/details/82719848

  • 相关阅读:
    第五周总结
    构建之法阅读笔记02
    第四周总结
    使用HttpClient+Json解析器爬取数据并存入数据库
    构建之法阅读笔记01
    使用Echarts+Javaweb可视化数据库中数据
    Oracle自我补充之trunc()函数使用介绍
    Oracle自我补充之OVER()函数介绍
    SpringMVC详细示例实战教程(较全开发教程)
    eclipse逆向生成hibernate的实体类(注解和配置文件)
  • 原文地址:https://www.cnblogs.com/jinyu59/p/11791998.html
Copyright © 2011-2022 走看看