会话及其会话技术(三)
用session对象实现网购车
浏览器与服务器建立一次请求与对话的过程。
相关知识点
- sesssionID :类似于诊疗卡【session基于cookie来实现的】;
- sessionID产生过程:,
- 浏览器访问Web服务器,Servlet容器会创建一个Session对象和ID属性【Session对象=病历档案;ID=医疗卡】
- 客户端后续访问服务器,只传递标识号SessionID,服务器就能定位客户端,并用对应的Session对象服务。
- 每个session都有唯一一个sessionID
- 获取Session对象: getSession()【可运用HttpSession API 的方法】
- session 保存用户名应用:
1.注册登录后,记住用户状态并多页面显示:Session【会话:有多种请求方式】与cookie实现。
2.
`public void setAttribute(String name,Object);
用法:session.setAttribute("userName","张三丰");
键值方式存储数据
`public Object getAttribute(String name);
用法:String userName=(String)session.getAttribute("userName");
名称获取对应值
**注:getAttribute返回的是Object类型,需强制转换为String,才能输出显示
String userName=(String)session.getAttribute("userName");
3.会话清除与过期【Session存储在服务器端,过多会影响性能】
清理机制:
1.程序主动清楚session;
- 设置会话失败:session.invalidate();
- 移除会话的一个属性
`public void removeAttribute(String name);
用法:session.removeAttribute("userName");
2.服务器主动清除上时间无再次请求的session;
- 设置会话过期时间:
public void setMaxInactiveInterval(int interval);
#单位:秒
- 在Web.xml文件中设置失效时间:
<session-config>
<session-timeout>30</session-timeout>
</session-config>
#单位:分组 对服务器所有session都设置相同时间失效
实现购物车步骤
- 利用Java been 封装图书信息类【好处:提高代码重复利用率,封装共性;且Java been要与一个无参构造方法】
-
属性私有化private【类中有一个属性name】
-
方法公开化 public,提供公共的setter(属性修改器),getter(属性访问器)【至少包含getName() / setName()中一个】
-
2.创建数据库模拟类【保存所有图书数据库】
-
LinkedHashMap:保持顺序,进入读出顺序一致【双向链表】,且键允许一个空,值允许多个空。
-
HashMap:不一致,且键值不允许为空
运用book类的book方法创建对象,用put方法存放数据【往键内放值=键为值的索引】
3.创建Servlet程序: -
ListBookServlet:所有可购买
通过遍历可以点击购买时根据所提供的newURL【读取采购列表】,通过sessionID获取图书
点击购买时,跳转到PurchaseServlet
String url="/ “”;【重定向】
【通过web.xml,找到PurchaseServlet(/PurchaseServlet),找到内部映射名,servlet-class:是servlet-name的类的地址】 -
CartServlet:已经购买
用pur -
PurchaseServlet:保存购买信息到Session对象