随着人们生活水平的提高以及计算机网络的普及,尤其是近年来信息技术的发展和人们生活条件的改善,有更多的家庭都希望能够通过电脑、手机等网络设备实现家庭设备的远程监控。目前大部分的家庭监控系统都是以摄像头作为载体,一般仅仅用于监视,而在控制方面几乎没有,或者是比较复杂,需要拥有一定的计算机能力才能操作,难以普及。对于大众化而言,拥有可视化界面,操作简单的家庭远程监控系统将是目前家庭远程监控系统的发展趋势。通过使用SVG构建家庭远程监控系统,用户使用电脑、手机等设备只需要通过浏览器而不需要安装专用客户端,并且操作都是基于高清的图形界面,具有操作简单,视觉效果好的特点。
首先来到首页,即监控区域以及监控区域的情况,刚开始没选择想要监控的地点时显示如下;
还可以点击别的监控地点,比如车库,也可以对车库的地图进行放大;
现在我们想看看书房的各项属性值的具体数值,于是点击书房对应的显示图表,可以看到对应生成的实时属性值;
当然可以跨大时间间隔来看看,把握一个总体趋势总是比较好的,但是数据太密集了,可以选择放大窗口;
图表显示太快了,可视化的效果有待加强,我们可以选择表格,这样便一目了然;
如果想要进一步研究,可以导出Excel进行研究,从而提高家里的安全性能。也可以同时查看不同监控地点的图表,方便做出比较以及快速的安全判断,因为右边的监控区域情况一次只能显示一个监控地点的具体情况,打开图表过多的话可以直接点击全部关闭按钮。
浏览结束:
Step1: 通过document.getElementById()得到监控区域svg的标签”house”;
Step2: 通过document.querySelector()得到浏览开始的按钮”over”;
Step3: 通过click()函数,调用插件Tweenmax里面的函数;
Step4: 通过svg.setAttribute(“viewBox”, “0 0 757.8 534.8”),将区域显示为原始状态;
Step5: 通过TweenMax.killAll()函数结束调用的动态插件功能。
放大区域:
Step1:click()函数:先通过document.getElementById()先获得所点击区域对应的id;
Step2:发送对应的位置数据请求ajax,然后返回相应的viewbox中的四个参数值xylocation数组;
Step3:调用svg.setAttribute(“viewBox”,xylocation)。
缩小区域:
Step1:通过document.getElementById()得到”ensmall”的标签;
Step2:通过svg.setAttribute(“viewBox”, “0 0 757.8 534.8”),即可将区域显示为原始状态。
利用layui插件里面的弹出层模块的多窗口模式,层叠置顶部分。此弹窗可实现放大、缩小、关闭、拖拽等功能;显示为非模态弹窗,可以悬浮;关闭时可以单独关闭也可以一次性关闭弹窗。在触发事件中,可根据需要修改下面的主要参数:
1:type:基本层类型。此处设置为1;
2:area:窗口的大小。此处设置为[‘650px’, ‘500px’];
3:content :内容。此处我设置了一个div;
4:offset :坐标。默认:垂直水平居中;
5:btn:按钮。此处设置了btn为 [ ‘全部关闭’];
6:layer.setTop(layero):置顶当前窗口。当页面有多个layer窗口,利用setTop,则点击某个窗口,该窗体就置顶在上面。
Servlet能够交互式地浏览和生成数据并且生成动态Web内容,Java中的HttpServlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
Servlet 执行以下主要任务:
1:读取浏览器发送的显式的数据,包括网页上的 HTML 表单以及自定义的HTTP客户端的表单,即初始化时发送各个监控区域的Excel中sheet相对应的名称以及在此监控区域中想要检测的属性值。
2:读取浏览器发送的隐式的 HTTP 请求数据,包括 cookies、媒体类型和浏览器能理解的压缩格式等,即读取向后端请求的各个监控区域相对应的坐标数组、属性以及属性值。
3:处理数据并生成结果。即需要从EXCEL读取数据,这里指的是各个监控区域的不同的属性以及属性值或向Excel中写入相应的监控地点、属性以及相应的属性值。
4:发送显式的数据到浏览器,此处则指前端所需要的此刻所监控区域的坐标数组,所包含的相关检测属性以及相对应的属性值。
5:发送隐式的 HTTP 响应到浏览器,包括告诉浏览器或其他客户端被返回的文档类型、设置 cookies 和缓存参数等。
Servlet技术原理图:
Ajax 是一种用于创建快速动态网页的技术,通过在后台与服务器进行少量数据交换使网页实现异步更新,无需重新加载整个网页而能够更新部分网页。此处采用了在前端jsp中的 $.ajax()方法向后端请求数据。
在前端jsp中定义了一个sendAjax的函数,在浏览器页面上点击到相应的监控区域,则调用send()函数相对应的 $.ajax()方法进行发送请求。
PS:下方的 $.这里都省略。。。方便操作。
前端通过Ajax将请求信息以及数据传输到后端,后端获取到请求信息以及数据后,通过Java中的HttpServlet,对数据进行处理,响应请求信息,并返回处理结果给前端。
书房数据交互操作
在前端页面上点击监控区域的书房,则调用sendAjax部分的send()函数中对应书房的 ajax()方法,则向"/Monitor/QianQianXiaoNvWang"发送请求,后端的Servlet收到请求后,进行数据的处理,通过先动态生成书房所对应的属性以及随机属性值,将其写入Excel中,并将表格中书房相关的数据转换成json格式返回给前端请求书房信息的 ajax()。
卧室数据交互操作
在前端页面上点击监控区域的卧室,则调用sendAjax部分的send()函数中对应卧室的ajax()方法,则向"/Monitor/QianQianXiaoNvWang"发送请求,后端的Servlet收到请求后,进行数据的处理,通过先动态生成卧室所对应的属性以及随机属性值,将其写入Excel中,并将表格中卧室相关的数据转换成json格式返回给前端请求卧室信息的ajax()。
起居室数据交互操作
在前端页面上点击监控区域的起居室,则调用sendAjax部分的send()函数中对应起居室的ajax()方法,则向"/Monitor/QianQianXiaoNvWang"发送请求,后端的Servlet收到请求后,进行数据的处理,通过先动态生成起居室所对应的属性以及随机属性值,将其写入Excel中,并将表格中起居室相关的数据转换成json格式返回给前端请求起居室信息的ajax()。
客厅数据交互操作
在前端页面上点击监控区域的客厅,则调用sendAjax部分的send()函数中对应客厅的ajax()方法,则向"/Monitor/QianQianXiaoNvWang"发送请求,后端的Servlet收到请求后,进行数据的处理,通过先动态生成客厅所对应的属性以及随机属性值,将其写入Excel中,并将表格中客厅相关的数据转换成json格式返回给前端请求客厅信息的ajax()。
浴室数据交互操作
在前端页面上点击监控区域的浴室,则调用sendAjax部分的send()函数中对应浴室的ajax()方法,则向"/Monitor/QianQianXiaoNvWang"发送请求,后端的Servlet收到请求后,进行数据的处理,通过先动态生成浴室所对应的属性以及随机属性值,将其写入Excel中,并将表格中浴室相关的数据转换成json格式返回给前端请求浴室信息的ajax()。
车库数据交互操作
在前端页面上点击监控区域的车库,则调用sendAjax部分的send()函数中对应车库的ajax()方法,则向"/Monitor/QianQianXiaoNvWang"发送请求,后端的Servlet收到请求后,进行数据的处理,通过先动态生成车库所对应的属性以及随机属性值,将其写入Excel中,并将表格中车库相关的数据转换成json格式返回给前端请求车库信息的ajax()。
厨房数据交互操作
在前端页面上点击监控区域的厨房,则调用sendAjax部分的send()函数中对应厨房的ajax()方法,则向"/Monitor/QianQianXiaoNvWang"发送请求,后端的Servlet收到请求后,进行数据的处理,通过先动态生成厨房所对应的属性以及随机属性值,将其写入Excel中,并将表格中厨房相关的数据转换成json格式返回给前端请求厨房信息的ajax()。
书房对应的ajax请求:
书房对应的Servlet请求:
书房交互数据结果图:
Echarts
来源于Echarts官网,是一个纯JS脚本图表库,下载好合适的Echarts版本之后,通过‘ script src=“js/echarts.js”’‘ /script ’引入,在准备好的DOM容器中进行创建图表。通过前端显示图标按钮,触发弹出窗口事件之后,进一步创建图表,将当前时间作为x轴,不同y轴显示不同的属性,不同的y轴的数值则对应不同时刻的属性值。利用数据视图,对数据视图进行改进,可修改成表格的形式。
Echarts插件使用图:
Jquery.table2excel
是一个将表格导出为Excel的插件。在弹窗中显示的Echarts的数据视图中,生成的实时表格,引入此插件,点击导出Excel即可将表格导出为Excel。
Jquery.table2excel插件使用图:
Jquery
是一个具有独特的链式语法和短小清晰的多功能接口、高效灵活的css选择器,并且可对CSS选择器进行扩展,拥有便捷的插件扩展机制和丰富的插件。Layui插件以及其他插件依赖于它。需要通过‘script src=‘js/jquery-3.4.1.min.js’’‘/script’引入。
Tweenmax
是一个适用于移动端和现代互联网的超高性能专业级动画插件,GreenSock动画平台的核心。用于完成监控区域的浏览,即点击浏览开始,则可以按照设定的时间依次放大扫过各个区域,让用户了解监控区域的具体构造。其中注意viewbox参数的设置,以及delay()函数的巧妙使用,以下代码时浏览具体情况的代码,不仅包括放大,还包括了动画效果。
Tweenmax插件使用图:
Anime
作为一个可视化工具,可以实现动态效果,即完成自己名字与系统标题动态变化;同时当监控属性数值找过预定的数值时,会进行报警处理,报警时、平常安全时以及提醒时,灯的闪烁也是由此插件。利用anime插件设置一个样式.twinkleLight,其中内部设置为:{animation: fade 600ms infinite;-webkit-animation: fade 600ms infinite;}。
Bootstrap
是一个基于HTML、CSS、JavaScript 开发的简洁、直观、强悍的前端开发框架,利用其进行了监控区域属性、属性值以及监控区域状态的排版,修改其中CSS样式,美化。在右边监控情况区域属性、属性值、以及对应灯的排布,调用了该插件里面的clearfix。
Bootstrap插件使用图:
首先学习了一点html、css、js方面的内容,完成了简历的制作、不同排序算法的界面化、电影票选座等后,然后再学习了一定的java,实现了上面的一个小项目,单纯为了实现上述功能,而对界面的美化等没有太多的考虑。献丑了~~
17素材网
jquery布局插件
viewbox的动态用法-超级推荐