失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 我发现了一个黑马旅游网旅游线路查询的bug

我发现了一个黑马旅游网旅游线路查询的bug

时间:2022-09-27 22:15:27

相关推荐

我发现了一个黑马旅游网旅游线路查询的bug

.5.5第一次编写

项目背景

有三种方式展示数据:

只通过category的cid属性来显示数据,也即是点击分类显示相应数据。只通过查询(他对应变量为rname)来显示数据,也即是在首页直接搜索关键词查询显示相应数据既通过cid属性,又通过rname来查询并显示数据,也即是点击分类并在搜索框搜索关键词

rname来源:给搜索按钮绑定单机事件

Bug分析

现在 后两种方式都是没问题的:

第二种

只通过查询(他对应变量为rname)来显示数据,也即是在首页直接搜索关键词查询显示相应数据

搜索结果:

地址栏为:

第三种

既通过cid属性,又通过rname来查询并显示数据,也即是点击分类并在搜索框搜索关键词

搜索结果:

地址栏为:

现在出现的bug就是第一种!

只通过category的cid属性来显示数据,也即是点击分类显示相应数据。

当我们只点击分类而不搜索时,结果如下:

看起来没问题,但是当我们点击其他页的页码或者上一页,下一页,首页,末页时,结果如下:

没有一条数据!

肯定是查询数据出了问题,但idea又没报错,可能是逻辑除了问题。

经过我长时间的排查,终于发现了原因!

原来是接收参数时出的问题。

当rname为空时,前端传给RouteServlet的是“null”字符串,而不是null。

所以在RouteDaoImpl中的判断参数是否有值的地方把rname当成“null”关键词(有值)来查询,而数据库没有关键词为“null”的旅游路线,所以返回0条记录,产生错误。

解决方案

其实也不难,我们只需要在接收rname时先判断一下它是不是“null”,如果是将其设为null,否则按之前的逻辑来即可。

//搜索的关键词String rname = req.getParameter("rname");if("null".equals(rname)){rname = null;}else{rname = new String(rname.getBytes("iso-8859-1"),"utf-8");}

这时候我们再测试一下

KO! 请叫我 bug杀手,哦~ 我这该死的无处安放的魅力~ 0v0

.5.10第二次更新

关于轮播大图的优化

按照教程所述我们编写的代码当我们刚打开(强调刚打开是因为:如果你随便碰了一下其他的轮播小图,那么大图就会切换成你碰的这个图,那么这样你可能就不会发现我这里讲的小bug了,因为你看不到)这个网页时,轮播图的大图默认是一个固定的图片,就是下面这个

可以看到,这个图片很明显不是该路线的图,所以这里功能做的不是很好,我们希望它默认大图是轮播小图里面的一张图片,姑且就用第一张吧。

首先我们找到这个图的位置,给他加上id:bigImg。

然后在入口回调函数里面为bigImg设置html,即

//设置大图为第一个小图var bigPic = '<img alt="" class="big_img" src="'+route.routeImgList[0].smallPic+'">';$("#bigImg").html(bigPic);

然后再刷新一下页面,轮播大图默认就是第一张轮播小图了!

如果觉得《我发现了一个黑马旅游网旅游线路查询的bug》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。