request,session,application,三者比较
作用域::
request < session < application
各自对应的接口
request对象 对应的接口 :
javax.servlet.ServletRequest 其子接口:javax.servlet.http.HttpServletRequest
session对象 对应的接口 :javax.servlet.http.HttpSession
application对象 对应的接口 :javax.servlet.ServletContext
三者共有的方法:
setAttribute(String name , Object o ) ,getAttribute(String name) ;
简单分析三者:
1.request
调用上面两个方法,只在一次请求上(转发不算请求,因为转发是服务器端的行为)生效,当把信息返回给客户端,该对象就被摧毁
2.session
概念:
是服务器端的行为
用于跟踪客户的状态,当用户去访问某个站点时,服务器端就会为客户产生一个sessionID,以cookie的方式返回给客户端,当客户的去访问该站点的其他服务时,就会带者当前sessionID一起发出请求,已识别是哪个用户,一个用户就好比一个session对象,互不干扰。
运行机制:
Session失效原因:
1) Session 过期
2) 服务器端调用了invalidate(),让其失效
3) 现在的网页大部分是支持session的,要让该页面失去session功效,
则在页面加上 <%@ page session="false" %> 即可,但一般不会这样做
Session重要方法:
1) getId() --- 获取session的id号,每个id号都是不同的
2) isNew() --- 判断该session是不是新的
3) invalidate() --- 让当前session失效,释放资源
4) setMaxInactiveInterval(int interval) --- 设置session处于不活动的时间间隔(以秒为单位),
超过该时间,session失效,
如果设置的是负数,或0,则不限制session不活动的时间间隔,默认一般是30分钟
5) setAttribute(String name , Object o ) ,getAttribute(String name)
运用场景:
1) 登录
2) 购物车
3.application
调用上面两个方法,一个服务器就一个application对象,用户共享一个application,当服务器停止的时候application 被摧毁,(用于网站访问次数)