实现会话追踪的4种方式

本文介绍了HTTP协议的无状态特性及其对会话追踪的需求。文章详细讲解了四种常见的会话跟踪方法:Session、Cookie、隐藏表单域和URL重写,并探讨了各自的特点和应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.会话:

由于HTTP是无状态的,因此无法纪录客户的一连串的动作,必须有一种机制使服务器能认得客户,这就引入了"会话"概念!
客户端打开与服务器的连接发出请求到服务器响应客户端请求的全过程。

2.会话跟踪

浏览器与服务器之间的通信是通过HTTP协议进行通信的,而HTTP协议是”无状态”的协议,它不能保存客户的信息,即一次响应完成之后连接就断开了,下一次的请求需要重新连接,这样就需要判断是否是同一个用户,所以才应会话跟踪技术来实现这种要求。

3.会话跟踪常用的方法:

Ⅰ.Session
Session技术把用户的数据写到用户独占的session中。就是说每一个用户都有一个不同的session,各个用户之间是不能共享的,是每个用户所独享的。
Session对象由服务器创建,开发人员可以调用request对象的getSession方法得到session对象。

HttpSession session=request.getSession();
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
         response.setCharacterEncoding("utf-8");   
         PrintWriter out = response.getWriter();  
         request.getSession();  //创建session  
         //调用response的encodeURL方法
         String saveCode = response.encodeURL("code");   
         out.println("    ");    
      }  

Ⅱ.Cookie
Cookie是把用户的数据写给用户的浏览器。进而进行用户的识别。对于客户端的每次请求,服务器都会将Cookie发送到客户端,在客户端可以进行保存,以便下次使用。另外,cookie存储的数据量有限,不同的浏览器有不同的存储大小,但一般不超过4KB。因此使用cookie只能存储一些小量的数据。

//在服务器端获取Cookie
    Cookie[]cookies = request.getCookies();
 
for (int i = 0; cookies != null && i < cookies.length;i++) {
        Cookiecookie = cookies[i];
 
        System.put.println(cookie.getName());
  }
//在服务器端设置Cookie
   String username = "admin";
   Cookie usernameCookie = new Cookie("username", username);
   response.addCookie(usernameCookie);

Ⅲ.隐藏表单域
将会话ID添加到HTML表单元素中提交到服务器,此表单元素并不在客户端显示.
代码格式:<input type="hidden" name="..." value="...">

如:<input type="hidden " name="can" value=<%=1%>>

▪这里的隐藏域名为can,值为<%=1%>,即值为1;
▪递交表单<form action=xxx.asp>到新页面xxx.asp;
▪在xxx.asp页中,使用request.write request.form("can"),则在页面中显示的值就是1.

Ⅳ.URL重写
URL(统一资源定位符)是Web上特定页面的地址,URL重写的技术就是在URL结尾添加一个附加数据以标识该会话,把会话ID通过URL的信息传递过去,以便在服务器端进行识别不同的用户。
其优点在于:
提高你的网站的安全性;
提高搜索引擎阅读和索引网站的能力

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值