会话技术

会话技术

从打开一个浏览器访问某个站点,到关闭这个浏览器的整个过程,成为一次会话。会 话技术就是记录这次会话中客户端态的状与数据的。

因为Http协议是无状态的,也就是说每个客户访问服务器端资源时,服务器并 不知道该客户端是谁,所以需要会话技术识别客户端的状态。会话技术是帮助服务器 记住客户端状态(区分客户端)

会话技术分为Cookie和Session:

其中Cookie数据存储在客户端本地,减少服务器端的存储的压力,安全性不好,客户端 可以清除cookie

服务器端向客户端发送一个Cookie

1.创建Cookie

Cookie cookie=new Cookie(键,值);

不能存中文,以Set-Cookie响应头的形式发送给客户端

2.设置持久化时间

cookie.setMaxAge(秒数);

如果不设置持久化时间,cookie会存储在浏览器的内存中,浏览器关闭cookie信息销毁,如果设置持久化时间,cookie信息会被持久化到浏览器的磁盘文件里,过了设置的持久化时间cookie才会被销毁

3.设置携带路径

cookie.setPath(路径);

如果不设置携带路径,那么该cookie信息会在访问产生该cookie的 web资源所在的路径都携带cookie信息

4.向客户端发送cookie

response.addCookie(创建的cookie);

5.删除cookie

不能直接删除,只能用同名同路径的cookie设置持久化时间为0进行覆盖

服务器接收客户端携带的Cookie

1.获取Cookie

Cookie[] cookies=request.getCookies();

2.遍历并根据名称选择所需要的

for(Cookie cookie : cookies){

  if(cookie.getName().equal(cookieName)){

    String cookieValue = cookie.getValue();

  }

}

Session:将数据存储到服务器端,安全性相对好,增加服务器的压力

获取

HttpSession session = request.getSession();

如果服务器中没有该session就创建,如果有就获取

存取数据

Session为域对象,直接使用域对象的通用方法,

session.setAttribute();

session.getAttribute();

session.removeAttribute();、

生命周期

创建:第一次执行request.getSession()时创建

销毁:

1.服务器关闭时

2.session过期/失效(默认30分钟)

计时是从客户端没有任何操作后开始,如果中途出现操作,操作结束后再重新开始计时

时间可以在web.xml文件的

<session-config>

        <session-timeout>30</session-timeout>

</session-config>

标签中设置

强行手动销毁

session.invalidate();

 

posted @ 2020-11-19 15:06  ldldl  阅读(158)  评论(0)    收藏  举报