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的长度。
补充:Jsp教程,J2EE/EJB/服务器