会话技术学习

一 、会话技术

1.从浏览器打开,访问服务器开始,一直到访问服务器结束,浏览器关闭为止,这期间浏览器和服 务器之间产生的多次请求和响应加在一起,就称之为浏览器和服务器之间的一次会话。

2.Cookie:客户端的会话技术

Session:服务器端的会话技术

3.作用:在多次请求和响应之间可以实现数据的共享

二.Cookie

入门案例:

        ServletDemo1:
			//方式一(原始写法):
			response.setHeader("set-cookie", "name=jerry");
			
			//方式二:
			//创建cookie对象
			Cookie cookie = new Cookie("name", "tom");
			
			//添加cookie,设置cookie的响应信息
			response.addCookie(cookie);
		
		ServletDemo2:
			//获取cookie
			Cookie[] cookies = request.getCookies();
			System.out.println(cookies);
			for (Cookie cookie : cookies) {
				String name = cookie.getName();
				String value = cookie.getValue();
				System.out.println(name + "..." + value);
			}

有关于Cookie的问题

1.可以携带多个cookie,如果多个cookie的名称相同的话,会被覆盖

2.cookie的value值可不可以存储中文
            如果使用的是创建Cookie对象的方式,value值为中文是不会出现乱码问题的
            如果使用的是原始方式设置cookie,value值为中文就会出现中文乱码

             解决方案:对中文进行URL编码和URL解码

3.cookie的生命周期
            cookie默认的生命周期:当浏览器关闭,缓存释放,cookie消失

4.延长cookie生命时长

    设置cookie对象中的setMaxAge()方法,单位是秒,如果指定了秒值,那cookie就不会存储在浏      览器的缓存中,而是存储到了本地磁盘,但是时间一到,本地磁盘中的数据也会消失。
                                         cookie.setMaxAge(60);
                
                如果秒值设置为负数,就是cookie的默认生命周期
                如果秒值设置为0,响应回浏览器之后,cookie立即消失

5.cookie的携带范围
         默认情况下,如果我们没有设置cookie的携带范围,那携带范围就是当前的整个项目,访问           任何资源都会带有cookie请求头

6.自己设置去控制携带范围

设置cookie对象中的setPath()方法

				//设置携带范围
				//cookie.setPath("/day59");//默认设置
				//cookie.setPath("/day59/servletDemo9");//访问具体的某一个资源才会携带 
                                                          cookie
				//cookie.setPath("/");//只要是当前服务器所部署的项目,访问里面所有的资源 
                                        都会携带cookie

三.Session

1.session是一个域对象:


        session域对象的范围是一次会话的范围
        
        setAttribute(String key, Object value)
        getAttribute(String key)
        removeAttribute(String key)

2.session的入门案例

		ServletDemo01:
			//获取session对象
			HttpSession session = request.getSession();
			
			//向session域中存储数据
			session.setAttribute("name", "tom");
		
		ServletDemo02:
			//获取session对象
			HttpSession session = request.getSession();
			
			//从session域中获取数据
			Object value = session.getAttribute("name");
			System.out.println(value);

3.关于session的问题

1.浏览器关闭,服务器没有关闭,
            因为浏览器关闭,缓存消失,缓存中的JSESSIONID=id也就随之消失了,
            当打开浏览器再次访问服务器中的资源的时候,是不会携带cookie的,
            就获取不到session对象,只能重新创建新的session对象,响应的时候会携带set-cookie。

2.服务器关闭,浏览器不关闭

                服务器的非正常关闭:
                session对象就会从内存中消失
                
                再一次开启开启服务器,通过浏览器访问服务器中的资源,虽然会携带cookie的请求                      头,但是由于服务器
                已经没有了session对象,会重新创建一个新的session对象,然后回设置响应头set-                        cookie:......
            
                服务器的正常关闭:
                session对象就会从内存中消失
                
                但是在消失之前就会进行钝化(就是将session对象存储到了本地磁盘),
                然后再一次开启服务器,会进行活化(激活,就是将sessio对象从本地磁盘还原到服务器                  的内存中),
                通过浏览器访问服务器中的资源,会携带cookie的请求头,然后服务器就匹配到了,就                  能够获取到数据

3.session在什么情况下会销毁?

.服务器关闭
            2.session自杀
                session.invalidate();
            3.设置session的存活时长
                默认存活时长,30分钟
                <session-config>
                    <session-timeout>30</session-timeout>
                </session-config>    
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值