java web中的cookie和session会话
会话技术
从打开一个浏览器访问某个站点,到关闭这个浏览器的整个过程,成为一次会话。
会话技术就是记录这次会话客户端的状态与数据的。
会话技术分为:Cookie和Session:
Cookie:数据存储在本地客户端,减少服务器端的存储压力,安全性不好 ,客户端可以清楚cookie。
Session:数据存储在服务端,安全性较好,增加服务器的压力。
Cookie技术:
Cookie技术是降用户的数据存储到客户端的技术,重要的知识点包括以下两点:
1.服务器端怎么将一个Cookie发送都客户端
1)创建Cookie:
Cookie cookie=new cookie(String cookieName,Strint cookieValue);
Cookie cookie=new cookie("username","zhangsan");
注意:Cookie中不能保存中文。
2)设置Cookie持久化时间:
Cookie默认为会话级别,Cookie存储在浏览器内存当中,即关闭浏览器则销毁Cookie,设置Cookie持久化时间可以把 Cookie存储到当前浏览器所在的磁盘文件当中。
cookie.setMaxAge(int seconds); // seconds为秒。
cookie.setMaxAge(10*60);//设置为10分钟,过期删除Cookie信息。
3)设置携带路径
cookie携带路径默认为当前项目,即访问当前项目下的所有资源都会携带cookie信息。
cookie.setPath(String path);
cookie.setPath(/web);//访问web工程目录下的所有资源都会携带cookie信息。
cookie.setPath(/web/loginServlet);//只有在访问longinServlet时才会携带cookie信息。
4)向客户端发送cookie:
response.addCookie(Cookie cookie);
5)删除客户端的cookie:
要删除一个cookie信息很简单,将他的持久化时间设置为0即可,需要注意的是cookie的名字要相同,携带路径也要相同, 如果没有设置携带路径则为当前目录,删除客户端的cookie就是两个字:“覆盖”。删除cookie信息的代码如下:
Cookie cookie=new cookie("username","");//名字一定要与要删除的cookie一致
cookie.setMaxAge(0);//将其cookie的持久化时间设置为0
cookie.setPath(/web);//设置携带路径
response.addCookie(cookie);//发送给客户端覆盖要删除的cookie
2.服务端怎样接受客户端携带的Cookie.
1)通过request获得所有的cookie:
Cookie[] cookies=request.getCookies();
2)通过遍历Cookie数组来获得对应的cookie
for(Cookie coo : cookies){
if(cookie.getName().equals(cookieName))
cookieVlaue=cookie.getValue();//通过获得cookie的名字,名字相同则将值拿出来即可
}
Session技术
Session是将数据存储在服务端,会为每一个客户端都创建一块内存空间存储客户数据,客户端需要一个唯一的ID去服务器中寻找对应的内存空间。Session是基于Cookie实现,Session需要借助Cookie存储客户的唯一标识JSESSIONID。
这里要注意,cookie一定要设置一个合适的持久化时间,否则浏览器一关闭则会为再次打开的浏览器分配一个JSESSIONID,也就是会在为客户分配一个地址空间
1.获得Session对象
HttpSession session=request.getSession();
此方法会获得专属当前会话的Session对象,如果服务器端没有该会话的Session对象, 那么会为其创建一个新Session返回(实质上就是根据JSESSIONID判断该客户端是否已经在服务器上已经存在session)
2.怎么向session中存取数据(session是一个对象域)
session.setAttribute(String name,object obj);//向session域中放数据
session.getAttribute(String name);//根据name从session域中获取数据
session.removeAttribute(String name);//根据name将数据从session域中移除
session.invalidate();//此方法用于销毁session域
session生命周期为:
创建:第一次指定request.getSession();
销毁:服务器关闭(非正常销毁),session失效/过期(默认30分钟),手动session.invalidate()方法销毁。
session默认作用范围在一次会话当中
上一篇: Activiti常用类简介
下一篇: linux软连接
推荐阅读
-
java web中的cookie和session会话
-
Java Web(三) 会话机制,Cookie和Session详解
-
Yii2.0中的COOKIE和SESSION用法
-
AXIS2中OMElement和Java对象之间的转换 分享 博客分类: web service JavaSOAPWebBeanXML
-
详解PHP中cookie和session的区别及cookie和session用法小结
-
java web学习_浅谈request对象中get和post的差异
-
thinkphp中session和cookie无效的解决方法
-
thinkphp中session和cookie无效的解决方法
-
PHP中Session和Cookie是如何操作的,sessioncookie_PHP教程
-
PHP中Session会话的使用和分析