欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-03-07 16:12:27
...

项目背景

有三种方式展示数据:

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

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

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

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

Bug分析 

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

第二种

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

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

搜索结果: 

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

地址栏为:

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

第三种

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

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

搜索结果:

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

地址栏为:

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


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

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

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

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

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

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

没有一条数据!

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

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

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

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

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

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

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

解决方案 

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

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

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

这时候我们再测试一下

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

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

相关标签: Java项目的那些坑