关于域属性空间范围对比及servlet和cookie和session

关于域属性空间范围对比

ServletContext,即application。置入其中的与属性是整个应用范围的,可以完成跨会话共享数据。
HttpSession,置入其中的域属性是会话范围的,可以完成跨请求共享数据。
HttpServletRequest,置入其中的域属性是请求范围的,可以完成跨Servlet共享数据。但这些Servlet必须在同一请求中。
对于这三个域属性空间对象的使用原则是,在可以保证功能需求的前提下,优先使用小范围的。这样不仅可以节省服务器内存,还可以保证数据的安全性。
在这里插入图片描述

关于cookie

什么是cookie?
cookie的本质是一小段的文本信息,格式的字典,key=value。cookie的名称不是固定的,是由开发自定义的。
2.cookie的分类
会话cookie:保存在内存,当浏览器的会话关闭之后自动消失。
持久cookie:保存在硬盘,只有当失效时间到期了才会自动消失。
在这里插入图片描述

1.cookie的设置

在JavaEE中的javax.servlet.http包中存在一个类cookie,就是用于完成会话跟踪的Cookie。其只有一个带参构造器:
public Cookie(String name,String value)而HttpServletResponse中有一个方法,可以将Cookie添加到响应头中。
public void addCookie(Cookie cookie)注意:一个response中可以添加多个Cookie的键值对。
(1)默认绑定路径
访问路径由资源路径与资源名称构成。默认情况下,Cookie与访问路径中的资源路径绑定。只要用户发出带有绑定资源路径的请求,则在请求头部,将自动会携带与之绑定的Cookie数据。
在这里插入图片描述
上图,通常从request中获取请求中所带来的用户信息,再创建cookie将数据将用户信息向响应中添加cookie信息,这样只要用户发出带有绑定资源路径的请求,则在请求头部,将自动会携带与之绑定的Cookie数据。【注意这里的资源路径是同一个资源路径,仅仅只是路径一致就可】。
在这里插入图片描述
这个图中设置了指定Cookie绑定的路径,这样设置的cookie则通过请求访问指定的资源路径来获取该cookie。
在这里插入图片描述上图为设置cookie的有效期。
平时各位在做项目时多半时候都会用到客户端的cookie,可大家知道cookie是存储在哪里吗?
首先cookie失效分为2种:
1:设置过期时间失效(只要设置了过期时间cookie就会存储在硬盘里面)
2:当会话结束时失效,即关闭浏览器窗口(如果没有设置Expires,cookie就会存储在内存里面)
手动删除cookie失效。

2.获取cookie

在这里插入图片描述
上图请求访问指定的资源路径来获取该cookie。这里的【注意这里的资源路径是同一个资源路径,仅仅只是路径下资源一致就可】。
通过request来获取cookie的信息。

总结:cookie是服务器生成,保存在客户端的一个数据存储的载体。

关于HttpSession

1.session的介绍及使用

session,即会话。是web开发中的一种会话状态跟踪技术。当然,前面所述的Cookie也是一种会话跟踪技术。不同的是Cookie是将会话状态保存在客户端,而Session则是将会话状态保存在了服务器端。
那么,到底什么是“会话”?当用户打开浏览器,从发出第一次请求开始,一直到最终关闭浏览器,就表示一次会话的完成。
Session并不是JavaWeb开发所持有的,而是整个web开发中所使用的技术。在JavaWeb开发中,Session是以javax.servlet.http.HttpSession的接口对象的形式出现的。
在这里插入图片描述
上图中getSession两个方法中都返回HttpSession,空参的是若有session就返回session对象,若没有session则新建一个session。而另外一个布尔参数的getSession则为在获取session的过程中,若有则为session,若没有则根据布尔值决定是否创建session。为true则没有session是创建一个session。
在这里插入图片描述在这里插入图片描述
上图为获取session,并给session加入数据(getSession方法是获取session,若有老的session则使用老的,若没有则新建)
在这里插入图片描述
上图为从other请求中获取session。
下图为访问someServlet之后再次访问otherServlet的访问结果。注意:session是会话级别的,也就是说当用户打开浏览器,从发出第一次请求开始,一直到最终关闭浏览器,就表示一次会话的完成。
在这里插入图片描述

2.session的工作原理

在服务器中系统会为每个会话维护一个Session。不同的会话,对应不同的Session。那么,系统是如何识别各个Session对象的?即是如何做到在同一会话过程中,一直使用的是同一个Session对象呢?
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.session的失效

Web开发中引入的Session超时的概念,Session的失效就是指Session的超时。若某个Session在指定的时间范围内一直未被访问,那么Session将超时,即将失效。
在web.xml中可以通过标签设置Session的超时时间,单位为分钟。默认Session的超时时间为30分钟。需要再次强调的是,这个时间并不是从Session被创建开始计时的生命周期时长,而是从最后一次被访问开始计时,在指定的时长内一直未被访问的时长。
若未到超时时限,也可通过代码提前使Session失效。HttpSession中的方法Invalide(),使得Session失效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值