关于cookies和session的一点记录

来源:互联网 发布:怎么用八爪鱼爬数据 编辑:程序博客网 时间:2024/05/19 02:39

    大家都知道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;//比如一些是否登录判断





0 0
原创粉丝点击