基于JavaWeb的西藏旅游平台的设计与实现
2024-05-20李旭昌司靖梓
肖 鑫,李旭昌,司靖梓,张 恒
(西藏大学信息科学技术学院,拉萨 850000)
0 引言
旅游业是西藏的特色产业和优势产业。1982—2019 年,38 年来藏旅游人数年均增长超过20%,旅游收入年均增长率超30%,2019 年来藏旅游人数超过4000 万人次,旅游创收超550亿元。西藏旅游业发展对于促进当地民生经济、改善民生福祉有着重大价值,在改善当地居民生活水平上有着举足轻重的作用[1]。其中旅游网站作为一种跨时间与空间的媒体,对于通过“互联网+”模式为游客提供优质服务,促进西藏旅游业发展具有积极意义[2]。在旅游产业链中实现信息资源的共享,是构建智慧旅游平台、应用旅游大数据的核心[3]。
本文设计实现了一款基于JavaWeb 相关技术,通过B/S 架构,采用MVVM 模式实现用户端、后台管理端的旅游平台。基于西藏的地域特殊性,该平台有针对性地进行了安全性设计,有效地提高了平台的安全性。该平台专注于为来藏游客与对西藏文化感兴趣的用户服务,具有一定的专一性和较强的信息深入性。
1 相关技术介绍
1.1 前端技术介绍
该平台前端采用Vue.js 与Thymeleaf 配合使用,以提供更高的开发效率与更优秀的性能表现,以实现一个高效的、现代化的、易维护的JavaWeb 应用[4]。其中,Vue.js 是一种流行的JavaScript 框架,它提供了一个响应式和组件化的开发方式,用于负责前端逻辑的实现,可以轻松构建现代化的用户界面。而Thymeleaf 是一种Java 模板引擎,它允许将动态数据渲染到HTML中,以实现页面的快速生成。这两种技术均具有简单易上手的特点,开发人员可以快速上手并开发出可重用的组件,以加快项目开发速度。
1.2 后端技术介绍
该平台后端采用了SpringBoot 框架与MyBatis-Plus 框架配合使用。其中SpringBoot 框架是基于Spring 的轻量级后端框架,可有效提高Java 应用程序开发,提供了丰富的自动化配置与多种插件机制,使其具有易于学习、快速搭建与高效运行等特点,可显著地简化传统Spring应用的开发、部署和运行[5]。MyBatis-plus则是MyBatis 的增强工具,在其基础上提供了更便捷的操作,其代码生成器可根据表结构自动生成常用的CRUD 操作代码,且提供多种性能优化方案以有效提高系统性能,如批处理、缓存。平台后端SpringBoot 框架与MyBatis-plus 框架结合使用,可有效简化开发、提高性能、提高系统的可维护与可拓展性。
1.3 数据库技术介绍
该平台采用Redis 进行缓存、MySQL 实现持久存储,可有效地实现负载均衡与性能优化等多种优势,是现代化应用开发的数据库常用后端技术方案[6]。其中,Redis 数据库是一种高性能的键值对数据库,适用于频繁读写、对响应速度要求较高的场景。在后端架构中,常常将热点数据以及高访问数据存储在Redis 中,以加速响应时间和提升性能。其次,MySQL 是一种稳定可靠、功能丰富的关系型数据库,适合存储大量结构化数据和进行复杂的数据查询分析操作。在后端架构中,可以将业务相关的数据存储在MySQL 中,并对数据建立索引、进行优化,以保证数据的完整性和一致性。
1.4 平台安全策略介绍
该平台通过综合采用多种网站安全策略来提高网站安全策略:①通过使用Thymeleaf、Vue.js等框架自带的转义功能对外部输入的数据进行过滤和转义,避免恶意用户插入脚本代码导致前端页面被攻击;②使用Web 应用程序防火墙WAF 来检测和防止Web 应用程序层面的攻击,如SQL 注入、跨站脚本攻击XSS 和跨站请求伪造CSRF,WAF 保护Web 应用程序减少遭受常见漏洞攻击的可能性;③通过后端使用MyBatis-Plus 持久层框架进行自动化处理,对输入的数据进行过滤核实,避免用户恶意注入SQL 命令导致数据库被攻击;④进行数据库定期备份和数据库云端备份[7],以便在网站遭受攻击后及时恢复,减少损失。
2 平台主体设计
2.1 平台整体设计
平台整体功能设计如图1所示。
图1 平台整体功能设计
该平台采用了MVVM 设计模式。MVVM 设计模式是一种基于MVC 设计模式的软件架构模式,其由Model-View-ViewModel 三个部分组成[8]。View 层主要通过Thymleaf 模板与Lay-UI实现前端用户界面展示和交互,Model 层通过MyBatis-plus 框架与SpringBoot 框架负责逻辑业务的实现和数据库的访问,而ViewModel层作为中间交互层,采用Vue.js 框架通过Ajax 与Json实现View 层和Model 层之间的数据双向绑定。使用MVVM 模式可以将用户视图与业务逻辑解耦,使项目易于维护与拓展。该平台项目MVVM架构如图2所示。
图2 平台MVVM架构图
该平台分为前台与后台两部分,服务的对象分别为前台游客用户,后台管理员。其中前台主要实现了六大模块:①景点信息;②旅游攻略;③搜索栏;④账号管理;⑤藏地介绍;⑥游记分享。在后台,管理员可以进行管理端登录,通过权限验证后,对网站信息进行管理:①用户信息管理;②景点信息管理;③游记信息管理。平台前台界面如图3所示。
图3 前台首页图
2.2 平台数据库设计
E-R图是实体—联系图,提供了数据库设计时实体、属性、联系的表示方法,是在软件工程学中用于将现实世界中的事务抽象为概念模型的常用工具[9]。
在该平台数据库的设计中,拥有以下六大主要实体:用户、管理员、评论、游记、标签和景点。数据库E-R图如图4所示。
图4 数据库E-R图
3 平台的实现
3.1 用户注册/登录模块实现
用户进入登录/注册页面,在对用户传递的注册信息进行操作时,通过vue.js 调用Axios 库使用AJAX 技术将技术异步传输到后端进行处理。在View-Model 层,通过Service 类调用Spring Securit 等库实现对前端传入数据进行校验,检测是否有SQL 注入或是违法字符,并通过BASE64 技术进行数据加密处理。通过MyBatis-plus 的BaseMapper 查询数据库中是否存在同一邮箱/电话号码注册的账号。若无,则向用户信息表新添数据;若有,则返回拒绝该次注册请求的页面。
为防止黑客DOS 攻击等网络入侵手段,设置登录注册页面,同一IP 地址在5 s内只能执行一次提交操作,验证码有效时间为5 min,且只可使用一次。
3.2 网站检索功能实现
在前台网站各个页面,用户都可以通过在网页上部的搜索框输入关键词进行搜索。首先进行的是基于数据库的站内检索。前端经过SQL注入过滤后,通过AJAX 向后端发送异步请求,首先在Redis 缓存数据库中检索高频数据,将数据按照浏览量排序返回到搜索页面。若用户不满意当前结果,则可点击“查看更多”按键,从持久层MySQL 数据库获取更多与关键词匹配的数据,并将数据回显在当前页面中。
若游客用户仍不满足,则可点击全网检索,获取全网基于该关键词的数据。其功能是通过将游客在搜索框所输入的内容作为关键词,调用百度API 检索,并将结果返回渲染当前页面来实现的。
3.3 游记模块实现
游记模块实现了为用户提供上传、查阅、评论个人旅游记录分享的功能。
游记模块的重点是上传审核功能,基于西藏地域的特殊性和敏感性,对于平台内容的审核有着较高的要求,因此该平台采用了双重审核的策略。首先将用户上传的游记通过敏感词语料库审查,若审查出敏感内容,则将该游记锁定退回给用户修改编辑[10]。当通过一轮审核,则进入第二轮审查队列,后台管理系统由管理员人工审核,此轮审查重点为图片等非文本内容。并决定该篇游记是否可以公开发布到平台上展示。
游客可对平台上的游记进行评论、点赞、举报等,以获取更优质的使用体验。
3.4 后台管理端的实现
后台管理端实现了数据信息管理,涵盖了验证管理、用户管理、订单管理、景点管理、机票管理、酒店管理。实现了数据库的增删改查操作。采用SpringBoot 作为框架并整合了MyBatis-plus、MySQL 持久层框架实现了数据库连接。在邮箱系统方面整合了JavaMail 操作。利用SMTP 协议实现了邮箱系统管理。在与前端的交互上采用了Cookie 机制来传输Session数据(Session机制),实现了会话和区分多用户。采用JsonResponse 来实现后端数据封装,配合Axios前端接口接收数据,统一化管理过程。
管理员通过后台登录验证后,即可便捷地对网站进行管理。该平台的后台管理系统截图如图5所示。
图5 后台管理系统图
4 结语
本文设计并实现了一个基于JavaWeb的面向西藏地区的旅游信息平台。该平台采用了Spring-Boot框架与Vue.js框架,实现了软件工程中迅捷开发的思想。该平台的实现不仅方便了对于西藏地区有旅游兴趣的人群,也为想要了解西藏自治区文化历史、自然风光的人群提供了一个便捷窗口,具有一定的现实价值。