servlet session机制

一,应用背景

在web开发中,存在很多页面跳转,为了在页面之间传递数据,避免重复输入,出现了session机制。

例如,你在购物网站选了一堆物品,过了几个月再次登陆的时候,发现购物车里还有这些东西。这里就是使用了session或者cookie机制。

二,session技术简介

HTTP 是一种"无状态"协议,这意味着每次客户端检索网页时,客户端打开一个单独的连接到 Web 服务器,服务器会自动不保留之前客户端请求的任何记录。但是仍然有方式来维持 Web 客户端和 Web 服务器之间的 session 会话:session机制。

在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下)。因此,在需要保存用户数据时,服务器程序可以把用户数据写到用户浏览器独占的session中,当用户使用浏览器访问其它程序时,其它程序可以从用户的session中取出该用户的数据,为用户服务。

三,session实现原理

当服务器创建完session对象后,会把session对象的id以cookie形式返回给客户端。这样,当用户保持当前浏览器的情况下再去访问服务器时,会把session的id传给服务器,服务器根据session的id来为用户提供相应的服务。

——Session和Cookie的主要区别在于:

Cookie是把用户的数据写给用户的浏览器。(在前端)

Session技术把用户的数据写到用户独占的session中(在后端)。

四,应用例子

例如:登陆例子,在登陆servlet里,创建session,保存用户名密码。

 //创建session对象
HttpSession session = request.getSession();
//把用户数据保存在session域对象中
session.setAttribute("loginName", userName);
//跳转到用户主页
response.sendRedirect(request.getContextPath()+"/IndexServlet");

在其他servlet里,取出用户名密码

//得到session对象
HttpSession session = request.getSession(false);
if(session==null){
    //没有登录成功,跳转到登录页面
    response.sendRedirect(request.getContextPath()+"/login.html");
    return;
}

//取出会话数据
String loginName = (String)session.getAttribute("loginName");
if(loginName==null){
    //没有登录成功,跳转到登录页面
    response.sendRedirect(request.getContextPath()+"/login.html");
    return;
}

 

五,session有效时间

设置session有效时间,总共有三种方法,

方式一:在web.xml中设置session-config。

方式二:在Tomcat的/conf/web.xml中。

方式三:在Servlet中设置。

其中,第三种方法优先级最高。

有效时间的默认单位为秒,设置为-1表示永不过期。

//以秒为单位
session.setMaxInactiveInterval(30*60);

 

 

参考资料:

Servlet Session 跟踪

https://www.runoob.com/servlet/servlet-session-tracking.html

java中session的用法与原理

https://blog.csdn.net/samniwu/article/details/90417160

JavaWeb Session的用法

https://blog.csdn.net/zx2015216856/article/details/81040497

 

重点,登陆参考例子:

【JavaWeb】利用Session保存用户登录信息

https://blog.csdn.net/liu_wenbin/article/details/59531184

关于session的失效时间和过期

https://blog.csdn.net/fanbingfu/article/details/78318855

Javaweb设置session过期时间

https://www.cnblogs.com/ibigboy/p/11544243.html#_label0_0

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值