明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

Weblogic6.0部署與設(shè)置WEB應(yīng)用程序(6)

[摘要]使用URL改寫在某些情形下,瀏覽器也許不接受cookies,這樣就不能用cookies來進行會話跟蹤。URL改寫就是這種情形下的一個解決辦法,當(dāng)Weblogic服務(wù)器檢測到瀏覽器不接受cookies時,就會自動替換URL。URL改寫就會將編碼的會話ID寫進servlet返回給瀏覽器的Web頁面的超...
使用URL改寫
在某些情形下,瀏覽器也許不接受cookies,這樣就不能用cookies來進行會話跟蹤。URL改寫就是這種情形下的一個解決辦法,當(dāng)Weblogic服務(wù)器檢測到瀏覽器不接受cookies時,就會自動替換URL。URL改寫就會將編碼的會話ID寫進servlet返回給瀏覽器的Web頁面的超級鏈接里。當(dāng)用戶隨后點擊這些鏈接時,Weblogic服務(wù)器從URL地址中取出ID,并在servlet調(diào)用getSession()方法時找到合適的HttpSession。
要在Weblogic服務(wù)器中使用URL改寫,在Weblogic特有部署描述符weblogic.xml中的<session-descriptor>下,將屬性URLRewritingEnabled設(shè)為true(這個屬性的默認值是true)。
URL改寫的編碼原則

要支持URL改寫,這里有一些代碼應(yīng)當(dāng)如何處理URLs的一般原則。
·避免在輸出流中直接寫URL,如:
out.println("<a href=\"/myshop/catalog.jsp\">catalog</a>");
而是使用HttpServletResponse.encodeURL()方法,如:
out.println("<a href=\""
 + response.encodeURL("myshop/catalog.jsp")
 + "\">catalog</a>");
調(diào)用encodeURL()方法決定URL是否需要改寫,如要就用包含會話ID的URL改寫。會話ID被添加到URL中,并以分號開頭。
·除了Weblogic服務(wù)器響應(yīng)返回的URLs,也要編碼重定向的URLs。如
if (session.isNew())
response.sendRedirect (response.encodeRedirectUrl(welcomeURL));
Weblogic服務(wù)器在一個新會話開始時就會使用URL改寫,即使瀏覽器不接受cookies,因為服務(wù)器不能斷定瀏覽器在會話的第一次訪問時是否接受cookies。
·通過檢查HttpServletRequest.isRequestedSessionIdFromCookie()方法返回的布爾值,servlet能確定是否從cookie按收到給定的會話ID。也許應(yīng)用程序適當(dāng)響應(yīng),或者簡單地依賴Weblogic服務(wù)器的URL改寫。
URL改寫和無線訪問協(xié)議(WAP)
如編寫WAP應(yīng)用程序,由于WAP協(xié)議不支持cookies,就必須使用URL改寫。另外,一些WAP設(shè)備的URL(包括參數(shù))長度有128個字符的限制,這樣就限制了用URL改寫傳輸?shù)臄?shù)據(jù)數(shù)量。要允許參數(shù)使用更多空間,用IDLength屬性指定字節(jié)數(shù),可以限制Weblogic服務(wù)器隨機產(chǎn)生的會話ID的長度。
使用字符集和POST數(shù)據(jù)
You can set the character set that is used when processing data from a form that uses the POST method. To inform the application that processes the form data that a particular character set is in use, you add specific "signal" characters to the URL used to process the form data (specified with the action attribute of the <form> tag) and then map those characters to an encoding in the Web Application deployment descriptor, web.xml. POST data is normally read as ASCII unless specified using the following procedure.
在處理從用POST方法提交的表單數(shù)據(jù)時可設(shè)定使用的字符集。要通知處理表單數(shù)據(jù)的應(yīng)用程序在使用的特定字符集,給處理表單數(shù)據(jù)(在<form>標(biāo)簽的action屬性里指定)的URL添加指定的”信號”字符,然后將那些字符映射到一個WEB應(yīng)用程序部署描述符web.xml的編碼上。POST數(shù)據(jù)數(shù)據(jù)正常以ASCII編碼讀取,除非用以下過程指定編碼。
要用非ASCII字符集處理POST數(shù)據(jù):
1.在WEB應(yīng)用程度部署描述符web.xml中用<context-param>建立一個條目。這個條目應(yīng)在web.xml 文件里的<distributable>元素后,<servlet>元素前。在這個條目中,<param-name>總是包含weblogic.httpd.inputCharset類名,后跟一句點,再后就是信號字符串。<param-value>包含HTTP字符集的名稱。在下例中,字符串/rus/jo*被映射到windows-1251字符集:
<context-param>
<param-name>weblogic.httpd.inputCharset./rus/jo*</param-name>
<param-value>windows-1251</param-value>
</context-param>
2.在傳遞表單數(shù)據(jù)時使用信號字符串編碼HTML表單。如:
<form action="http://some.host.com/myWebApp/rus/jo/index.html">
...
</form>
將信號字符串放在WEB應(yīng)用程序名稱(這種情況下也叫context路徑-myWebApp-)后面和URL剩余部分的前面。
有關(guān)更多的WEB應(yīng)用程序描述符的信息,參考定義Context參數(shù)。