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

JavaWeb-旅游网-线路搜索

程序员文章站 2024-03-07 15:37:33
...

JavaWeb-旅游网-注册和登录
JavaWeb-旅游网-导航条和分页展示
JavaWeb-旅游网-详情展示
JavaWeb-旅游网-点击收藏
功能: 用户在框搜索输入想去的地址,页面显示对应地址的旅游线路
JavaWeb-旅游网-线路搜索
可以采用模糊查询完成该功能,后台接收到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());
    }

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