簡體   English   中英

換行和Spring的SimpleUrlHandlerMapping

[英]Newlines and Spring's SimpleUrlHandlerMapping

我最近將我的應用程序從Spring 2.5.6升級到了Spring 3.0.0。 幾天后,我注意到我的某些頁面不再起作用。 問題似乎是我的UserContent.do控制器。

使用SimpleUrlHandlerMapping映射來映射UserContent.do。 看起來像這樣:

<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

問題是第三種情況。 由於某種原因,似乎在春季3中“ \\ r \\ n”不再與*匹配。似乎在春季2.5.6中仍然可以使用。

我計划不再允許用戶在該位置輸入換行符。 首先是一個疏忽。 但是,出於SEO的原因,我希望這些URL繼續工作。 在Spring 3中,是否可以通過某種方式映射帶有URL編碼換行符的URL?

看來,最簡單的解決方法是使用/ /**/UserContent.do / /**/UserContent.do (它也將與/匹配)。

編輯:

更優雅的方法是,不匹配// {name:regexp} foo (?s:X) {name:regexp} / /{foo:(?s:.*)}/UserContent.do (使用{name:regexp}語法使用自定義regexp聲明路徑變量,並使用(?s:X)打開Pattern.DOTALL標志)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM