要旅游,就现在------基于Web的旅游网

此旅游网项目是前端和后台交互实现的。
它的功能:
(1)注册功能
(2)登录功能
(3)退出功能
(4)分类数据的展示
(5)旅游路线的分页展示
(6)旅游路线的名称查询
(7)旅游线路的详情展示
(8)旅游线路的收藏功能

===========================================================
技术分层:
将其分为三层,
1.Web层
2.Service层
3.Dao层
Web层调用Service层,Service调用Dao层。
Web层:
(1)Servlet:前端控制器
(2)Filter:过滤器,防止全局乱码
(3)html:视图
(4)BeanUtils:数据封装
(5)Jackson:json序列化工具
Service层:
(1)Javamail:java发送邮件工具
(2)Redis:nosql内存数据库
(3)Jedis:java的redis客户端
Dao层:
Mysql:数据库
Druid:数据库连接池
JdbcTemplate:jdbc的工具

===========================================================
本次项目用到了六张表
(1)tab_category
(2)tab_favorite
(3)tab_route
(4)tab_route_img
(5)tab_seller
(6)tab_user
表与表之间的关系如下图所示:
在这里插入图片描述
首先将六张表在数据库中建立起来
在这里插入图片描述然后向表中插入数据
数据库里的表以及数据对应类及其属性,因此我们在entity中建立如下的实体类:
(1)Category:路线类型
(2)Favourite:收藏的路线
(3)PageBean:分页对象
(4)ResultInfo:登录返回信息
(5)Route:路线信息
(6)RouteImg:路线图片
(7)Seller:销售者
(8)User:用户
此项目中,我们需要提供一个工具的包
因此提供了以下的工具:
在这里插入图片描述
JDBCUtils:
1. 声明静态数据源成员变量
2. 创建连接池对象
3. 定义公有的得到数据源的方法
4. 定义得到连接对象的方法
5. 定义关闭资源的方法
JedisUtil:Jedis工具类
MailUtils: 发邮件的工具类
Md5Util:使用Md5消息摘要算法,将明文加密为密文。
UuidUtil:产生UUID随机字符串工具类
接下来我们就要一步一步去实现具体的功能。
1.注册功能
(1).注册页面:根据验证规则进行表单验证
(2).注册成功页面(注册成功跳转到的页面)
在此使用异步提交表单是为了获取服务器响应的数据。因为我们前台使用的是html作为视图层,不能够直接从servlet相关的域对象获取值,只能通过ajax获取响应数据

  //页面载入事件
    $(function () {
        //当表单提交时,每一个方法都要校验一下
        $("#registerForm").submit(function(){
            //1.发送数据到服务器
            //当表单提交时,每一个方法都要校验一下
            if(checkUsername() && checkPassword() && checkEmail()){
                //校验通过,发送ajax请求,提交表单的数据   username=zhangsan&password=123

                $.post("user/regist",$(this).serialize(),function(data){
                    //处理服务器响应的数据  data  {flag:true,errorMsg:"注册失败"}

                    if(data.flag){
                        //注册成功,跳转成功页面
                        location.href="register_ok.html";
                    }else{
                        //注册失败,给errorMsg添加提示信息
                        $("#errorMsg").html(data.errorMsg);

                    }
                });

            }
            //2.不让页面跳转
            return false;
            //如果这个方法没有返回值,或者返回为true,则表单提交,如果返回为false,则表单不提交
        });

注意:验证码存到session中 ,对比前端输入的验证码和后端输入的验证码。
然后我们就进行具体的后台代码的编写,具体的源码请看github链接。
2.邮件激活
第一步:接收激活码
若激活成功,跳转到登录页面:login.html
然后通过Jquery-ajax后台服务器发送异步请求
$.post(“loginServlet”,表单中的数据序列化成字符串)
则需要在对应的后台写对应的逻辑
在这里插入图片描述
3.发送邮件
(1).申请邮箱
(2).开启授权码
(3).在MailUtils中设置自己的邮箱账号和密码(授权码)
在这里插入图片描述
4.登录
LoginServlet中的编写代码的步骤:
(1)获取数据(用户名,密码)
(2)封装User对象
(3)调用Service进行查询
(4)判断用户是否激活
(5)判断用户是否登录成功
5.在我们还未处理接下来的步骤时,index页面中提示的用户姓名是一个固定的Admin,现在我们想将他变为动态的,谁登录,就显示谁的名字,因此我们将其变为动态的
在这里插入图片描述

  $(function () {
        //直接发送一个异步get提交
        $.get("user/findUser",{},function (data) {
            //接收服务器响应过来的User姓名{uid:xx,username:xx,password:xx,name=' '},替换成动态的
            var msg = "欢迎回来,"+data.name;
            $("#span_username").html(msg);   //将msg绑定

        });

5.退出
一旦登录,session中就有user对象。
实现步骤:
1.访问servlet,将session销毁
2.跳转到登录页面
request.getSession().invalidate(); //销毁session

6.然后我们观察:
发现每一个功能都对应一个Servlet,Servlet量太大,并且很繁琐,因此,将其优化为一个模块一个Servlet,相当于在数据库中一张表对应一个Servlet,在Servlet中提供不同的方法,完成用户的请求。
如下图所示

在这里插入图片描述
首先建一个基类BaseServlet,让他继承HttpServlet
然后让抽取出来的用户模块和分类模块继承它。
在BaseServlet中完成方法的分发。
在模块中完成相应的方法,完成后不要忘了在页面中修改路径。
7.分类数据的展示
在这里插入图片描述
Servlet调用Service,Service调用Dao
分类的数据在每一次页面加载后都会重新请求数据库来加载,对数据库的压力比较大,而且分类的数据不会经常产生变化,所有在此使用redis来缓存这个数据。提高了数据访问的效率。
8.旅游线路的分类展示
旅游线路表和分类表时一个多对一的关系
从redis中查询。
9.旅游线路的详情展示
当页面加载时,发送ajax请求,查询Route对象
10.旅游线路的收藏功能
当页面加载完成后,发送ajax请求,获取用户是否收藏的标记
根据标记,展示不同的按钮样式

结果:
在这里插入图片描述
在这里插入图片描述
总结:此次项目代码量较大,借鉴了很多原有的图片,数据等资源,一开始遇到了很多困难,通过与老师探讨和查阅资料慢慢的解决了,此项目最有特色的地方就是抽取,一开始,每一个方法对对应了一个Servlet,导致Servlet量很大,后来将其抽取为一个模块对应一个Servlet.

源码请看github链接:https://github.com/zhdfuture/TravelProgram

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 大象旅游是一个基于web旅游信息,致力于为用户提供全面、准确、及时的旅游信息和服务。 首先,大象旅游提供丰富的旅游目的地介绍。无论用户想要去哪个国家或城市旅行,大象旅游都会为其提供详尽的目的地介绍,包括当地的历史、文化、风景名胜等信息,使用户能够更好地了解目的地,并做出合适的旅行计划。 其次,大象旅游还提供优质的酒店预订服务。用户可通过大象旅游查询目的地的各类酒店,包括星级酒店、民宿等,同时还能了解酒店的设施、价格、评价等信息,以便用户能够选择适合自己的住宿场所。 此外,大象旅游还提供机票预订服务。用户可在大象旅游上查询航班信息、比较价格,并进行机票预订,以方便用户规划行程,并得到最优惠的机票。 大象旅游还特别开设了旅游攻略专栏,为用户提供各类旅行的建议和指导。攻略中包含游玩路线、景点推荐、美食推荐等内容,帮助用户更好地了解目的地,并规划自己的行程。 此外,大象旅游还提供用户留言和评论的板块,使用户能够分享自己的旅行经历、交流旅游心得,并向其他用户提供参考。 总之,大象旅游通过全面、细致的旅游信息和服务,为用户提供便捷的旅行规划和预订平台,使用户能够轻松实现美好的旅行体验。 ### 回答2: 大象旅游是一个基于web旅游信息站,旨在为用户提供全面、准确、实用的旅游信息和服务。首先,大象旅游提供丰富的目的地介绍和详细的旅游攻略,用户可以通过浏览站轻松了解各个目的地的特色、景点、美食和文化。其次,大象旅游还提供实时的交通信息,包括航班、火车、汽车等公共交通工具的时刻表和票价查询,方便用户了解行程安排和预订机票、车票等。同时,大象旅游还提供酒店预订服务,用户可以根据自己的预算和需求,在站上搜索并预订合适的酒店,还可以查看其他用户的评价和建议,帮助选择最佳住宿地点。此外,大象旅游还提供特色旅游产品的推荐和预订服务,例如深度游、自驾游、邮轮游等,满足用户多样化的旅游需求。为了提升用户的旅游体验,大象旅游还特设了在线客服系统,用户可以随时咨询旅游相关问题,并得到专业的解答和建议。另外,大象旅游还定期发布旅游资讯和热门主题活动,为用户提供更多的旅游灵感和机会。总之,大象旅游致力于为用户提供全方位的旅游信息和服务,帮助用户轻松规划和享受美好的旅行体验。 ### 回答3: 大象旅游是一个基于web旅游信息,为用户提供多样化的旅游信息和服务。首先,大象旅游拥有丰富的旅游景点资讯,包括国内外热门旅游目的地的介绍、景点的特色和推荐路线。用户可以根据自己的兴趣和需求选择合适的景点,了解各个景点的特色和旅行路线,以便更好地规划和安排旅行计划。 其次,大象旅游提供酒店预订服务,用户可以根据目的地选择合适的酒店,查看酒店的设施、服务、价格等信息,并进行在线预订。这方面,大象旅游与各大酒店合作,确保用户可以获得优惠的价格和便捷的预订体验。 除此之外,大象旅游还为用户提供机票预订服务。用户可以选择适合的航班、航空公司和价格,并进行在线预订和支付。大象旅游与各大航空公司保持合作关系,确保用户可以获得实时的航班信息和最优惠的价格。 此外,大象旅游还提供旅游攻略和游记分享功能。用户可以在站上找到其他用户分享的旅行经验和建议,了解不同目的地的特色和游玩要点。同时,用户也可以分享自己的旅行经历,与其他旅行者交流心得和建议,为大家提供更好的旅游参考和指导。 总的来说,大象旅游通过丰富的旅游资讯、方便的预订服务和用户分享平台,为旅行者提供全方位的旅游信息和服务,帮助用户更好地计划和享受自己的旅行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值