暑假撸系统7- 熊孩子的捣乱!javascript保存前台状态!
系统大体框架已经搭的差不多了, 往下就是技术性的美化以及修补了,但这也是最最耗费时间的。在这个过程就发现了一个有意思的需求,这里把思路以及解决方案总结下。
因为做的是考试系统,不管是大或者小的考试,本身也就是比较重要的,设想如果出现这样的逻辑,试想一个熊孩子写着写着突然手滑点了个倒退按钮、或者浏览器奔溃了、或者浏览器关掉了。这都是是个悲剧。虽然设计的时候认为他应该不会这么操作,但是现实中的客户!

解决方法有两个。
1,每做一题服务器保存一次,这样做难免会增加服务器的负担,如果考试人数比较多,这样的操作一定不是最优选!
2,保存到前端,但是要保证刷新或者重新登录的时候依然能找到做题的信息。
上面两个方法最好就是采用方法2保存到前端,但是保存到前端的方式js有三种分别是
- sessionStorage
- localStorage
- cookier
都是保存到浏览器
1 不同点:传递方式不同
cookie 数据始终在同源的http请求中携带(即使不需要),即cookie在浏览器和服务器间来回传递
sessionSorage和localStorage不会自动把数据发送服务器,仅保存本地保存。
2 数据大小不同
cookie数据还有路径(path)的概念,可以限制cookie只属于某个路径下。存储大小cookie数据还有路径(path)的概念,可以限制cookie只属于某个路径下。
存储大小限制也不同,cookie数据不能超过4k,同时因为每次http请求都会携带cookie,所以cookie只适合保存很小的数据,如会话标识。
sessionStorage和localStorage 虽然也有存储大小的限制,但比cookie大得多,可以达到5M或更大。
剩下的还有其他的不同点,最后我选择了localstorage方式。
也就是每次学员选择选择相应的题目的时候,通过localStorage保存到本地,然后找个页面加载的时候进行再读出本次考试的key值,然后填充到页面。逻辑基本就是这个。
前台加载的时候读取本地存储,并且根据值把已经做的题展示出来。

最后别忘了,客户做一道题保存一次!

实现效果,做过的题丢不了了!!刷新也能找回来!


暑假撸系统7- 熊孩子的捣乱!javascript保存前台状态!的更多相关文章
- 暑假撸系统1-先把git后悔药准备好!
学校规定让暑假自己撸一款在线考试系统,其实的确需要一个款在线的考试系统系统,因为平时学校是使用Excel讲解选择题的.基于这个目标那么就话不多说.开干! 本来趁着项目想练练手,使用些新学习的技能看看, ...
- 暑假撸系统5- Thymeleaf 常用标签的
上次博客已经是三天前了,后期修补和细化的东西多了,进度没有前几天那么明显了.因为原来工作大多是后端居多,如果非要前台也会选择一些相对对ui依赖比较小的框架,比如extjs,所以这次的基础排版就费劲了, ...
- 暑假撸系统3- petty热更新 mybatis自动填充时间字段!
经过了昨天纠结技术选型,和一大堆xml配置,终于把架子搭好了.因为最近一次做java项目也在好多年以前了(毕竟用了pytohn以后谁也不想再回来java了),java的生态发生了长足的进步,本来想从原 ...
- 暑假撸系统6- Thymeleaf ajax交互!
本来用Thymeleaf也没想着深度使用ajax,就是用也是非常传统的ajax方式提交然后js控制修改下变量.闲来无事的时候看Thymeleaf的教程发现一哥们的实现方式,以及实现思路,堪称惊奇,先说 ...
- 原生 JavaScript 实现 state 状态管理系统
原生 JavaScript 实现 state 状态管理系统 Build a state management system with vanilla JavaScript | CSS-Tricks 在 ...
- 为了圣像画系统V1.0Beta版(javascript)-GIS520社区
地图标绘系统V1.0測试版 (界面比較难看,之后再统一美化!) 演示地址:http://www.gis520.com/gis/plotdemo/index.html 查看可在菜单Map--> ...
- web前端工作五年了,我来告诉你如何系统的学习现在的JavaScript
一.入门 1:熟悉DIV+CSS布局 使用DIV+CSS布局标准网页,可以使前端XHTML代码更少.结构更清晰,这有利于轻松用JavaScript操作DOM 比如,要展示一个3行3列的列表,如果用传统 ...
- Android下载图片/调用系统相机拍照、显示并保存到本地
package com.example.testhttpget; import java.io.BufferedReader; import java.io.FileNotFoundException ...
- Arcgis for javascript不同的状态下自己定义鼠标样式
俗话说:爱美之心.人皆有之. 是的.没错,即使我仅仅是一个做地图的,我也希望自己的地图看起来好看一点. 在本文,给大家讲讲在Arcgis for javascript下怎样自己定义鼠标样式. 首先.说 ...
随机推荐
- 大厂面试来了,欢聚时代四年多经验的Java面经
前言(也就是废话) 今年年底,额,不对,应该说是去年了,我开始进行了一个多月的面试之旅. 面试的公司并不多,但从体量上来看,基本算是一二三线的大厂都囊括了,其中还包括BAT,当然,最后我也是顺利的拿到 ...
- session反序列化
先来了解一下关于session的一些基础知识 什么是session?在计算机中,尤其是在网络应用中,称为"会话控制".Session 对象存储特定用户会话所需的属性及配置信息.这样 ...
- golang中如何将json文件解析成结构体
package tool import ( "bufio" "encoding/json" "fmt" "os" ) t ...
- gin源码解读1-net/http的大概流程
gin框架预览 router.Run()的源码: func (engine *Engine) Run(addr ...string) (err error) { defer func() { debu ...
- java继承成员变量特点
1 /* 2 * 在子父类中,成员的特点体现. 3 * 1,成员变量. 4 * 2,成员函数. 5 * 3,构造函数. 6 */ 7 8 //1, 成员变量. 9 /* 10 * 当本类的成员和局部变 ...
- linux搭建本地和网络yum源
[mirrors.163.com] name=mirrors.163.com baseurl=http://mirrors.163.com/centos/7/os/x86_64/ enabled=1 ...
- JavaScripts之迪卡算法求积(n*n)适用于SKU信息计算等场景
迪卡算法求积(n * n) 使用 array.reduce 的方式实现 笛卡尔积算法 const arr = [ ['黑色', '白色', '蓝色'], ['1.2KG', '2.0KG', '3.0 ...
- service层 必须做业务逻辑的处理
package com.aaa.zxf.service; import com.aaa.zxf.mapper.BookMapper; import com.aaa.zxf.model.Book; im ...
- 第09讲:Flink 状态与容错
Flink系列文章 第01讲:Flink 的应用场景和架构模型 第02讲:Flink 入门程序 WordCount 和 SQL 实现 第03讲:Flink 的编程模型与其他框架比较 第04讲:Flin ...
- Android--控件的滑动事件
感谢大佬:https://www.cnblogs.com/zkb-0928/p/3768209.html 感谢大佬:https://blog.csdn.net/sweiqin/article/deta ...