旅游线路收藏功能

功能说明

在用户登录的情况下,点击收藏之后会将线路添加到用户收藏中

功能分析

  1. 在route_detail.html加载完成之后会触发isFavorite,查找是否已收藏,并根据回调数据修改收藏按钮
  2. 给收藏按钮添加单击事件,触发favorite函数。
  3. 在函数内发送Ajax请求,携带rid,并在回调函数中判断返回值,做出响应。
  4. FavoriteServlet中获取session中用户数据,如果为null,则直接设置ResultInfo中flag为false,写回数据;如果有值,则获取rid,调用service,携带rid和uid
  5. 在FavoriteService中船舰Date对象,并使用SimpleDateFormat对象设置日期格式,调用dao方法,存入数据

代码实现

前端

function isFavorite(rid){
        $.get("route/isFavorite",{rid:rid},function(info){
            if(!info.flag){
                $("#favorite").html('<a class="btn" οnclick="favorite('+rid+')"><i class="glyphicon glyphicon-heart-empty"></i>点击收藏</a>');
            }else{
                $("#favorite").html('<a  class="btn already" disabled="disabled"><i class="glyphicon glyphicon-heart-empty"></i>点击收藏</a>');
            }
        });
    }
    function favorite(rid){
        $.get("favorite/addFavorite",{rid:rid},function(info){
            if(info.flag){
                location.reload();
            }else{
                location.href="login.html";
            }
        });
    }

Servlet

/**
     * 查看是否已收藏
     * @param req
     * @param resp
     * @throws ServletException
     * @throws IOException
     */
    public void isFavorite(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{
        String ridstr = req.getParameter("rid");
        int rid = Integer.parseInt(ridstr);
        ResultInfo info = new ResultInfo();
        User user = (User)req.getSession().getAttribute("user");
        if(user == null){
            info.setFlag(false);
            writeValue(resp,info);
            return;
        }
        Favorite favorite = routeService.findFavoriteByUid(rid,user.getUid());
        if(favorite == null){
            info.setFlag(false);
            writeValue(resp,info);
            return;
        }
        info.setFlag(true);
        writeValue(resp,info);
    }
@WebServlet("/favorite/*")
public class FavoriteServlet extends BaseServlet {
    private FavoriteService favoriteService = new FavoriteServiceImpl();
    public void addFavorite(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        User user = (User) req.getSession().getAttribute("user");
        ResultInfo info = new ResultInfo();
        if(user == null){
            System.out.println("ppx");
            info.setFlag(false);
            writeValue(resp,info);
            return;
        }
        String ridstr = req.getParameter("rid");
        int rid = Integer.parseInt(ridstr);
        favoriteService.addFavorite(rid,user.getUid());
        info.setFlag(true);
        writeValue(resp,info);
    }
}

Service

/**
     * 根据rid和uid查询收藏
     * @param rid
     * @param uid
     * @return
     */
    @Override
    public Favorite findFavoriteByUid(int rid,int uid) {
        Favorite favorite = favoriteDao.findFavoriteByUid(rid,uid);
        return favorite;
    }
public class FavoriteServiceImpl implements FavoriteService {
    private FavoriteDao favoriteDao = new FavoriteDaoImpl();
    /**
     * 添加收藏
     * @param rid
     * @param uid
     */
    @Override
    public void addFavorite(int rid,int uid) {
        Date date = new Date();
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
        String simpleDate = dateFormat.format(date);
        favoriteDao.addFavorite(rid,simpleDate,uid);
    }
}

Dao

public class FavoriteDaoImpl implements FavoriteDao {
    private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());

    /**
     * 根据rid和uid查询收藏
     * @param rid
     * @param uid
     * @return
     */
    @Override
    public Favorite findFavoriteByUid(int rid, int uid) {
        Favorite favorite = null;
        try{
            String sql = "select * from tab_favorite where rid = ? and uid = ?";
            favorite = template.queryForObject(sql, new BeanPropertyRowMapper<Favorite>(Favorite.class), rid, uid);
        }catch(Exception e){
            e.printStackTrace();
        }
        return favorite;
    }

    @Override
    public void addFavorite(int rid, String date, int uid) {
        String sql = "insert into tab_favorite values(?,?,?)";
        template.update(sql, rid, date, uid);
    }
}

完成

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值