Session_Cookie学习

一、会话技术

1、会话技术的存在意义

 客户端访问服务器资源时,因为http请求是无状态的,服务端无法区分是哪一客户端的请求,所以需要会话技术识别客户端状态,帮助服务端记住客户端状态。

2、会话技术

会话:打开浏览器进想网站资源访问开始, 一直到关闭浏览器,整个过程称为一次会话。

会话技术就是记录整个会话状态和数据的技术。

会话技术分为:session 和 cookie

Session:session是将状态数据存储在服务端,安全性相对较好,但是访问量过大会造成服务端压力过大。

cookie:cookie是将状态数据存储客户端,安全性较差,但是可以减少服务端压力,客户端可以清除Cookie。

二、Cookie技术

cookie技术是在客户端存储一次会话的状态数据,cookie携带与http协议请求头,可以在客户端进行清除,

1、服务端发送cookie

1.1、cookie 的创建

Cookie Cookie = new Cookie(String CookieName, String CookieValue);

注意:Cookie不能为中文,也不可以是Object类型。

cookie:在服务端创建,

形式:键值对

1.2、设置cookie的作用路经

Cookie创建后,如果不设置路径, 默认作用于当前请求资源的所在路径都携带cookie,如:资源访问路径为:/App_web/servlet/sendCookie, 那么,在路径 IP:prot/App_web/servlet/路径下都会携带该cookie。

设置cookie作用路径:

cookie.setPath("/App_web/servlet");    //只有访问/App_web/servlet下的资源才携带cookie。

cookie.setPath("/App_web");                //只有访问/App_web下的资源才携带cookie。

cookie.setPath("/");                               //访问/下的资源才携带cookie。

1.3、设置cookie的生存时间

cookie创建后, 默认生存时间是一次会话有效,(也就是,打开客户端进行资源访问开始,到关闭客户端结束),但是有些时候因为业务需求,需要进行cookie持久化到客户端, 这个时候,需要使用设置生存时间来进行持久化cookie。

设置cookie生存时间:

cookie.setMaxAge(60*60*24*7);//设置时间的单位是秒;

1.4、向客户端发送cookie

如何将cookie发送到客户端:response.addCookie(cookie);

2、获得客户端发送的cookie

客户端访问服务端资源时,可能因为业务需求携带cookie,这时服务端就需要进行cookie的获取,

Cookie[] cookies = request.getCookies();

for(Cookie cookie : cookies){

    cookie.getName();

    cookie.getValue();

}    

三、Session技术

Session技术就是将会话状态数据存储在服务端的技术,Sessinon在用户第一次访问服务器时创建,需要注意只有访问JSP、Servlet等程序时才会创建Session,只访问HTML、IMAGE等静态资源并不会创建Session,可调用request.getSession(true)强制生成Session。服务端在内存中开辟一块内存存储session的数据,用JSESSIONID唯一标识这块内存,然后返回JSESSIONID给客户端, 然后客户端每次访问服务端资源时只要携带这个id,就可以找到这次会话存储的数据。

1、获得Session对象

HttpSession session = request.getSession();

该方法会获得专属当前会话的Session,如果当前Session不存在,则该方法会创建一个,并将创建的session返回。

实质上是从客户端获取JESSIONID是否存在来判断服务端是否存在本次会话的Session内存空间。

2、向Session中存数据(Session也是一个域对象)

session.setAttribute(String name, Object obj);//将name对应的obj设置到session域中

session.getAttribute(String name);//获得session域中对应name的值

session.removeAttribute(String name);//删除session域数据值

3、Session生命周期

创建:Sessinon在用户第一次访问服务器时创建。(注意:只有访问JSP、Servlet等程序时才会创建Session,只访问HTML、IMAGE等静态资源并不会创建Session,但是可以调用request.getSession(),强制创建。)

销毁:(1)、服务器关闭时,服务器关闭会销毁内存,所以创建的session域已经销毁。

          (2)、tomcat服务器默认session过期时间是30分钟。(默认30分钟,这30分钟是从客户端从不操作与服务端连接开始算)。

             可在web.xml中进行配置过期时间

               <session-config>

                        <session-timeout>30</session-timeout>

                </session-config>

            

作用范围:默认在一次会话中,一次会话中公用一个session资源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值