因为服务器需要在每次请求中获取sessionId,然后找到客户端的session对象。那么如果客户端浏览器关闭了Cookie呢?那么session是不是就会不存在了呢?
其实还有一种方法让服务器收到的每个请求中都带有sessioinId,那就是URL重写!在每个页面中的每个链接和表单中都添加名为jSessionId的参数,值为当前sessionid。当用户点击链接或提交表单时也服务器可以通过获取jSessionId这个参数来得到客户端的sessionId,找到sessoin对象。
可
//它会查看cookie是否存在,如果不存在,在制定的url后添加sessionid参数
//如果cookie存在,它就不会在url后添加任何东西
<% out.println(response.encodeURL("/Demo11/AServlet"))%>
以使用response.encodeURL()对每个请求的URL处理,这个方法会自动追加jsessionid参数,使用response.encodeURL()更加“智能”,它会判断客户端浏览器是否禁用了Cookie,如果禁用了,那么这个方法在URL后面追加jsessionid,否则不会追加。
简单来说:就是把所有页面中的路径,都使用response.encodeURL("..."):处理一下。