Javaweb初级阶段项目总结

JavaWeb程序设计初级阶段酒店项目实战总结

⑴.设计理念:

酒店项目具有实战性,有用户,前台,管理员多种角色,利用一年内学习的Java基础知识/JavaWeb/mysql/Jsp/Jquery等/简单的后端和前端技术,因为是第一次接触项目,在授课老师的带领下写项目,学习老师多年来写项目的经验。从这次酒店项目的功能来看,

  1. 管理员:可以对房间的增删改查和对房间窗,床,设施,标签的修改增加;
  2. 前台:可以对对用户的已付款订单入住,添加对入住人房间添加随行入住人,可以看到所有房间状态(包括已被预订,正在入住)两种状态;房间状态界面可以看房间正在住的人的信息,可以点击退房。然后跳转至退房界面,退房界面有入住人的信息和押金。可以对所有房间的商品增删改(有些功能暂时还未完成)。
  3. 用户:任何人都可以进入查询所有房间,查看房间详细信息的界面,当点击预订时就需要登录了,登录后可以进入订单详情界面,下单,支付(余额支付,支付宝支付),支付宝充值余额,查看浏览记录(只有在正在访问页面时有效),联系客户,查看所有订单(所有订单,代付款,待入住三种选择方式)。详情流程见下图:Javaweb初级阶段项目总结_第1张图片
  4. 项目接入微信公众号:因现在微信公众平台现在火爆,几乎全国人民都在用,所以选择搭载到公众平台上,公众号首页有进入主页,查询房间关键字,查看余额,查看订单等功能,最主要的是自动授权功能。

⑵.项目数据库设计图:

Javaweb初级阶段项目总结_第2张图片

数据库设计图还有有完善得地方,大概设计思路就这样了。

⑶.项目程序准备:

  1. 项目采用经典三层架构和MVC思想,所以在程序设计准备阶段需要写入通用Dao层(数据访问层),JDBC获取链接访问数据库Util。

①.

Javaweb初级阶段项目总结_第3张图片

②.Javaweb初级阶段项目总结_第4张图片

⑷.初次写项目遇到的问题和解决方法:

题要:

因为是第一次写项目,所以在开始接触的时候消耗的时间是挺多的,如果拿到项目进行完了再来写,管理员界面在数据库设计好了的情况下只需要两天吧。有些小的问题就不一一介绍了,也有些问题也记得不是那么清楚,下面就简单的介绍遇到的一些棘手而且使我记忆深刻的问题。

管理员界面程序设计问题:

①.修改房间设施,房间标签多选框checkbox回显问题:因为在项目的初始化阶段还不太熟悉也不太会使用Jquery,所以很多东西都不太会,所以在有很多个数据的情况下是不知道怎么回显的。

解决办法:使用JQuery的核心each()循环遍历从后台传入到界面bootstrap,判断如果后台传入的值和CheckBox的value值相同,就给上属性checked(打上勾)

Javaweb初级阶段项目总结_第5张图片

②.增加房间上传图片的问题:上传图片使用过很多很多的插件,用过layui的插件,JQuery上面的简单得多图片上传插件,CSDN上简单将input中的文件上传美化的源代码,最后还是选择了easyUpload.js文件上传,这款插件很好有全选操作,文件限制大小,文件限制类型,是否允许多图上传,限制最大上传数,支持文件预览等等,最后附上地址:http://www.jq22.com/jquery-info17836,这个上传图片插件在上传成功时需要后台返回一个数据,

来判断是否上传成功了,但是项目需要在后台返回文件的地址到jsp然后传入增加的Servlet来执行上传保存文件地址的数据到数据库。然后看了下插件的说明以及评论,都说将那返回值判断删掉,如果删掉不管上传成功与否都会给个上传成功的提示,所以这个方法明显是不可行的,这就需要看源代码看是怎么判断的,所以我在返回判断值得时候就给它把判断依据给改了,

Javaweb初级阶段项目总结_第6张图片

也就是说,如果后台返回数据为200,就上传失败,但是在作者的项目下,数据是永远都不可能返回200的,这个数据返回就算是解决了。在上传成功回调后返回的数据,在项目刚开始进行的那个阶段,根本不怎么会使用ajax,导致后面储存数据时出现了问题,这就不详细的讲述了。

 

用户界面程序设计问题:

①.时间选择方面:采用JQuery插件模仿美团的时间选择插件http://www.jq22.com/jquery-info16845

②.价格排序,楼层选择,房型筛选:采用多功能移动端滚动选择器mobileSelect.js,地址:https://github.com/onlyhom/mobileSelect.js/blob/master/docs/README-CN.md

这里最主要得就是将选择的值传入后台后怎么筛选,就用拼sql的方式限制数据库查询的东西来达到筛选得效果,

Javaweb初级阶段项目总结_第7张图片

可能这个办法有点蠢,但作者我也就只有这点能耐了。

