Cookie与Session


typora-copy-images-to: img

Cookie与Session

Cookie:客户端会话跟踪技术
Seesion:服务端会话跟踪技术

在这里插入图片描述

Cookie

创建Cookie对象
Cookie cookie=new Cookie(String name,String value)
响应Cookie给浏览器
resp.addCookie(cookie);
服务器端获取Cookie
Cookie[] cookies=resquest对象.getCookies()//因为获取所有Cookie是数组所以需要遍历用getValue();获取cookie的值
Jsp中获取Cookie数据
//推荐同EL表达式
${cookie.username.value}<br/>
在servlet中修改Cookie中的值
//方式一
cookie.setValue("一个新的值")//方式二
cookie=new Cookie("同名","新的值");


//两者最后都需要响应对象返回给浏览器
resp.addCookie(cookie);
设置Cookie存活时间
cookie.setMaxAge("秒数")//大于0则为存活秒数           	硬盘cookie
//小于0则随着浏览器关闭而销毁  	内存cookie
//等于0则立即删除cookie对象
Cookie中文问题
//往Cookie中存中文数据
Cookie cookie=new Cookie("名字",URLEncoder.encode("值","编码类型"))
    
// 从 Cookie 中获取中文数据
Cookie[] cookies = request.getCookies();
for (Cookie cookie : cookies) {
    if("username".equals(cookie.getName())) {
        System.out.println(URLDecoder.decode(cookie.getValue(), "UTF-8"));
    }
}
Cookie的域和路劲(我理解为作用域)
//默认Cookie中的域式创建Cokie的服务器的域名
//一级(主)域名      baidu.com
//多级域名    		news.baidu.com

cookie.setDomain(".baidu.com")
    
    
    
    
//默认为创建 Cookie 的资源的路径。例:/cookie/login 创建 Cookie,则 path 为 /cookie,则访问 /cookie 开头的资源都会携带该 Cookie。
    
cookie.setPath("/")//即可访问服务器上所有资源
    
    
//总结: - 若主域不同,不管 path 如何,都无法带上其他主域的 Cookie。
//		- 若主域相同,且 path 也为 /,则访问该域下的任意资源都会携带该域的 Cookie。

Session

获取Session
//获取 Session 对象可通过使用 HttpServletRequest 的 API:

req.getSession()
//判断是否存在 Session(浏览器是否带了 sessionId),存在则获取,不存在则创建新 Session 对象返回(推荐)

Session数据共享

HttpSession API:
方法作用
setAttribute(String name, Object value)设置属性名和属性值
getAttribute(String name)通过属性名去获取属性值
removeAttribute(String name)从 Session 中移除指定属性名的属性值
invalidate()移除整个 Session 对象,删除所有的属性和属性值
removeAttribute 和 invalidate 视情况选择,删除部分数据使用 removeAttribute,删除全部数据使用 invalidate。

在这里插入图片描述

局部修改

session.setMaxInactiveInterval(int interval);//设置超时时间为XX秒
Session使用规范
session.setAttribute("XX_IN_SESSION",)

存在的问题

Session 是基于 Cookie 的,sessionId 是存在浏览器上,用户可选择不接受 Cookie 或者禁用 Cookie,此时 Session 失效。

解决方案

//设置在URL后拼接的jsessionid  用;来间隔
//自动检测用户是否开启Cookie接收,若开启则不拼接
rsponse.encodeURL("/session/list")
    
//Jsp中重写
    <%String url=response.encodeURL("/session/list")%>
    
    <a href="<%=url%>">收件箱</a>
    
//EL重写
    ${pageContext.response.encodeURL("/session.list")}

ing url=response.encodeURL("/session/list")%>

<a href="<%=url%>">收件箱</a>

//EL重写
${pageContext.response.encodeURL("/session.list")}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值