关于cookies和session的一点记录

    大家都知道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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值