zoukankan      html  css  js  c++  java
  • spring的路径匹配问题

    今天下午没课,细学了有关于spring的配置。刚开始比较顺利,试的几个项目都通过了,但没多久就碰到难题,结果被困惑了整整一个晚上。

    在spring官方文档中,它提供了给我们关于spring在web.xml中的一个实例

     1 <web-app>
     2     <servlet>
     3         <servlet-name>golfing</servlet-name>
     4         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
     5         <load-on-startup>1</load-on-startup>
     6     </servlet>
     7 
     8     <servlet-mapping>
     9         <servlet-name>golfing</servlet-name>
    10         <url-pattern>/golfing/*</url-pattern>
    11     </servlet-mapping>
    12 </web-app>

    通过测试,这个例子本身是正确无误的。任何路径形式为:<项目名>/goifing/*的请求均能够被正确拦截并处理。这里可能有人会有迷惑,说明一下,这里它查找RequestMapping时匹配的只有*部分的内容,而不包括/golfing部分。

    举个例子,比如你输入了<项目名>/gofing/hello这样请求。那么spring将会处理你的请求,查找@RequestMapping("hello")的方法进行处理,而不是@RequestMapping("gofing/hello")。

    接下来讲解第二个问题。其实我们一般是不喜欢再多加/golfing这样的一个前缀。因此我们会很自然的想处理成下面这样的形式

    <web-app>
    
        <servlet>
            <servlet-name>golfing</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <load-on-startup>1</load-on-startup>
        </servlet>
    
        <servlet-mapping>
            <servlet-name>golfing</servlet-name>
            <url-pattern>/*</url-pattern>
        </servlet-mapping>
    
    </web-app>

    也就是只剩下了/*这样的匹配,去掉了/gofing部分。很多人应该会认为这样应该是没什么问题,不过,结果出乎我们的意料。但我们输入<项目名>/*这样请求后,返回均为404,究竟是什么消失了?
    对于这个问题我目前也还没能解答,不过我找到解决这个问题的方法,将上面的代码在修改一小点

     1 <web-app>
     2 
     3     <servlet>
     4         <servlet-name>golfing</servlet-name>
     5         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
     6         <load-on-startup>1</load-on-startup>
     7     </servlet>
     8 
     9     <servlet-mapping>
    10         <servlet-name>golfing</servlet-name>
    11         <url-pattern>/</url-pattern>
    12     </servlet-mapping>
    13 
    14 </web-app>

    可以看到,我这次连*也删除了,只剩下/。进测试,采用这种方法请求恢复正常!

  • 相关阅读:
    校招 存储相关研发工程师 收人要求
    Ubuntu配置
    个人感想
    Linux入门 文本编辑器
    linux入门 一些常见命令
    linux入门 配置网络
    面试逻辑题 5L和3L的杯子 8L的水 倒出4L
    Java并发编程的艺术读后总结
    URL重写
    常见的四种排名函数的用法----转载
  • 原文地址:https://www.cnblogs.com/YESheng/p/2935787.html
Copyright © 2011-2022 走看看