@duyao
2015-05-03T01:37:45.000000Z
字数 2790
阅读 3246
servlet
浏览器访问一个网站,只要不关闭该浏览器,不管该用户点击多少超链接,访问多少资源,直到用户关闭浏览器,整个的这个过程,称为一次会话。
服务器把用户数据写给各自的浏览器,以便下次使用
//创建cookie
Cookie cookie=new Cookie(name, value);
//设置生命周期,以秒为单位
cookie.setMaxAge(3600);
//传送给浏览器
response.addCookie(cookie);
//读取cookie
Cookie [] cookies=request.getCookies();
//遍历cookie
for(int i=0;i<cookies.length;i++){
System.out.println("cookie名字"+cookies[i].getName());
System.out.println("cookie值"+cookies[i].getValue());
}
可以通过cookie.setMaxAge(int)
,单位是秒
+ cookie.setMaxAge(整数x)
x秒后消亡
+ cookie.setMaxAge(0)
删除该cookie,删除后还要回传response.addCookie(cookie);
+ cookie.setMaxAge(负数)
该cookie是会话级别
①如果该web应用只有一个cookie,那么在删除后cookie消失,若有多个cookie,那么该cookie消失,其他cookie还在
②如果不设置生命周期,那么浏览器关闭,cookie就消亡
一列为name,一列为value
如果重名就会替换存在的cookie值
一个浏览器最多放300个cookie,一个web站点最多20个,每个cookie大小最多4kb
当cookie值为中文时,会出现乱码情况
//存放中文乱码情况,因此要编码
String val=java.net.URLEncoder.encode("毒药", "utf-8");
Cookie cookie2=new Cookie("name", val);
//读取中文要解码
String getString=java.net.URLDecoder.decode(cookie2.getValue(),"utf-8" );
//当访问session没有发现时,自动创建session
HttpSession session=request.getSession();
//设置属性
session.setAttribute("name","五一");
//设置生命周期,默认30min
//session.setMaxInactiveInterval(arg0);
//获取session
String nameString=(String) session.getAttribute("name");
//去除某个属性
session.removeAttribute("name");
D:\Program Files\apche\apache-tomcat-6.0.43\conf
找到web.xml
修改session-timeout
,单位是分钟,应用到每一个web应用中
<session-config>
<session-timeout>30</session-timeout>
</session-config
session.setMaxInactiveInterval(60)
session.invalidate()
session.removeAttribute(String arg0)
当浏览器第一次访问服务器时是没有session的,访问后便产生了一个cookie记录了jsessionid返回给浏览器,当浏览器再次访问服务器会带着jsessionid访问,此时就意味着该浏览器创建过session,无需创建。正是由于jsessionid的存在使得服务器能为不同的浏览器提供不同的session,得到jsession1id的方法是session.getId()
原理是java绘图技术
如果session的生命周期是30min,那么session不会随着浏览器的关闭而销毁,,30min后服务器会自动将session销毁
cookie存在客户端的临时文件夹,可由多个浏览器共享
session存在服务器的内存中,一个session域对象为一个用户浏览器使用
cookie是以明文方式存在浏览器中的,安全性较弱,可使用md5加密算法加密
session是存在服务器内存中的,安全性较强
cookie会传递信息给服务器,占用带宽
session的属性不会传给客户端
假设生命周期是20分钟
cookie的生命周期是累积的,从创建的时候就开始计算,20分钟后cookie生命周期结束,cookie无效
session的生命周期是间隔的,从创建时,在开始计时的20分钟内没有访问session,那么session的信息无效,如果在20分钟内,在第19分钟访问session,那么其生命周期重新开始计算
在以下情况session也会失效
invalidate()
session是会占用内存的,因此不要向session存放过多内容