Servlet会话技术简介

基本概念:

指的是用户打开一个浏览器,访问一个网站,只要不关闭该浏览器,不管用户点击多少个超链接,访问多少个资源,直到用户关闭浏览器,整个过程称为一次会话。

为什么需要cookie技术(会话技术)

1.如何实现保存用户上次登录时间?

2.如何实现显示用户浏览历史?

3.如何把登录的用户名密码保存到电脑,下次登录不需要从新输入?

Cookie(小甜饼)技术!

Cookie是客户端技术,服务器把每个用户的数据以cookie形式给用户各自的浏览器。当用户使用浏览器再去访问服务器中的web资源,就会带着各自的数据去。这样web资源处理就是用户各自的数据了。

Cookie原理示意图

Servlet会话技术简介_第1张图片

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;iCookie cookie=cookies[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“,路径找到

30

这种修改是对所有的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。


你可能感兴趣的:(Servlet会话技术简介)