1.会话技术:从打开一个浏览器访问某个站点,到关闭这个浏览器的过程,成为一次会话。
2.cookie:数据存储在客户端本地,减少服务器的压力,安全性不好,可以随时清除缓存cookie;session:数据存储在服务器端,安全性较好,但是能增加服务器压力
3.服务器向客户端发送一个cookie,分为
1).创建cookie Cookie cookie = new Cookie("UserName","PassWord");
cookie会以响应头的格式发送给客户端。***cookie中不能存储中文。
2).设置cookie在客户端的持久化时间,cookie.SetMaxAge("秒");//如果不设 置持久化时间,cookie会存储在浏览器的内存 中,浏览器关闭,cookie销毁 ,如果设置持久化时间,cookie信息会被持久化到浏览器的磁盘文件中。
3).设置Cookie的携带路径:如果不携带路径,那么该cookie信息会在该web工程 下所有的路径中存在。cookie.setPath("/");
4).向客户端发送cookie;response.setCookie(Cookie cookie);
5).删除cookie ,设置为0即可;cookie.SetMaxAge("0");
4.服务器怎么接受客户端携带的cookie
1).cookie信息是以请求头的方式发送给服务器端的,通过request获得所有的 cookie,Cookie[] cookies = request.getCookies();
2).遍历cookie数组,通过cookie的名称获得我们想要的cookie。
for(Cookie cookie:cookies){
if(cookie.getName.equals(cookieName))
String cookieValue = cookie.getValue();
}
========================session==============================
1.获取session对象,HttpSession session = request.getSession();,获取专属当
前会话的session对象,如果服务器没有该会话的session,会新建一个session对
象,如果已经存在这个session对象,直接返回(使用JSESSIONID判断该服务器是
否已经存在session,注,JSESSIONID是cookie中存储客户的唯一标志。)
2.获取session对象
request.setAttribute();
request.getAttribute();
request.removeAttribute();
3.创建:第一次执行request.getSession()时创建
销毁:
1)服务器(非正常)关闭时
2)session过期/失效(默认30分钟)
问题:时间的起算点 从何时开始计算30分钟?
从不操作服务器端的资源开始计时
可以在工程的web.xml中进行配置
<session-config>
<session-timeout>30</session-timeout>
</session-config>
3)手动销毁session
session.invalidate();