- 論壇徽章:
- 0
|
TOMCAT不符合J2EE標(biāo)準(zhǔn)。 大家盡量別用。
原帖由 "lamei" 發(fā)表:
到底哪種是正確的呢????
news.do 還是 index.jsp 形式。
下載了你給的例子看了一下,終于明白你的意思了。你的意思是說(shuō),在 .jsp 里調(diào)用 request.getRequestURL(),在 tomcat 里返回的是 *.do,在 WL/WS 里返回的是 *.jsp,而你不知道哪個(gè)正確。
這里有一點(diǎn)要注意的是,不管是 tomcat 還是 WL/WS,在地址欄內(nèi)的地址都是 *.do 的形式,而不是 *.jsp 的形式。
你的截圖里地址欄里面的 /test/processSimple.do,在你的 struts-config.xml 有下面的定義:
- <action path="/processSimple"
- type="examples.simple.ProcessSimpleAction"
- name="simpleForm"
- scope="request"
- input="/jsp/simple/Simple.jsp"
- validate="true">;
- <forward name="success" path="/jsp/simple/SimpleResults.jsp"/>;
- </action>;
復(fù)制代碼
從這個(gè) mapping 可以看出,processSimple.do 應(yīng)該做一個(gè) forward 到 /jsp/simple/SimpleResults.jsp (因?yàn)?action 里面沒(méi)有 redirect 屬性,所以 redirect 屬性默認(rèn)為 false)。在 SimpleResults.jsp 里面,你做了一個(gè) <%=request.getRequestURL()%>;,來(lái)顯示 RequestURL。這里到底應(yīng)該是原始的 RequestURL (*.do) 還是當(dāng)前的 jsp 頁(yè)面的 URL (*.jsp) 呢?看看標(biāo)準(zhǔn)是怎么說(shuō)的吧。下面一段引自 Java" Servlet Specification
Version 2.4,SRV.15.1.3 (P. 242-243):
- public java.lang.StringBuffer getRequestURL()
- 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.
復(fù)制代碼
意思是說(shuō),重建客戶端用來(lái)發(fā)出 request 的 URL。在你的例子里,用戶端發(fā)出的 request URL 是 *.do 的形式,所以 tomcat 的做法是符合標(biāo)準(zhǔn)的,而 WL/WS 則不符合,因?yàn)樗鼈冇玫氖?forward 之后的 URL,而不是客戶端發(fā)出的 URL。至于它們?yōu)槭裁床环蠘?biāo)準(zhǔn),但還是得到了 certification,我想是他們付了巨額的 certification fee 給 Sun 的緣故吧。
Tomcat 對(duì)標(biāo)準(zhǔn)的符合是出了名的,比如說(shuō),用 container managed security 的時(shí)候,cookie 的名稱(chēng)一定是 JSESSIONID。有許多人在 mailing list 里面問(wèn)能不能改變,答案是否定的,因?yàn)檫@個(gè)是標(biāo)準(zhǔn)里規(guī)定的,除非你自己改 tomcat 的代碼。 |
|