前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >会话及管理技术

会话及管理技术

作者头像
别团等shy哥发育
发布2023-02-27 10:12:13
4280
发布2023-02-27 10:12:13
举报
文章被收录于专栏:全栈开发那些事

第五章 会话以及会话管理技术

1.会话概述: 什么是会话:从打开浏览器,到访问网页,到最终关闭浏览器,整个过程就是一次会话。 会话的特点:包含多个请求,一次完整的会话对应一个用户。 会话管理技术: 第一种:cookie技术:客户端技术 第二种:session技术:服务端技术. 购物车案例:买完商品后加入购物车,买的商品存到什么对象比较合适? 1.使用request域对象保存商品信息: 结论:使用request不可以保存商品信息,因为每次发送请求都会产生一个 新的请求对象。

(插图)
(插图)

2.使用ServletContext域对象保存商品信息

(插图)
(插图)

结论:使用ServletContext对象保存商品信息可以,但是不合理。 所以在开发中,保存会话过程中产生的数据采用会话管理技术,也就是使用cookie 和session技术来保存会话过程中产生的数据。 2.Cookie对象 1.1什么是cookie Cookie是一种会话管理技术,它是用来保存会话过程中产生的数据,然后在浏览器 和服务器交互时,会使用cookie里面保存的数据。

(插图:cookie执行原理)
(插图:cookie执行原理)

注意:首次访问服务器时,浏览器不会携带cookie到服务端。 1.2 Cookie常用的API [1].得到cookie对象:Cookie cookie=new Cookie(String key,String value); [2].回写(响应)cookie到浏览器端:response.addCookie(cookie); [3].得到cookie的名称:String key=cookie.getName(); 得到cookie的值:String value=cookie.getvalue(); [4].给cookie设置生命时长:setMaxAge(int sr); 比如:cookie.setMaxAge(606024*7);//说明cookie能保存7天 cookie分类: (1)会话级别cookie:浏览器关闭,cookie对象就销毁了. (2)持久化cookie:通过setMaxAge()这个方法来设置 [5].给cookie设置路径,设置域名. setPath(路径的url),setDomain(域名); 比如:域名就是服务器名称,比如说:www.baidu.com [6].得到cookie:Cookie[] cookies=request.getCookies(); 1.3.显示用户的上次访问时间

(插图:通过cookie实现记录用户的上次访问时间)
(插图:通过cookie实现记录用户的上次访问时间)

实现步骤: [1]判断是否是首次访问: 如果cookie里面有时间,说明就不是第一次访问。 [2].如果是第一次访问,创建cookie,保存时间,把这个cookie回写到浏览器端。 [3].如果不是第一次访问,把时间回写到浏览器,记住当前时间,把时间保存 到cookie里面。 例如:

代码语言:javascript
复制
   //处理响应中文的乱码问题
		response.setContentType("text/html;charset=utf-8");
	    //1.获取所有cookie
		Cookie[] cookies=request.getCookies();
	    //2.遍历cookie数组
		String lastTime=null;
		for(int i=0;cookies!=null&&i<cookies.length;i++) {
			//3.获取cookie的名称
			String name=cookies[i].getName();
			if("lastAccess".equals(name)) {
				//获取cookie的时间
			 lastTime=cookies[i].getValue();
			}
		}
		//3.判段是否是首次访问,如果cookie里有时间,就不是第一次访问,否则就是第一次访问
		if(lastTime==null) {
			//第一次访问:
			response.getWriter().print("first");
		}else {//说明不是第一次访问
		//把上次访问的时间回写到浏览器
			response.getWriter().print("lasttime:"+lastTime);
		}
		//第三次,第四次---
		Date date = new Date();
                SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd-hh:mm:ss");
                String currentTime = format.format(date);
                Cookie cookie = new Cookie("lastAccess",currentTime);
                cookie.setMaxAge(60*60*10);
                response.addCookie(cookie);

如果你遇到报错:

代码语言:javascript
复制
java.lang.IllegalArgumentException: An invalid character [32] was present in the Cookie value

访问这里:https://blog.csdn.net/qq_43753724/article/details/105336755 3.Session对象 3.1 什么是session session是一种会话管理技术,session用来保存会话过程中的数据,保存的数据存 储到服务器端。

session原理:基于cookie实现的,更确切地说时基于会话级别地cookie实现的。 3.2 HttpSession API session常用方法: [1].得到session的id(JESSIONID对应的值):getId(); [2].设置session的生命时长:setmaxInactiveInterval(int interval); [3].销毁session:invalidate(); [4]得到session:HttpSession session=getSession(); session域对象:作用范围一次完整的会话(包含多个请求). [1].存值:setAttribute(String key,Object obj); [2].取值:Object obj=getAttribute(String key); [3]移除值:removeAttribute(String key); 总结:域对象: request域对象 session域对象 servletContext域对象,作用范围依次变大 request域对象:作用范围一次请求,通常和转发操作配合使用 session域对象:作用范围一次会话,通常和重定向操作配合使用 servletContext域对象:作用范围整个项目,和重定向、转发操作都可以配合使用。 3.3 Session超时管理 session对象是有生命时长,它的默认存活时间是30分钟 具体配置找tomcat软件下/conf/web.xml文件 30 立即销毁session对象:invalidate();

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-04-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第五章 会话以及会话管理技术
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档