JavaWeb_3-servlet2

一、 servlet的会话技术

HTTP协议无连接,无状态,无法去保存会话中产生的数据

如记住密码,记住一周两周等

要想保存整个会话过程中产生的数据,利用会话技术来实现Servlet提供的会话技术有cookie和session

1.1 Cookie是客户端的会话技术

Session是服务端的会话技术

//从request对象中获取cookie所有数据
Cookie[] cookies = request.getCookies();
Boolean visited = false;
if(cookies != null){
   for(Cookie s : coolies){
    if(cookie.getName().equals("visited")){
        out.write(欢迎回到。。。)
     	visited = true;
    }
} 
}
if (visited = false){
//创建cookie对象,cookie数据是以键值对(key和value都使用英文,不要使用中文,虽然value可以使用中文)的形式存放在客户端(浏	览器),并且只能保存字符串
out.write(欢迎来到。。。)
Cookie cookie = new Coolie(key,value);
//添加cookie前可以设置cookie的有效时间
cookie.setMaxAge(60**60*24*7)//单位是秒
 //可以添加多个cookie
response.add(cookie);
//下一次请求,就会把cookie数据带过去
}
//如果是要删除一个coolie,将cookie的有效时间设置为0;或者通过浏览器的设置手动清除浏览器数据
cookie.setMaxAge(0);

image-20200805170653734

练习:使用cookie实现用户名和密码的保存

1.登录页面由servlet进行构建(第一次访问时,要用户输入用户名和密码)有个CheckBox记住密码,如果用户选择了记住密码,需要另外一个servlet去实现,就去创建cookie记录用户名和密码;如果没有选就不记住密码

注意:CheckBox勾选返回的是String类型的on,不勾选返回的是null

1.2 session (利用了cookie的技术)

image-20200806112647184

image-20200806113238529

了解session的原理

image-20200806115225041

找到session对象,就能在session里实现数据共享

image-20200806121618622

默认session有效时间是30分钟

getSession(true):没有session会创建

getSesson(false):没有session不会创建

设置最大非活动存活时间

image-20200806160252882

让session中数据不共享,将其中数据移除

image-20200806160614411

image-20200806160725219

禁用cookie时重写url(实则在请求中添加了jsessionid=response.encodingURL)实现session的共享

image-20200807094842916

1.3 作用域

1.request

在一个完整的请求中共享数据,通常指的是就是请求转发时可以共享数据

request.setAttribute()

request.getAttribute()

request.removeAttribute()

2.session

image-20200807100342803

3.application(不同的客户端看到的都是一样的,如论坛帖子的浏览量,每个人都可以看到)

服务器关了就停止了,可以在关闭服务器之前把数据写入文件中

image-20200807101848190

  • 练习:

实现一个在线人数统计

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值