通过Cookie显示上次访问时间:
1.获取cookie,如果存在则显示上次访问时间
2.回送本次访问时间。
通过cookie.setMaxAge(0)可以删除cookie,注意,删除cookie时,path必须一致,否则不会删除
Cookie实例,实现浏览记录:
1.创建模拟数据库的类,并用Map存入数据。
2.创建Book类,里边有若干属性,并有get set方法。
3.在代表网站首页的页面,输出网站所有产品。产品名设置为超链接,并将产品id号作为参数附在超链接的后边。
4.在点击上述超链接后,跳转到显示商品详细信息的页面。根据id号显示商品,并构建用户曾经看过的商品的cookie。
5.构建cookie的过程分为4中情况,分别处理。
Session
session的工作是基于cookie的。session会把id号回写给cookie。这个cookie是会话级别的。
如果要解决类似关闭浏览器购物车中商品信息不丢失等问题的话,可以自己构造一个包含sessionid的cookie,并设置个小于三十分钟的生命周期,发给response。
代码如下:
Cookie cookie = new Cookie("JSESSIONID", session.getId());
cookie.setMaxAge(1800);
response.addCookie(cookie);
简易购物车案例:
首页servlet:
1.创建模拟数据库的类,并用Map存入数据。
2.创建Book类,里边有若干属性,并有get set方法。
3.在代表网站首页的页面,输出网站所有产品。产品名设置为超链接,并将产品id号作为参数附在超链接的后边。
4.点击上述链接后跳转到购买servlet。
购买servlet:
1.得到用户要买的商品id号。
2.得到用户用于保存所有商品的集合(购物车),加入新的商品后重新存入session。
3.手工回送seeion的cookie。
4.跳转到购物车页面
购物车servlet:
1.获取到seeion里保存的购物信息。并显示。
解决用户禁用cookie的问题:
重写超链接即在超链接后加上sessionid。Java中含有了可以自动重写超链接的方法。encodeURL,这个方法可以自动判断是否需要重写超链接,如果用户没有禁用cookie也就是说不需要重写超链接,则链接不会改变。还有专门用来重写重定向链接的encodeRedirectURL。
重写超链接需要注意的问题:一定要先获取到session才能进行超链接重写。
session实例:用户登录
判断用户名和密码是否匹配,如果匹配则把user对象存入到session,跳转到首页后显示欢迎该用户。
否则显示用户名或密码不正确。
Session实例,防止重复提交:
重复提交的情景:
1.刷新。浏览器刷新的意义。重新请求,把干过的事情重干一遍
2.后退后再次点击。
3.多次点击。
javascript防重复提交:设置一个标记提交过了的变量,如果已经提交过了,则不再次提交
javascript防重复提交存在的问题:javascript 防重复提交,不能防刷新,和后退。并且只能防君子不能防小人。虽然防不死还是要写,因为可以减轻服务器压力。并且用户体验好。
Session防止重复提交的原理。将一个随机数写到表单的hidden属性并保存到session里。比对request请求中的随机数,若是跟session中的随机数匹配,处理请求,并立即三处session里的随机数。若不相同则不作响应。
使用md5算法获取md5字节数组后不能直接用来构造String,因为md5字节数组的1010可能跟默认的编码不同,从而产生乱码。
可用解决方案,查表法和Base64算法。
也可以直接生成uuid。
什么情况用什么域:
用完就没用了就用request。如mvc中从servlet向jsp转发。
用完了,一会还要用,就用session。如购物车
数据用完了,一会不仅要给这个用户用,还要给别人看。就用severletcontent。如:聊天室
注意:能用小的,就不要用大的。
运行时异常 出了异常一定要让上层程序知道,但又不能直接抛出编译时异常。抛出运行时异常抛出。
抛到跟用户交互的地方就不能再抛了。这个时候捕获异常,提示用户出错,并记录异常。
什么叫做一个会话。只要是基于当前窗口弹出的所有窗口,标签页都是一个会话。
两个会话共享session和关闭窗口后再开一样。
分享到:
相关推荐
day05-店铺营业状态设置
Hadoop-2.8.0-Day06-Zookeeper详解-课件与资料.zip
【课程简介】 本课程适合所有需要学习机器学习技术的同学,课件内容制作精细,由浅入深,适合入门或进行知识回顾。...day07-CIFAR图像分类 图像识别、分布式会话函数、分布式TensorFlow、推荐系统 共76页.pptx
P5 day01-06. MySQL 高级 - 索引 - 数据结构 P6 day01-07. MySQL 高级 - 索引 - 数据结构 - BTREE P7 day01-08. MySQL 高级 - 索引 - 数据结构 - B+TREE P8 day01-09. MySQL 高级 - 索引 - 索引分类 P9 day01-10. ...
1.2020-开年标杆班-day06-MySQL上节回顾 2.2020-开年标杆班-day06-MySQL上节回顾-2 3.2020-开年标杆班-day06-MySQL-Btree介绍及算法结构图 4.2020-开年标杆班-day06-MySQL-聚簇索引BTREE结构 5.2020-开年...
【课程简介】 本课程适合所有需要学习机器学习技术的同学,课件内容制作精细,由浅入深,适合入门或进行知识回顾。...day07-CIFAR图像分类 图像识别、分布式会话函数、分布式TensorFlow、推荐系统 共76页.pptx
day06-集合 java
Day06-CSS布局-浮动
day06-scroll-animation(滚动-动画)
【大数据的统计学基础】课程列表 day01-机器学习概述、特征工程、机器学习算法 共127页 day02-sklearn、knn、朴素贝叶斯、决策树、...day07-CIFAR图像分类与识别、分布式会话函数、分布式TensorFlow、推荐系统 共74页
day06-Debug&基础练习
day06-文件管理.pdf
高级软件人才培训专家-day06-MySQL
day06-微信登录、商品浏览
DAY06-MYBATIS框架基础-01.pdf
高级软件人才培训专家_day06-数据库-MySQL(1)
day06-HTML&CSS.zip
【课程简介】 本课程适合所有需要学习机器学习技术的同学,课件内容制作精细,由浅入深,适合入门或进行知识回顾。...day07-CIFAR图像分类 图像识别、分布式会话函数、分布式TensorFlow、推荐系统 共76页.pptx
Analytics-90Day-2021-12-18-080027.0003.ips.ca.synced
Linux运维-运维课程MP4频-06容器编排(k8s)-day01-11-9-06-docker客户端与服务端分