指的是用户打开一个浏览器,访问一个网站,只要不关闭该浏览器,不管用户点击多少个超链接,访问多少个资源,直到用户关闭浏览器,整个过程称为一次会话。
为什么需要cookie技术(会话技术)
1.如何实现保存用户上次登录时间?
2.如何实现显示用户浏览历史?
3.如何把登录的用户名密码保存到电脑,下次登录不需要从新输入?
Cookie(小甜饼)技术!
Cookie是客户端技术,服务器把每个用户的数据以cookie形式给用户各自的浏览器。当用户使用浏览器再去访问服务器中的web资源,就会带着各自的数据去。这样web资源处理就是用户各自的数据了。
Cookie原理示意图
cookie简单创建:
//创建cookie
Cookie cookie = new Cookie("name","caozheng");
//设置cookie生命周期
cookie.setMaxAge(3600); //如果没有设置cookie的生命周期,默认浏览器关闭就会失效
//把cookie信息回写给浏览器
response.addCookie(cookie);
cookie读取
//读取所有cookie信息,再选中你要的cookie getcookies
Cookie cookies[] = request.getCookies();
System.out.println(cookies.length);
//遍历cookie
for(int i=0;i
out.println(cookie.getName()+cookie.getValue());
}
cooKie小结:
1.cookie在服务器端创建
2.cookie保存在浏览器端
3.cookie的生命周期,setMaxAge(time);
4.如果重名了,则后一个替换前一个;
5.将一个Cookie添加到客户端 response.addCookie(c);
6.读取(从客户端到服务器),request.getCookies();
7.一个web应用可以保存多个cookie,一般20个,
8.cookie是以明文的方式存放,所以安全性较低,我们可以通过加密后保存。
md5算法:
生命周期说明:
1.cookie默认生命周期是会话级别的。
2.可以通过setMaxAge()设置生命周期
setMaxAge(正数),即多少秒后cookie失效。
setMaxAge(0),删除cookie,但是这里一定要返回给cookie,response.addCookie(cookie)。
特别说明:如果该web应用只有一个cookie,则删除该cookie后,在浏览器的临时文件夹下,没有该cookie文件,如果有多个cookie,则删除一个cookie后,文件还在,只是没有了该cookie。
setMaxAge(负数):就等于没有保存,相当于默认会话级别的。
//处理中文乱码
存放:
String tv=java.net.URLEncoder.encode("电视","utf-8");
System.out.println("输出:"+tv);
取出:
String t = java.net.URLDecoder.decode(tv,"utf-8");
System.out.println("输入:"+t);
cookie取出:
String val = java.net.URLDecoder.decode(cookie.getValue(), "utf-8");
Session技术简介:
当用户打开浏览器,访问某个网站时操作session时,服务器就会在服务器的内存为该浏览器分一个session对象,该session对象被这个浏览器独占。这个session也可以看做一个容器,session对象默认存在时间为30min,也可以修改。
test:
servlet1
//访问session【当发现没有session时候,就会自动创建session】
HttpSession session = request.getSession();
//给该session放入属性
session.setAttribute("name", "宋江");
session.setAttribute("age", "45");
out.println("success");
//session的生命周期,默认30min
servlet2
//获取session
HttpSession session = request.getSession();
//获取
String name = (String) session.getAttribute("name");
String age = (String) session.getAttribute("age");
System.out.println("名字:"+name+ "年龄:"+age);
session小结:
1.session是存在服务器的内存中
2.一个用户浏览器,独享一个session域对象
3.session中的属性的默认生命周期是30min,可以通过web.xml来修改
在myeclipse中找到web.xml
第一步:打开菜单栏的windows,之后选择preference;
第二步:选择”myeclipse“,之后找到”server“;
第三步:选择”Integrated sandbox“,之后选择”Myeclipse tomcat 6.0“,路径找到
这种修改是对所有的session生命周期进行修改!
也可以把上面的一句话直接放到项目的web.xml中,生命周期可以用分钟,不可以使用秒。
4.session中可以存放多个属性
5.session中可以存放对象
6.如果session.setAttribute(“name”,value),如果名字重复,则会替换该属性
7.我们也可以使用函数,让session失效,invalidate(),该方法通常用于安全退出。该方法是让session中所有属性都失效。
8,如果希望某个session属性失效,可以使用removeAttribute(java.lang.String name)
cookie和session的生命周期区别:
session的周期是发呆时间,如果我们设置session是10s,是指的,在10s内没有访问过session,即失效,如果在10s内,使用了session,时间则从新计时。如果重启了,Tomcat,或者reload web应用,或者关机了,session会失效。
cookie则不同,cookie的生命周期,指的是累计时间,不管用户是否访问过该cookie。