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

黑马旅游网学习笔记之旅游线路收藏(九)

程序员文章站 2022-04-03 19:36:05
...

概述

(一)判断是否收藏过该线路需求分析
(二)后台代码:判断是否收藏过该线路
(三)前台代码:判断是否收藏过该线路
(四)收藏次数动态展示
(五)点击按钮收藏需求分析
(六)后台代码:点击按钮收藏
(七)前台代码:点击按钮收藏
(八)前台效果优化

(一)判断是否收藏过该线路需求分析

当页面加载完成后,发送ajax请求,获取用户是否收藏的标记
根据标记,展示不同的按钮样式
黑马旅游网学习笔记之旅游线路收藏(九)
黑马旅游网学习笔记之旅游线路收藏(九)

(二)后台代码:判断是否收藏过该线路

RouteServlet:

    /**
     * 判断当前登录用户是否收藏过该线路
     *
     * @param request
     * @param response
     * @throws ServletException
     * @throws IOException
     */
    public void isFavorite(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1.获取线路id
        String rid = request.getParameter("rid");
        //2.获取当前登录的用户 user
        User user = (User) request.getSession().getAttribute("user");
        int uid;//用户的id
        if (user == null) {
            //用户尚未登录
            uid = 0;
        } else {
            //用户已经登录
            uid = user.getUid();
        }
        //3.调用FavoriteService查询是否收藏
        boolean flag = favoriteService.isFavorite(rid, uid);
        //4.写回客户端
        writeValue(flag, response);
    }

FavoriteServiceImpl:

public class FavoriteServiceImpl implements FavoriteService {

    private FavoriteDao favoriteDao = new FavoriteDaoImpl();

    @Override
    public boolean isFavorite(String rid, int uid) {
        Favorite favorite = favoriteDao.findByRidAndUid(Integer.parseInt(rid), uid);

        return favorite != null;//如果对象有值,表示已经收藏过了,则为ture
    }
}

FavoriteDaoImpl:

public class FavoriteDaoImpl implements FavoriteDao {

    private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());

    @Override
    public Favorite findByRidAndUid(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;
    }
}

(三)前台代码:判断是否收藏过该线路

前台代码略

(四)收藏次数动态展示

其实Route类里面已经有收藏次数这个字段了
黑马旅游网学习笔记之旅游线路收藏(九)
黑马旅游网学习笔记之旅游线路收藏(九)
黑马旅游网学习笔记之旅游线路收藏(九)

(五)点击按钮收藏需求分析

黑马旅游网学习笔记之旅游线路收藏(九)

(六)后台代码:点击按钮收藏

RouteServlet:

    /**
     * 添加收藏
     *
     * @param request
     * @param response
     * @throws ServletException
     * @throws IOException
     */
    public void addFavorite(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1.获取线路rid
        String rid = request.getParameter("rid");
        //2.获取当前登录的用户 user
        User user = (User) request.getSession().getAttribute("user");
        int uid;//用户的id
        if (user == null) {
            //用户尚未登录
            return;
        } else {
            //用户已经登录
            uid = user.getUid();
        }
        //3.调用service添加
        favoriteService.add(rid, uid);
    }

FavoriteServiceImpl:

        @Override
        public void add(String rid, int uid) {
            favoriteDao.add(Integer.parseInt(rid), uid);
        }

FavoriteDaoImpl:

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

(七)前台代码:点击按钮收藏

前台代码略

(八)前台效果优化

前台代码略

相关标签: 黑马旅游网