【前言】
知识是积累出来的。
【过程】
1.会话技术简介
会话技术是帮助服务器记住客户端状态。从打开一个浏览器访问一个站点,到关闭这个浏览器的整个过程,称为一次会话。会话技术就是记录这次会话中客户端的状态和数据的。
2.Cookie技术
数据存储在客户端本地,减少服务器端的压力,安全性不好,客户端可以清除cookie。
1)服务器端向客户端发送一个Cookie 创建cookie对象
Cookie cookie=new Cookie(“name”,“zhangsan”);
//为cookie设置持久化时间---- cookie信息在硬盘上保存的时间
cookie.setMaxAge(60*10);//10分钟
//为cookie设置携带的路径
cookie.setPath("/");//访问服务器下所有的资源都携带这个cookie
注意.如果不设置携带路径,那么该cookie信息会在访问该cookie的web资源所在的路径都携带cookie信息
例:
cookie.setPath("/WEB16");
代表访问WEB16应用中的任何资源都携带cookie
cookie.setPath("/WEB16/cookiesServlet");
代表访问WEB16中的cookieServlet时才携带cookie信息
2)将cookie中存储的信息发送到客户端--请求头
response.addCookie(cookie);
//设置Cookie在客户端的持久化时间:
Cookie.setMaxAge(int seconds); ---时间秒
注意:如果不设置持久化时间,cookie会存储在浏览器的内存中,浏览器关闭cookie信息销毁(会话级别的cookie),如果设置持久化时间,cookie信息会被持久化到浏览器的磁盘文件里。
3)删除客户端的cookie:如果想删除客户端的已经存储的cookie信息,那么就使用同名同路径的持久化时间为0的cookie进行覆盖即可
//删除客户端保存name=zhangsan的cookie信息
Cookie cookie=new Cookie("name","");
//将path设置成要与删除cookie的path一致
Cookie.setPath("/WEB16");
//设置时间是0
Cookie.setMaxAge(0);
3.Session技术
1)获得本客户端的session对象
//创建属于该客户端(会话)的私有的session区域
/*
request.getSession()方法内部会判断该客户端是否在服务器端已经存在session,如果该客户端在此服务器不存在session 那么就会创建一个新的session对象,如果该客户端在此服务器已经存在session,获得已经存在的该session返回
*/
HttpSession session =request.getSession();
String id=session.getId(); //该session对象的编号id
response.getWriter().write("JSESSIONID:":id);
2)向session中存取数据//从session中获得存储的数据
HttpSession session=request.getSession();
String attribute=(String)session.getAttribute("name");
response.getWriter().write(attribute);
3)session对象的生命周期
创建:第一次执行request.getSession()时创建
销毁:(1)服务器(非正常)关闭时
(2)session过期/失效(默认30分钟)
(3)手动销毁session session.invalidate();
4.Cookie技术实现显示用户上次访问时间代码
//获得当前时间
Date date =new Date()
SimpleDateFormat format =new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String currentTime=fromat.format(date);
//1.创建cookie记录当前最新的访问时间
Cookie cookie =new Cookie("lastAccessTime",currentTime);
cookie .setMaxAge(60*10);
response.addCookie(cookie);
//2.获得客户端携带cookie -----lastAccessTime
String lastAccessTime=null;
Cookie[]cookies=request.getCookies();
if(cookies!=null){
for(Cookies coo:cookies){
if ("lastAccessTime".equals(coo.getName())){
lastAccessTime=coo.getValue();
}
}
}
response.setContenttype("text/html;charset=UTF-8");
if(lastAccessTime==null){
response.getWriter().write("您是第一次访问");
}
else{
response.getWriter().write("您上次的访问的时间是:"+lastAccessTime);
}
【总结】
知识是总结出来的,多总结,多读书。