前言
: 为什么需要 Cookie 和 Session,你必须了解 会话 和 http 协议;
概述
: Session 是将会话中产生的数据保存在了服务器端,是服务器端技术(Session是一个域对象)。
范围
: 当前会话范围
主要功能
: 保存当前会话相关的数据
生命周期
创建:当第一次调用 request.getSession()方法时创建Session;
超时:如果一个Session超时30分钟未被使用,则认为Session超时,销毁session
自杀:当调用session.invalidate()方法时session立即销毁;
意外身亡:当服务器非正常关闭时,随着应用的销毁,session销毁,当服务器正常关闭,则未超时的session会以文件的形式保存在tomcat服务器work目录下,这个过程叫做session的钝化,当服务器再次启动时,钝化着的session还可以恢复过来,这个过程叫做session的活化。
Session的原理
: session 是基于一个 JSESSIOINID的 Cookie 工作的
商品类
//我们在这里进行的是页面内容的编辑//a href 是一个 点击 的内容<html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8"><title>自定义标题</title></head><body><a href="购买类代码路径?prod=名字">名字</a><br/><a href="购买类代码路径?prod=名字">名字</a><br/><a href="购买类代码路径?prod=名字">名字</a><br/><a href="购买列代码路径?prod=名字">名字</a><br/><a href="购买类代码路径?prod=名字">名字</a><br/><a href="支付类路径?">支付</a></body></html>
购买类
//解决乱码 response.setContentTyoe("text/html;charset=utf-8"); //获取参数 //获取参数的方法: //request.getParameter("参数的名字"); String prodName = request.getParameter("prod"); //将商品添加到 session 当中//获取 Session//想想 Session 的生命周期 //创建: 当第一次调用 request.getSession方法时创建 session;HttpSession session = request.getSession();//创建成功后,开始添加session.setAttribute("prod",prodName);//返回给用户//创建一个cookie对象Cookie cookie = new Cookie("JSESSIONID",session.getId());cookie.setMaxAge(60*60);response.addCookie(cookie);response.getWriter().writer("您已经成功添加"+prodName+”商品,请去完成支付“);response.setHeader("refresh","3;url=/商品类路径");
支付类
//处理乱码response.setContentType("text/html;charset=utf-8");//获取session的对象HttpSession session = request.getSession(false);//获取session里面的商品名称String prodName = (String)session.getAttribute("prod");if(session == null || session.getAttribute("prod")==null){//返回提示信息response.getWriter().write("购物车里没有商品,请去添加购物车");}else{//实行支付逻辑response.getWriter().writer(prodName+"支付成功");response.setHeader("refresh","3;url=商品类路径");}