代码之家  ›  专栏  ›  技术社区  ›  Brandon Yarbrough

新行和Spring的simplerlhandermapping

  •  1
  • Brandon Yarbrough  · 技术社区  · 16 年前

    我最近把我的应用程序从Spring2.5.6升级到了Spring3.0.0。几天后,我发现我的一些页面已经不能正常工作了。问题似乎是我的UserContent.do控制器。

    SimpleUrlHandlerMapping 映射。看起来是这样的:

    <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="mappings">
     <props>
      <prop key="/*/UserContent.do">UserContentController</prop>
     </props>
    </property>
    </bean>
    

    问题是我允许用户在中间目录中生成内容,因此这些URL可以是任何内容:

    http://mysite.com/foo/UserContent.do
    http://mysite.com/bob/UserContent.do
    http://mysite.com/foo%0a%0dbob/UserContent.do
    

    第三种情况才是问题所在。由于某些原因,“\r\n”似乎不再与Spring3中的*匹配。它似乎在Spring2.5.6中仍然有效。

    1 回复  |  直到 16 年前
        1
  •  3
  •   axtavt    16 年前

    /**/UserContent.do (它也将匹配 / 在中间)。

    / 的: /{foo:(?s:.*)}/UserContent.do (使用 {name:regexp} 语法和用法 (?s:X) Pattern.DOTALL 标志打开)