JavaWeb-旅游网-线路搜索

JavaWeb-旅游网-注册和登录
JavaWeb-旅游网-导航条和分页展示
JavaWeb-旅游网-详情展示
JavaWeb-旅游网-点击收藏
功能: 用户在框搜索输入想去的地址,页面显示对应地址的旅游线路
JavaWeb-旅游网-线路搜索_第1张图片
可以采用模糊查询完成该功能,后台接收到cid和rname后,对数据库进行模糊查询,随后把数据封装成json格式响应个前端,前端解析数据并展示。

在上一个分页的展示数据的基础上进行拓展,加入rname参数,在获取rnam参数时需要对其解码,否则拿到的是乱码

           // var search = location.search;
           // var cid = search.split("=")[1];
            var cid = getParameter("cid");
            var rname = getParameter("rname");
            if (rname){
                //对rname进行解码
                rname = window.decodeURIComponent(rname);
            }
            //如果当前是首页的话,cid设置为0
            if (cid == "null"){
                cid = 0;
            }
           load(cid,null,rname);
        });
   //搜索功能
        $("#search-button").click(function () {
            var rname = $("#search_input").val();
            //获得当前的旅游种类的cid
            var cid = getParameter("cid");
            location.href="http://localhost/travel/route_list.html?cid="+cid+"&rname="+rname;
        })

前端的数据解析和展示与之前分页数据展示相同,这里就不在赘述了,直接讲后台的查询
后台要做的就是,如何判断该进行带cid和rname的查询还是不带。代码如下,判断中有个 “null”.equals(rname) 这是因为rname没有值时,再获取rname,JavaScript会给它一个null,这个不是空null而是字符串的"null"


    /**
     * 查收数据总数
     * @param cid
     * @param rname
     * @return
     */
    @Override
    public int findTotalCount(int cid,String rname) {
//        String sql = "select count(*) from tab_route where cid = ?";
        String sql = "select count(*) from tab_route where 1=1 ";
        StringBuilder sb = new StringBuilder(sql);
        List params = new ArrayList();
        if(0 != cid){
            //如果当前的页面种类不上首页就加上cid
            sb.append(" and cid = ?");
            params.add(cid);
        }
        //如果rame不为空或者不为null就加上rname进行模糊查询
        if (null != rname && rname.length()>0 && !"null".equals(rname)){
            sb.append(" and rname like ?");
            params.add("%"+rname+"%");
        }
        sql = sb.toString();
        return template.queryForObject(sql,Integer.class,params.toArray());

    }

    /**
     * 获取数据段
     * @param cid
     * @param start
     * @param pageSize
     * @param rname
     * @return
     */
    @Override
    public List<Route> findByPage(int cid, int start, int pageSize,String rname) {
//        String sql = "select * from tab_route where cid = ? limit ? , ?";
        String sql = "select * from tab_route where 1 =1 ";
        StringBuilder sb = new StringBuilder(sql);
        List params = new ArrayList();
        //如果当前的页面种类不上首页就加上cid
        if(0 != cid){
            sb.append(" and cid = ?");
            params.add(cid);
        }
        //如果rame不为空或者不为null就加上rname进行模糊查询
        if (null != rname && rname.length()>0 && !"null".equals(rname)){
            sb.append(" and rname like ?");
            params.add("%"+rname+"%");
        }
        //分页查询
        sb.append(" limit ? ,? ");
        sql  = sb.toString();
        params.add(start);
        params.add(pageSize);
        return template.query(sql,new BeanPropertyRowMapper<>(Route.class),params.toArray());
    }

查询到数据响应给前端解析展示即可

你可能感兴趣的:(JavaWeb-旅游网-线路搜索)