request,session,application,三者比较

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 被摧毁,(用于网站访问次数)

 

----------------------------------------------

转自 http://blog.csdn.net/hzc543806053/article/details/7416007








以上是关于request,session,application,三者比较的主要内容,如果未能解决你的问题,请参考以下文章

服务端新开多线程使用HibernateSession 杜绝No session

python中requests.session的妙用

有时 request.session.session_key 是 None

Laravel 的 session() 和 request()->session() 的真正区别是啥?

Swift相当于Python的requests.session()?

修改requests库session默认连接数