1. 为什么要使用url重写?
先从session的原理讲起,为什么我们能够获得session中的东西呢?如果没有禁用cookie的话,那么session创建之后,会将session id的值通过response的方式传给客户端,并且保存在cookie中。当你发出请求的页面的时候,通过http协议将session id传给服务器,这个时候服务器就知道session有咩有被创建了。
总的来说: session的会话级别是通过cookie中的session id实现的。
当客户端把cookie禁用了,那怎么办呢?!这个时候就需要使用URL重写技术了。
2. url重写的表现形式有:
表现形式1为 :
http://...../xxx;jsessionid= ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764
表现形式2为:
http://...../xxx?jsessionid=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764
他们没有区别的。;jsessionid是自动带上的。
3. java代码:
response.encodeURL(“logoutServlet”); 用于对超链接和action的表单提交进行重写。
response.encodeRedirectURL("logoutServlet"); 用于对response.sendRedirect()的方法进行重写。
说明; 重写了之后,它会自动判断客户端是否禁用了cookie,如果禁用了,他就会将session id自动加到url上面。如果没有禁用,那么它就不会带上这个session id。