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

  • 相关阅读:
    Linux makefile 教程 非常详细,且易懂
    PCRE函数简介和使用示例
    Eclipse常用快捷键汇总
    vc6.0 调用ocx控件
    理解串口流控
    c++ xml markup
    unresolved external symbol __endthreadex错误解决(
    Android自动化~1
    数据库左连接,右连接,内连接,外连接
    Linux常用指令
  • 原文地址:https://www.cnblogs.com/jinyu59/p/11791998.html
Copyright © 2011-2022 走看看