221旅游网 (2)

去修改页面,在页面中需要向controller传递被修改的分类的id,根据id获取到分类对象后在修改页面进行该分类的信息的回显。其中被修改的分类的id要写在隐藏域内,因为执行修改的sql语句需要借助于id对分类进行修改

填写相关信息后将表单提交到controller中,并将分类对象传递到dao层执行根据id修改分类信息的语句

 2、景区信息管理

(1)显示全部景区信息

  与分类信息相比,对sql语句进行了优化,如:查询的时候根据字段是否为空来确定是否查询此字段,通过减少字段的查询提高系统的执行效率,避免了对全表进行查询;通过mybatis的sql标签将sql语句封装为单独的模块,使用的时候根据id调用该模块,可以减少代码的冗余。

(2)景区描述

通过fck上传景区相关的图片,通过页面请求controller层的方法对图片进行处理,fck是支持多个图片的上传的

(3)添加景区

  在页面获取到用户输入的信息,提交后传递到controller层直接封装为model不用手动获取参数在进行分装,这也就体现出了springmvc相比于传统的mvc模式的优势

  由于景区的有一些属性的值不是单一的,例如:门票属性分为儿童票、成人票等。为了能够唯一确定一个景区的某一用户的票就需要使用sku,即景区的最小存储单元。在service层添加景区的时候还要添加景区的最小存储单元。

 

三、前台

主页面显示、景区详情、支付模块

(1)显示大分类、小分类、景点

  大分类(国内、国外等)、小分类()景点,是采用的foreach标签的的嵌套来进行显示的,其中景点的显示是由大分类的ID和小分类的ID共同决定的

  采用分页查询,每一个大分类下的小分类是采用的分页查询,为了页面的美观和用户友好性只显示八个景区的信息。

  为了解决访问网站首页的空指针问题,需要在访问首页的链接中添加大分类和小分类的参数,因为采用是onclick事件,而首次加载的时候并未点击任何的分类,因此需要在初始化的时候传递参数。如果没有初始化参数,获取景区的条件查询没有查询的条件就会出现空指针异常。

(2)更多景点信息

根据景区大分类的ID(国内、国外、周边游)获取景区的信息,即:获取某一个大类的所有景区信息并展示

(3)查看某一景点信息

根据景点ID查询景点信息和该景点的门票信息

(4)门票预定

需要获取景点和门票信息进行展示,并获取购票者的信息写入到数据库中

(5)支付模块

运用的是支付宝的沙箱环境,只是模拟付款流程

注册模块

(1)邮箱注册

  使用js的validation表单校验插件来在页面对输入的邮箱、密码、验证码进行格式、非空、长度等的校验

  将用户的邮箱、密码、用户状态(初始值为0)、激活码写入到数据库后,会发送一个邮件提醒用户点击链接激活账户,该链接是访问controller层的方法,根据激活码来更新激活码对应的用户的状态(激活后为1)

(2)手机注册

  采用的是手机号注册,获取注册的时候输入的手机号,并向这个手机号发送激活码,工具类负责激活码的发送,在service层将激活码与手机号拼接,在controller层再分别取出手机号与激活码,目的是保证注册的手机号与工具类发送激活码的手机号是同一个。所有的验证都正确的情况下将该账号的状态设置为1,并将用户的注册信息写入到数据库。

  注册页面点击获取激活码其实是发送ajax请求,请求参数是手机号,返回值是发送激活码是否成功的布尔值。点击的同时开始60s倒计时,防止用户一直获取激活码。

  手机验证的原理是:工具类根据用户输入的手机号向该手机号发送验证码,并且工具类会返回验证码。在service层将激活码与手机号拼接,在controller层再分别取出手机号与激活码,目的是保证注册的手机号与工具类发送激活码的手机号是同一个。如果controller层从session中获取到的验证码与从表单接收到的验证码是一致的则证明验证成功,否则,用户需要重新输入。

登录模块

  登录模块分为手机号登录与邮箱登录,采用邮箱/手机号+密码+图片验证码的方式进行,图片验证码可以防止黑客对用户账号的暴力破解。

 

优化:

1、freemarker的应用

  在后台景区管理处有景区静态化的按钮,点击后前台的景区详情页就是访问的静态页面(html),减少了前台的数据库的访问,但是存在一个问题就是当对景区修改后存在静态页与数据库中的数据不一致的问题,此时就可以点击按钮对已经存在不一致的景区进行手动的静态化,使得数据保持一致。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyzxjz.html