会话技术cookie

cookie的原理图


cookie的小结

① cookie 是在服务端创建

② cookie 是保存在浏览器这端

③ cookie 的生命周期可以通过

cookie.setMaxAge(2000);

☞ 如果不设置setMaxAge则该cookie的生命周期当浏览器关闭时,就消亡.

④ cookie 可以被多个浏览器共享(session的区别)

⑤ 怎么理解

我们可以把cookie 想成一张表

① 一个web应用可以保存多个cookie,但保存在同一个cookie文本在客户端浏览器下

② cookie存放的时候是以明文方式存放,因此安全较低.,我们可以通过加密后保存.


 cookie的细节

① 一个浏览器最多放入 300cookie,一个web站点,最多 20cookie,而且一个cookie大小限制子4k

② cookie生命周期的再说明:

1. cookie默认生命周期是会话级别

2. 通过setMaxAge() 可以设置生命周期

setMaxAge(正数) , 即多少秒后该cookie失效

setMaxAge(0) ,删除该cookie

setMaxAge(负数), 相当于该cookie生命周期是会话级别.

 

案例

//先得到该cookie

Cookie cookies[]=request.getCookies();

for(Cookie cookie: cookies){

if(cookie.getName().equals("id")){

System.out.println("id");

//删除

cookie.setMaxAge(0);

response.addCookie(cookie);//一定带上这句话,否则不能删除

}

}

特别说明: 如果该web应用只有一个cookie ,则删除该cookie后,在浏览器的临时文件夹下没有该cookie文件,如果该web应用有多个cookie,则删除一个cookie后,文件还在,只是该cookie没有

① cookie存放中文,怎么处理

存放:

String val=java.net.URLEncoder.encode("顺平","utf-8");

Cookie cookie=new Cookie("name",val);

取出:

String val=java.net.URLDecoder.decode(cookie.getValue(), "utf-8");

out.println("name ="+val);


会话技术是Web开发中用于跟踪用户状态的重要手段,其中cookie和session是两种常见的会话技术。它们的主要区别在于数据的存储位置和处理方式。 ### Cookie Cookie是一种由服务器发送给客户端(通常是浏览器)的数据片段,客户端会将这些数据存储在本地,并在后续的请求中将其发送回服务器。 1. **存储位置**:客户端(浏览器)。 2. **生命周期**:可以设置过期时间,如果没有设置,则在浏览器关闭时失效。 3. **安全性**:数据存储在客户端,存在被篡改的风险。可以设置HttpOnly和Secure属性来增强安全性。 4. **容量限制**:每个域名下的cookie数量和大小有限制(通常不超过4KB)。 ### Session Session是一种服务器端的技术,用于在服务器上存储用户的状态信息。服务器会为每个用户创建一个唯一的会话ID,并通过cookie或URL重写将该ID发送给客户端。 1. **存储位置**:服务器端。 2. **生命周期**:默认情况下,session在浏览器关闭时失效,但可以通过设置超时时间来延长。 3. **安全性**:数据存储在服务器端,相对更安全。 4. **容量限制**:服务器端的存储容量通常较大,但受限于服务器配置。 ### 应用场景 - **Cookie**:用于存储一些不敏感的信息,如用户的偏好设置、登录状态等。 - **Session**:用于存储敏感信息,如用户的登录凭证、购物车内容等。 ### 示例 ```javascript // 设置cookie document.cookie = "username=John Doe; expires=Thu, 18 Dec 2023 12:00:00 UTC; path=/"; // 获取cookie function getCookie(name) { let value = "; " + document.cookie; let parts = value.split("; " + name + "="); if (parts.length === 2) return parts.pop().split(";").shift(); } // 使用session // 假设使用Node.js和Express框架 const express = require('express'); const session = require('express-session'); const app = express(); app.use(session({ secret: 'your-secret-key', resave: false, saveUninitialized: true })); app.get('/login', (req, res) => { req.session.user = { name: 'John Doe' }; res.send('Logged in'); }); app.get('/dashboard', (req, res) => { if (req.session.user) { res.send('Welcome, ' + req.session.user.name); } else { res.send('Please login'); } }); app.listen(3000, () => { console.log('Server is running on port 3000'); }); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值