Tomcat 之 HttpServletRequest之getRequestURL()
由 Tomcat5.0 換到 Tomcat 5.5...
發現到有一些程式不能跑了
最後發現 Tomcat 在處理 HttpServletRequest.getRequestURL() 的做法跟以前不一樣了..
之前 Tomcat 會回傳最剛開始跟 Server 要的網址, 不管後面的 Servlet 如何 forward...
其實若是參考 API 的說明:
Reconstructs the URL the client used to make the request. The returned URL contains a protocol, server name, port number, and server path, but it does not include query string parameters.
看起來並無問題...
不過現在 Tomcat 5.5 並不是這樣處理了...
若 client 要求 /a.do 而, a.do 會 forward 到 b.jsp.
則 b.jsp 若呼叫 HttpServletRequest.getRequestURL(), 將會得到 http://.../b.jsp
而非預期之 http://.../a.do
最後查了 Tomcat 的 Bugzilla 中, 如下: http://issues.apache.org/bugzilla/show_bug.cgi?id=28222
結論是, 現在 Tomcat 5.5 的實作才是正確的~~
找了好久才找到..最後發現..Tomcat 5.5 的 change list 中就有說明到這一點了...
以後應該要多加注意 change list的...
0 Comments:
張貼留言
<< Home