4.10 会话跟踪

  由于HTTP协议是⽆状态的,服务端并不会记录每⼀个客户端的状态,因此,如果想要实现服务器能记录客户端的状态的话,那么就需要会话跟踪技术


 

4.1.1 cookie

cookie是客服端浏览器内部的一个文本文件,专门用于记录服务器发送过来的一些文本信息,那么再每次请求的时候,客服端会都把这个cookie信息带回来给相应的服务器,那么服务器就可以获取cookie的信息,达到会话跟跟踪的目的。使用cookie的机制是基于客服端浏览器来维护与服务端的状态跟踪。
示例代码:

4.1.1 cookie
cookie是客户端浏览器内部的⼀个⽂本⽂件,专⻔⽤于记录服务器发送过来的⼀些⽂本信息,那么再每次请求的时候,客户端会都把这个cookie信息带回给相应的服务器,那么服务器就可以获取cookie的信息,达到会话
跟踪的⽬的。使⽤cookie的机制是基于客户端浏览器来维护与服务端的状态跟踪。


  示例代码: 


设置cookie 


public class SetCookieServlet extends
HttpServlet{
protected void
service(HttpServletRequest request,
HttpServletResponse response) throws
ServletException, IOException {
//
创建⼀个Cookie的实例
Cookie cookie = new
Cookie("userId","10001");
//
cookie对象设置到响应对象中
response.addCookie(cookie);
System.out.println("
成功设置
cookie");
}
}


获取cookie

public class GetCookieServlet extends
HttpServlet{
@Override
protected void
service(HttpServletRequest request,
HttpServletResponse repsonse) throws
ServletException, IOException {
//cookie
是通过request对象来得到的
//从请求中可以获取多个cookie对象
Cookie[] cookies =
request.getCookies();
for (Cookie cookie : cookies) {
//
判断cookie,只获取nameuserId
cookie对象
if("userId".equals(cookie.getName())) {
System.out.println(cookie.getValue());
}
}
}
}


cookie保存中⽂ 


在保存cookie的时候如果需要保存中⽂,那么中⽂信息需要经过编码后才可以写⼊cookie 

示例代码:

编码使⽤URLEncoder

String str = URLEncoder.encode("张三",
"utf-8");
Cookie cookie = new Cookie("userName",
str);



解码使⽤URLDecoder

String str =
URLDecoder.decode(cookie.getValue(), "utf-
8"
);
System.out.println(str);


cookie的⽣命周期:


默认
cookie只会保存在浏览器进程的内存中,并不会写⼊cookie⽂件,如果关闭了浏览器,那么浏览器的进程也就消失了,那么对应的内存就会释放空间,因此
cookie也就销毁。如果想将cookie写⼊⽂件,那么就必须设置cookie的⽣命时⻓,⼀旦设置了⽣命时⻓,那么就表示这个cookie会在⽂件中保留多⻓的时间,到了这
个时间之后,浏览器就会⾃动销毁这个cookie


设置cookie存活时间:


//设置为0表示⽴即删除cookie
cookie.setMaxAge(0);
//
设置为正数表示cookiecookie⽂件的存活时间,
单位:秒
cookie.setMaxAge(5);
//
设置为-1表示cookie只保留在浏览器器的进程中,
关闭浏览器之后会销毁
cookie
cookie.setMaxAge(-1);
 

 4.2.2 Session
Session是基于服务端来保存⽤户的信息,这个是和cookie的最⼤区别。不同的客户端在请求服务器的时候,服务器会为每⼀个客户端创建⼀个Session对象并保存在服务器端, Session对象是每个客户端所独有
的,相互之间不能访问。服务器为了区别不同的
Session属于哪⼀个客户端,因此Session对象也有⼀个唯⼀标识,叫做SessionID。需要注意的是这个SessionID是以cookie的机制保存在客户端浏览器。每次请求的时候,浏览器都会把这个SessionID带回服务端,服务端根据这个SessionID就可以找到对应的Session对象。
 


示例代码:

public class SessionServlet extends
HttpServlet{
@Override
protected void
service(HttpServletRequest request,
HttpServletResponse response) throws
ServletException, IOException {
//HttpSession
对象是在第⼀次调⽤
request getSession() ⽅法时才会创建
// 注意: getSession() 的⽅法会先判断之
前是否为客户端创建了
session 实例,
// 如果创建了,则使⽤之前创建好的
Session 对象,没有则创建⼀个新的 Session
HttpSession session =
request.getSession();
//
创建 HttpSession 的同时,会创建⼀个唯
⼀的标识
SessionID
//
这个 sessionId 会保存在浏览器的 cookie
中,每次请求会带回这个 id 找到相应的 session 对象
String sessionId = session.getId();
System.out.println(sessionId);
}
}







  
 






Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值