web.xml 配置 servlet-mapping 中 url-pattern前缀删除

最近工程启动时,由于希望能够将静态页面和动态页面相分离,所以在动态请求的参数前面添加了前缀来进行区分已拦截。比如采用前缀 /gzj/*。
配置的内容如下:

  
        DispatcherServlet
        org.springframework.web.servlet.DispatcherServlet
        
            contextConfigLocation
            classpath:conf/applicationContext-servlet.xml
        
        1
    


      DispatcherServlet
      /gzj/*

在启动的时候,发现无法匹配到我们Controller中/gzj/为前缀的uri。经过实验发现是由于在进行匹配的时候,Servlet会将/gzj/的前缀提取出来。所以比如我们希望匹配Controller中的/gzj/index的uri,则请求的路径为/gzj/gzj/index。比较类比nginx的proxypass的以/为结尾的情况。
有相应几个stackoverflow的问题在讨论,可以去看一下:
cant-get-spring-mvc-dispatcher-to-work-properly-when-url-pattern-is-a-path
spring-mvc-url-pattern-syntax

你可能感兴趣的:(web.xml 配置 servlet-mapping 中 url-pattern前缀删除)