[英]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.