③.选择的时间带到订单的问题:我使用的这个方法就比较蠢了,将用户选择的值传入到后台,然后分割合并替换,就达到了每个页面需要用到的日期不同的效果了,就比如前台带入的时间是

这种的,然后在房间详情页面需要用到的时间是

这种的,处理方式就是在后台将值改变后,传入到前端页面。

Javaweb初级阶段项目总结_第8张图片

④.界面美化上的筛选,使某个div固定在页面顶端:如:

Javaweb初级阶段项目总结_第9张图片

这个筛选得div让它一直在顶端,其实在网上搜一下就知道了,获取初始位置与顶端的距离,如果当此div移动到顶端距离位置就固定position,但是值得注意的是z-index属性,需要设置元素的堆叠样式,不然下面移上去的div主页面,会覆盖上面的筛选div。

 

前台界面程序设计问题:

①.这里最主要的就是房间状态那里花的时间有点多,将所有房间数据传入到前端,然后判断房间的状态,这就需要将所有订单数据也拿到前端进行比对,不同的状态显示不同的效果。

Javaweb初级阶段项目总结_第10张图片

其实现在想想还是挺简单的,将所有订单数据转为JSON数据,拿到前端JSP取出值,也就是订单的状态,订单的状态只要是被预定和正在入住状态,就显示不同的样式,

Javaweb初级阶段项目总结_第11张图片

在页面前端进行遍历,不一样的状态不一样的样式选择

Javaweb初级阶段项目总结_第12张图片

②.取出append追加的表单数据,循环遍历数据到后端,然后后端循环取出存入数据库,

最主要的就是前端循环遍历那块,我再CSDN博客上写过解决办法https://blog.csdn.net/qq_41342776/article/details/83625706

上面两种办法解决起来可能都有点耗费资源或者对后台压力有点大,确实需要后台处理的东西有点多,但是这也是当时想到的唯一办法了。

 

微信端公众号程序设计问题:

①.微信公众号只要需要用到连接的地方必须在连接前加上超文本传输协议。(http/https)

②.微信授权相关问题:判断用户是否已经授权过,查询数据库数据时判断是否为空,需要将此内容放到拉取用户信息后在去判断,刚开始是当判断为是否是微信用户后就判断用户是否授权成功过,但是如果这么干在还没拉取用户信息时就已经结束了微信获取用户这块,就会导致微信授权失败。

 

数据库配置问题:

当向数据库中存入时间/日期的时候,(数据库的字段类型存为time或date)的情况下,数据库存入的时间会比从程序中存入的时间少一天,原因是数据库的默认时区和我们北京时间对应不上,会少8个小时,这是需要在配置文件上

将时区设为上海或者亚洲/香港都可以。

 

当然还有很多问题还没一一列出,好多错误都可以在百度上搜到。

 

(五):项目总结/感想

1.从项目的开始阶段到项目写完整整用了两个月,这段时间一直在写bug,修改bug,先从管理员界面开始,一直都是老罗带着在写,刚开始的时候确实如果老罗不写,我不看,不听的话根本不会写,也根本就不知道该怎么开始。当时好多东西都不会,写到后面才慢慢的会自己动手了。

2.养成了不会就问的习惯,也培养了我上网搜索查询的习惯,只要遇到棘手的问题就先查百度,在自己思考,实在是不会了就问老罗。所以在整个项目来说,最应该感谢的就是罗罗一直默默的支持我们,这次项目让我获益匪浅,虽然时间用了两个对月(确实长了点)但是学到了很多的知识,在这次实战项目的时候我发下,往往觉得自己掌握的很好或者自以为熟练的技术却在这次项目中总出问题,还有就是理解点什么基本的知识是完全不够写项目的,总之在写项目前要学会很多基础知识才行,还要理解底层实现方法。

3.在写项目的时候需要养成良好的文档记笔记的习惯,还要代码规范,严谨,效率要高,最主要的是要写注释,注释非常重要,当自己需要用到以前写到的方法的时候,自己给过注释就会很快知道那块代码在哪,写了是干什么的。

4.在遇到问题的时候,要有持之以恒的精神,不能一遇到问题就想到去问,要先去思考,就算问了别人,也只要别人讲出思路,一点道破的那种感觉,不要让别人帮忙把代码写出来,那样是完全没有效果的;当解决完这个问题的时候,一定要记笔记,知识都是要温故而知新的,遇到问题解决完了就需要写个博客,到时候回头看看自己写的东西,都会有成就感,我自己都没做到这些,每次都是想着,然后继续写后面的代码,然后就忘了,第二天根本记不到当时是怎么解决得这个问题。

5.还有提高到自己交流沟通的能力,有些时候,别人不会的都来问我,确实有些问题真的感觉很简单,但是还是要慢慢的讲,也许只是别人没有转过弯儿来而已。尤其是比人问到自己从来没有遇到过的问题的时候,自己也可以见识下,然后试着帮忙解决。俗话说见多识广嘛。

你可能感兴趣的:(Java编程语言)