您的位置:寻梦网首页编程乐园JAVA 天地>Weblogic6.0部署和配置WEB应用程序(6)
Weblogic6.0部署和配置WEB应用程序(6)


    使用URL改写 
在某些情形下,浏览器也许不接受cookies,这样就不能用cookies来进行会话跟踪。URL改写就是这种情形下的一个解决办法,当Weblogic服务器检测到浏览器不接受cookies时,就会自动替换URL。URL改写就会将编码的会话ID写进servlet返回给浏览器的Web页面的超级链接里。当用户随后点击这些链接时,Weblogic服务器从URL地址中取出ID,并在servlet调用getSession()方法时找到合适的HttpSession。 
要在Weblogic服务器中使用URL改写,在Weblogic特有部署描述符weblogic.xml中的<session-descriptor>下,将属性URLRewritingEnabled设为true(这个属性的默认值是true)。 
URL改写的编码原则 

要支持URL改写,这里有一些代码应当如何处理URLs的一般原则。 
·    避免在输出流中直接写URL,如: 
out.println("<a href=\"/myshop/catalog.jsp\">catalog</a>"); 
而是使用HttpServletResponse.encodeURL()方法,如: 
out.println("<a href=\"" 
     + response.encodeURL("myshop/catalog.jsp") 
     +"\">catalog</a>"); 
调用encodeURL()方法决定URL是否需要改写,如要就用包含会话ID的URL改写。会话ID被添加到URL中,并以分号开头。 
·    除了Weblogic服务器响应返回的URLs,也要编码重定向的URLs。如 
if (session.isNew()) 
  response.sendRedirect (response.encodeRedirectUrl(welcomeURL));   
Weblogic服务器在一个新会话开始时就会使用URL改写,即使浏览器不接受cookies,因为服务器不能断定浏览器在会话的第一次访问时是否接受cookies。 
·    通过检查HttpServletRequest.isRequestedSessionIdFromCookie()方法返回的布尔值,servlet能确定是否从cookie按收到给定的会话ID。也许应用程序适当响应,或者简单地依赖Weblogic服务器的URL改写。 
URL改写和无线访问协议(WAP) 
如编写WAP应用程序,由于WAP协议不支持cookies,就必须使用URL改写。另外,一些WAP设备的URL(包括参数)长度有128个字符的限制,这样就限制了用URL改写传输的数据数量。要允许参数使用更多空间,用IDLength属性指定字节数,可以限制Weblogic服务器随机产生的会话ID的长度。 
使用字符集和POST数据 
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方法提交的表单数据时可设定使用的字符集。要通知处理表单数据的应用程序在使用的特定字符集,给处理表单数据(在<form>标签的action属性里指定)的URL添加指定的”信号”字符,然后将那些字符映射到一个WEB应用程序部署描述符web.xml的编码上。POST数据数据正常以ASCII编码读取,除非用以下过程指定编码。 
要用非ASCII字符集处理POST数据: 
1.    在WEB应用程度部署描述符web.xml中用<context-param>建立一个条目。这个条目应在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.    在传递表单数据时使用信号字符串编码HTML表单。如: 
<form action="http://some.host.com/myWebApp/rus/jo/index.html"> 
  ... 
</form> 
将信号字符串放在WEB应用程序名称(这种情况下也叫context路径-myWebApp-)后面和URL剩余部分的前面。 
有关更多的WEB应用程序描述符的信息,参考定义Context参数。
【1】【2】【3】【4】【5】【6】