Session、cookie、application详解

  • WEB三大概念,session、cookie、application
    • session:
      • 是什么?session是一种服务端技术,可以存储用户状态,当客户端访问服务器时,服务器保存seesion从而记录用户信息。
      • 为什么用?信息保存在服务器,比cookie保存在客户端要更加安全。
      • 怎么用?session对应HttpSession类,每个来访者对应一个seesion对象,session对象是在客户端第一次访问时创建的,里面存储的是键值对,可以通过getAttribute(String key)和setAttribute(String key,Object value) 来获取客户信息或设置客户信息。Servlet中通过request.getSession()获取该客户端session。
      • 使用场景:常用来做用户的登陆。
      • 生命周期:session在用户第一次访问服务器时创建,注意:只有访问jsp和servlet才会创建session,访问静态资源,如html和img是不会创建session的。如果尚未生成Session,也可以使用request.getSession(true)强制生成 Session。session生成后,每次访问服务器都会更新session时间,不论是否读写,都认为session活跃了。
      • 有效期:session存在服务器,为了提高读取速度,常存在内存中,所以session值不适合过复杂,不然大量客户访问时会出错。同样大量用户访问session会导致内存占用过多,所以需要把长时间不活跃的session从内存删除。这个时间就是session的有效期,Session的超时时间为maxInactiveInterval属性,可以通过对应的getMaxInactiveInterval()获取,通过setMaxInactiveInterval(long interval)修改Session的超时时间,也可以在web.xml中修改。另外,通过调用Session的invalidate()方法可以使Session失效。 session的默认过期时间是20,可修改的最大时间是1440,可以在全局应用程序类中的void Session_Start(object sender, EventArgs e) 事件中用session.timeout设置过期时间。
      • session对浏览器的要求:Http是无状态协议,服务器需要通过cookie来标识是否为同一用户。服务器向客户端浏览器发送值为sessionId的名为JESSIONID的cookie,当浏览器关闭时cookie失效,那么session也会失效,一台电脑的两个浏览器会生成两个不同的seesion。
      • URL地址重写:如果浏览器禁用cookie,或者使用手机浏览器时没有cookie。那么可以通过URL地址重写的方式解决这个问题。原理是将用户SessionId的信息写道URL地址中,使用HttpServletResponse类提供了encodeURL(String url)实现URL地址重写,如<a href="<%= response.encodeURL(“index.jsp?c=1&wd=Java”) %>"> 。对于wep程序,手机浏览器通常不支持cookie,所以都会采用重写URL地址的方式来跟踪用户会话。
    • application:
      • 是什么? 用户共享的应用级别,在服务器端。
      • 生命周期:当服务器关闭时application才会死亡。
      • 做什么?用来保存所有用户的公共信息。
    • cookie:
      • 是什么?是服务器发送给浏览器的名为JESSIONID,值为sessionid的一个数据,sessionid唯一对应浏览器。
      • 生命周期:当浏览器关闭时,cookie销毁
      • 做什么?客户端第一次访问服务器时,服务器发送一个消息为浏览器创建cookie,之后客户端继续发送请求时,服务器会先检查客户端的cookie值,如果有就从cookie中拿到sessionid,然后从服务器中拿到这个id对应的session,然后就可以获取session中保存的用户信息。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值