首页 » 技术分享 » 07 旅游线路查询功能实现

07 旅游线路查询功能实现

 

功能预览

在这里插入图片描述

实现

1.查询参数的传递
在header.html中,设置按钮ID并绑定单击事件

//为搜索按钮绑定单击事件,获取搜索输入框的内容
    $("#search_button").click(function(){
        //线路名称
        var rname = $("#search_input").val();
        //跳转路径
        var cid = getParameter("cid")
        location.href="http://localhost/travel/route_list.html?cid="+cid+"&rname="+rname;
    });

在route_list.html中,重写了截取字符串操作(已提供截取的js文件)

//修改之后
            //获取cid参数值
            var cid = getParameter("cid");
            //获取rname参数值
            var rname = getParameter("rname");
            //当页码加载完成后,调用load方法,发送ajax请求数据
            //rname若不为空,解码
            if(rname){
            	//url解码,防止中文乱码
                rname = window.decodeURIComponent(rname);
            }
            load(cid);

2.修改后端代码

  • Servlet
  • Service
  • Dao
    RouteServlet代码实现
@WebServlet("/route/*")
public class RouteServlet extends BaseServlet {

    private RouteService routeService = new RouteServiceImpl();

    /**
     * 分页查询
     * @param request
     * @param response
     * @throws ServletException
     * @throws IOException
     */
    public void pageQuery(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1.接受参数
        String currentPageStr = request.getParameter("currentPage");
        String pageSizeStr = request.getParameter("pageSize");
        String cidStr = request.getParameter("cid");

        //接受rname 线路名称
        String rname = request.getParameter("rname");
        rname = new String(rname.getBytes("iso-8859-1"),"utf-8");


        int cid = 0;//类别id
        //2.处理参数
        if(cidStr != null && cidStr.length() > 0 && !"null".equals(cidStr)){
            cid = Integer.parseInt(cidStr);
        }
        int currentPage = 0;//当前页码,如果不传递,则默认为第一页
        if(currentPageStr != null && currentPageStr.length() > 0){
            currentPage = Integer.parseInt(currentPageStr);
        }else{
            currentPage = 1;
        }

        int pageSize = 0;//每页显示条数,如果不传递,默认每页显示5条记录
        if(pageSizeStr != null && pageSizeStr.length() > 0){
            pageSize = Integer.parseInt(pageSizeStr);
        }else{
            pageSize = 5;
        }

        //3. 调用service查询PageBean对象
        PageBean<Route> pb = routeService.pageQuery(cid, currentPage, pageSize,rname);

        //4. 将pageBean对象序列化为json,返回
        writeValue(pb,response);

    }
}

RouteService代码实现
在这里插入图片描述

RouteDaoImpl代码实现

@Override
    public int findTotalCount(int cid,String rname) {
        //String sql = "select count(*) from tab_route where cid = ?";
        //1.定义sql模板
        String sql = "select count(*) from tab_route where 1=1 ";
        StringBuilder sb = new StringBuilder(sql);

        List params = new ArrayList();//条件们
        //2.判断参数是否有值
        if(cid != 0){
            sb.append( " and cid = ? ");

            params.add(cid);//添加?对应的值
        }

        if(rname != null && rname.length() > 0){
            sb.append(" and rname like ? ");

            params.add("%"+rname+"%");
        }

        sql = sb.toString();
        return template.queryForObject(sql,Integer.class,params.toArray());
    }

    @Override
    public List<Route> findByPage(int cid, int start, int pageSize,String rname) {
        //String sql = "select * from tab_route where cid = ? and rname like ?  limit ? , ?";
        String sql = " select * from tab_route where 1 = 1 ";
        //1.定义sql模板
        StringBuilder sb = new StringBuilder(sql);

        List params = new ArrayList();//条件们
        //2.判断参数是否有值
        if(cid != 0){
            sb.append( " and cid = ? ");

            params.add(cid);//添加?对应的值
        }

        if(rname != null && rname.length() > 0){
            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>(Route.class),params.toArray());
    }

3.修改前端代码
route.html中在href链接中添加rname属性值:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
【遇到问题】
空指针异常
【解决】cid格式类型错误,修改如下:
在这里插入图片描述


【成功实现线路查询功能】
在这里插入图片描述

转载自原文链接, 如需删除请联系管理员。

原文链接:07 旅游线路查询功能实现,转载请注明来源!

0