2012-03-21 30 views
1

這可能是一個明顯的問題。但目前爲止我們無法弄清楚。Spring MVC - 瀏覽器中的URL顯示和編碼支持

在我的Spring應用,我做一個GET請求到以下網址

http://www.example.com/firstpage

這個請求轉到前端控制器,我有如下的請求映射:

@RequestMapping(value = "/firstpage") 
public String handlerMethod(HttpServletRequest request, HttpSession session) 
     throws CustomException { 
     ... 
     return "secondpage"; 
} 

這個「第二頁」對應於secondpage.jsp並且其內容被正確顯示。 但問題是瀏覽器的URL仍然顯示

http://www.example.com/firstpage

這究竟是爲什麼?有關如何使瀏覽器URL更改的任何建議? Spring還有對編碼URL的默認支持嗎?

回答

3

Spring MVC的美景之一是視圖與控制器完全分離。所以你的控制器映射到URL路徑「/ firstpage」,作爲響應可以呈現任何視圖。它可能是JSP,JSON,PDF,任何類型的視圖。您的視圖解析器配置決定使用哪個視圖。

對於你的情況,你返回的是「secondpage」,它只是告訴spring根據你的視圖解析器配置尋找名爲secondpage的視圖,它可能在secondpage.jsp或類似的東西的WEB-INF中查找。這仍然只是一個觀點。

如果您希望做其他事情,您可以返回「redirect:secondpage」,它會告訴瀏覽器實際重定向到「/ secondpage」,我相信這會改變地址欄中的網址,但它會也想去一個映射到「/ secondpage」的控制器,或者需要一個沒有控制器映射的視圖。

+0

謝謝。我嘗試了它,並添加「重定向」的工作。但問題是1.由於使用瀏覽器重定向導致帶寬使用,2.它作爲「GET」請求發送到URL。有沒有解決方法? – Raghav 2012-03-21 17:41:55

+0

我不明白這些顧慮。重定向非常小,您可以按字節計數。你的原始請求是一個GET ...那麼爲什麼關注重定向是一個GET?如果你傳遞的是一個巨大的模型,那麼你可以在spring 3.1 http://static.springsource.org/spring/docs/3.1.0.RC1/spring-framework-reference/html/mvc中查看flash範圍或重定向屬性。 html#mvc-ann-redirect-attributes – digitaljoel 2012-03-21 19:16:07

+0

是的。你說得對。我會自己去解決這個問題。謝謝 – Raghav 2012-03-21 20:47:56