而对于web应用程序,是通过http协议来传输数据的,HTTP协议又是无状态的,所以当http请求交毕,客户端与服务端的连接就会断开,由于http协议是无状态的,所以又无法通过连接来追踪会话信息,所以就引入了cookie来弥补这一不足之处。
当用户访问一个网站时,服务器需要记录该用户的身份信息,就可以通过response将用户信息设置在cookie当中,通过客户端浏览器将cookie保存起来,将该浏览器访问服务器里,浏览器会将网址和cookie一同发给服务器,然后服务器来检查用户的身份信息。同时,服务器还有权力修改cookie。
查询某网站的cookie信息很简单,只需要在地址栏里面输入javascript:alert(document.cookie)
cookie具有不可跨域性,浏览器判断的依据是域名。
cookie常用属性中有一个叫做secure,这个属性主要用来设置该cookie是否仅仅被使用在安全协议传输,安全协议有HTTPS,SSL等,在网络上传输前要加密,默认值为false,但cookie内容不会被加密,所以为了保险起见,可以先进行手动加密,然后再通过安全协议传输,如果将secure设为true,那么就只能在安全协议中传输。
第二个很重要的属性maxAge,主要用来设置cookie的有效期。
当它为正数时,浏览器会将该cookie持久化到文件当中。
当它为负数时,是临时cookie,浏览器会将该cookie存入浏览器内存当中。
当它为0时,表示删除,cookie没有专门的删除方法,只有通过setMaxAge(0)来删除cookie,这时会将cookie从浏览器内存中删除。
第三个属性:path,它是用来设置cookie的访问路径的,例如:cookie.setPath("/session/");注意必须要以"/"结尾,设置为“/"时,允许所以路径来使用该cookie,页面只能获取到它属于的Path的cookie,例如/session/test/a.jsp不能获取到路径/session/abc/下面的cookie.
response所提供操作cookie的方法只有一个add(Cookie cookie),如果要修改某个cookie的值,只要使用同名的cookie将其覆盖。如果要删除某个cookie,只需要新建一个同名的cookie,然后将有效期设为0,将原来的cookie覆盖掉就达到了删除的目地。注意:新建的cookie,domain,path,name等都要一样,否则浏览器将认为是两个不同的cookie。
JSESSIONID是Tomcat生成的。
Session也是一种会话跟踪机制,不同的是,session存储在服务端,而cookie存储在客户端,为了提高访问速度,服务器一般会将session放在内存中,所以如果有更多的用户去访问,而没有得到及时清理,就会导致内存溢出,解决方案
1,可以通过setMaxInactiveInterval(long interval)来设置它的过期时间。注意:单位是(s)
2,在web.xml中进行设置。
<!-- timeout单位是分钟 -->
<session-config>
<session-timeout>60</session-timeout>
</session-config>
3,也可以通过Session的invalidate()来使session失效。
虽然说session保存在服务端,对客户端来说是透明的,但是还是需要cookie的支持,因为HTTP协议是无状态的,session无法通过http来判断是否为同一客户,因此服务端要向客户发送一个JSESSIONID来标识这个session,也就是我们所说的sessionid,可以通过HttpSession.getId()来获得。另外,cookie有效期的默认值为-1,所以session关闭浏览器就会失效。
对于移动互联网方向,wap的开发,大部分浏览器都不支持cookie,所以都会采用URL地址重写来跟踪用户会话信息,比如支付宝公司的awid就是一个体现。即然大部分浏览器都不支持,那么可以直接在session中禁用cookie,可以在context.xml文件中这样配置:
<?xml version='1.0' encoding="UTF-8" ?>
<Context path="/session" cookies=”false">
</Context
分享到:
相关推荐
session 和cookie 区别!!
j2ee实验二:学习使用Session和Cookie
session与cookie的区别和联系?
完全不用session和cookie的验证码,样式自己设置,自己设置字符数
一、cookie机制和session机制的区别 ...... 二、会话cookie和持久cookie的区别 ......
flask、session、cookie解加密脚本
测试的过程中,经常会有这样的疑惑,什么是Cookie,什么是Session什么是Token,三者的区别又是什么,又是怎么使用的呢,这个文档跟大家详细介绍下三者的区别与使用
介绍下cookie和session之间是咋交互的。原理是啥
这是一份关于cookie和session的知识文档,有关于cookie是什么,图解,cookie对比session有哪些不好,session是什么图解
Response对象用语输出数据到客户端,包括向浏览器输出数据、重定向浏览器到另一个URL或向浏览器输出Cookie文件。 Request对象主要是让服务器取得客户端浏览器的一些数据,包括从HTML表单用Post或者GET方法传递的参数...
关于session和cookie的详细解释 <br>所有疑问通吃
主要介绍了thinkphp中session和cookie无效的解决方法,涉及针对BOM头的分析与删除方法,具有一定的参考借鉴价值,需要的朋友可以参考下
其次,GlassFish2.x支持的是servlet2.5,而servlet2.5不支持Session Cookie的"HttpOnly"属性。不过使用Filter做一定的处理可以简单的实现HttpOnly属性。GlashFish3.0(支持servlet3.0)默认开启Session Cookie的...
session和cookie的区别,session和cookie的区别
使用python脚本更改或生成cookie
session与cookie相同点和不同点
cookie和session示例,详情请看:https://blog.csdn.net/yuzhiqiang_1993/article/details/81232914
session与cookie
本文详细的描述了java开发中Session和Cookie的区别,更加有利于读者的理解