黑马旅游网编写练习(9)--旅游线路收藏功能

本文介绍了黑马旅游网旅游线路收藏功能的实现过程,包括后台信息编写、前端数据传递、收藏按钮样式展示、收藏次数显示及收藏功能的具体实现。详细阐述了web、service和dao层的代码编写,以及前端Ajax请求和页面更新的细节。
摘要由CSDN通过智能技术生成

黑马旅游网编写练习(9)–旅游线路收藏功能

旅游线路收藏功能分析
在旅游详情页面,用户点击收藏按钮后,我们向服务器发送Ajax请求;然后查询用户是否登录;若用户已登录,则需要查询数据库表格判断该用户是否收藏了该线路;若收藏成功,则返回标记,前端根据该标记修改收藏按钮的样式。

数据库表格关系分析
用户收藏线路,涉及到三个表格;一个是用户的表格tab_user;一个是旅游线路tab_route;还有一个是用户收藏表格tab_favorite。先来观察这三个表格之间的关系。
收藏线路表格分析

tab_favorite表格中rid代表某一条旅游线路;uid代表用户信息。所以在前台向服务器发送Ajax请求时,需要传递的参数是rid;uid可以通过查询当前登录用户来查询。而用户是否收藏该线路则只需要查询tab_favorite表格中是否存在满足rid和uid的信息。

接下来先开始编写后台信息

首先开始编写web层,在RouteServlet中编写一个查询是否收藏的方法;该方法主要代码如下:

    /**
     * 判断用户是否已经收藏了该线路
     * @param request
     * @param response
     * @throws IOException
     */
    public void isFavorite(HttpServletRequest request, HttpServletResponse response) throws IOException {
   
        // 获取线路的rid参数
        String rid_str = request.getParameter("rid");
        if(rid_str == null || rid_str.length() == 0 || rid_str.equals("null")){
   
            // rid_str为空
            System.out.println("rid_str为空");
            return;
        }
        int rid = Integer.parseInt(rid_str);

        // 判断用户是否登录
        User user = (User) request.getSession().getAttribute("user");
        int uid = 0;
        if(user == null){
   
            // 用户未登录
            System.out.println("用户未登录,请先登录");
            return;
        }else{
   
            // 用户已登录,获取用户的uid
            uid = user.getUid();
        }

        // 调用FavoriteService查询线路rid是否被用户uid收藏
        boolean flag = favoriteService.isFavorite(rid, uid);

        // 将该收藏标志信息返回给客户端
        responseJson(response,flag);

    }

接下来开始编写service层,该层实现一个判断线路rid是否被用户uid收藏的方法,主要代码如下:

    // 创建FavoriteDao对象
    FavoriteDao favoriteDao = new FavoriteDaoImpl();

    /**
     * 判断线路rid是否被用户uid收藏
     * @param rid
     * @param uid
     * @return
     */
    @Override
    public boolean isFavorite(int rid, int uid) {
   

        // 创建一个favorite对象,存储查询结果
        Favorite favorite = null;

        // 调用FavoriteDao,查询tab_favorite表
        favorite = favoriteDao.findByRidAndUid(rid, uid);

        if(favorite == null){
   
            // 查询失败
            return false;
        }else{
   
            // 查询成功
            return true;
        }

    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值