- 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中保存的用户信息。
- session:
Session、cookie、application详解
最新推荐文章于 2023-07-30 21:48:14 发布