大家都知道cookies是保存在客户端,session保存在服务器端,session需要手都创建的,服务器端是以sessionId来区分session的
对于j2ee来讲,创建session如下
//表示如果有session就直接返回,否则创建一个新的session,
//getSession方法 有个boolean参数,false,直接session,true存在创建
HttpSession session=request.getSession();
在服务器创建完session后,会把sessionId写到以cookies方式响应的头部,下次客户端再访问的把cookies中sessioId放到请求头部,告诉服务器我之前访问,但是当浏览器禁止cookies 后会产生什么样的结果呢,由于客户端无法保存cookies,请求中无法夹带sessionId,导致服务器无法识别,那怎么办呢,解决的办法是用response.encodeURL(url)方法重写url,产生这样如下url:
”http://localhost:8080/sessionReadTest;jsessionid=E02DDEFF3AF7A9F185A6AF8C6A0382D9“,这样一来服务器可以得到sessionId
关于response.encodeURL(url)方法,如果禁用了cookies的话生成带sessionId的url,否则在直接返回原来的url,
跟URLDecoder.decode不一样,URLDecoder.decode是url字符编码的
如果禁用了cookies,并没有url重写的话,如下会产生bug
HttpSession session=request.getSession();//会自动session,session不会为空session.getAttribute( "test" )的值会等于null;//比如一些是否登录判断