首页 > 其他分享 >《黑马旅游网》综合案例十 旅游线路收藏 判断是否收藏

《黑马旅游网》综合案例十 旅游线路收藏 判断是否收藏

时间:2023-02-21 11:14:54浏览次数:35  
标签:uid int route 收藏 public 旅游网 rid 黑马

旅游线路收藏_判断是否收藏

当页面加载完成后,发送ajax请求,获取用户是否收藏的标记

根据标记,展示不同的按钮样式

分析:

 

后台代码

创建 FavoriteDao 接口

复制代码
public interface FavoriteDao {
    /**
     * 根据rid和uid查询收藏信息
     * @param rid
     * @param uid
     * @return
     */
    public Favorite findByRidAndUid(int rid, int uid);
}
复制代码

创建实现类进行实现  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 (DataAccessException e) {
            e.printStackTrace();
        }
        return favorite;
    }
}
复制代码

创建 FavoriteServlet 接口

复制代码
public interface FavoriteServlet {
    /**
     * 判断是否收藏
     * @param rid
     * @param uid
     * @return
     */
    public boolean isFavorite(String rid,int uid);
}
复制代码

创建实现类进行实现 FavoriteServletImpl

复制代码
public class FavoriteServletImpl implements FavoriteServlet {
    private FavoriteDao favoriteDao = new FavoriteDaoImpl();
    @Override
    public boolean isFavorite(String rid, int uid) {
        Favorite favorite = favoriteDao.findByRidAndUid(Integer.parseInt(rid), uid);
        return favorite!=null;//如果对象有值则为true,反之则为false
    }
}
复制代码

RouteServlet:进行添加

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

 

前台代码

 

 在下面 添加一个函数

复制代码
    $(function () {
        //发送请求,判断用户是否收藏过该线路
        var rid = getParameter("rid");
        $.get("route/isFavorite",{rid:rid},function (flag) {
           if (flag){
               //用户已经收藏过
               //class="btn already" disabled="disabled"
                //设置收藏按钮样式
               $("#favorite").add("already");
               // $("#favorite").prop("disabled",disabled);
               $("#favorite").attr("disabled", "disabled")
         //删除按钮的点击事件
$("#function").removeAttr("onclick"); }else { //用户没有收藏 } }); });
复制代码

 

收藏次数动态展示

在FavoriteDao接口中添加

    /**
     * 根据rid查询收藏次数
     * @param rid
     * @return
     */
    int findCountByRid(int rid);

在这个实现类实现方法 FavoriteDaoImpl

    @Override
    public int findCountByRid(int rid) {
        String sql = "select count(*) from tab_favorite where rid = ?";
        return template.queryForObject(sql,Integer.class,rid);
    }

在RouteServiceImpl 中编写

复制代码
private FavoriteDao favoriteDao = new FavoriteDaoImpl();


@Override public Route findOne(String rid) { //根据id去route表中查询route对象 Route route = routeDao.findOne(Integer.parseInt(rid)); //根据route的id查询图片集合信息 List<RouteImg> routeImgList = routeImgDao.findByRid(route.getRid()); //将集合设置到route对象 route.setRouteImgList(routeImgList); //根据route的id查询卖家的信息 Seller seller = sellerDao.findById(route.getSid()); route.setSeller(seller); //查询收藏次数 int count = favoriteDao.findCountByRid(route.getRid()); route.setCount(count); return route; }
复制代码

route_detail.html:

 

 

标签:uid,int,route,收藏,public,旅游网,rid,黑马
From: https://www.cnblogs.com/yu3304/p/17140187.html

相关文章

  • 《黑马旅游网》综合案例九 旅游线路详情
    旅游线路详情分析:后台代码 RouteServlet:编写一个findOne方法/***根据id查询一个旅游线路的详细详细*@paramrequest*@paramresponse......
  • 《黑马旅游网》综合案登录功能后台
    登录功能分析:   Servlet层:@WebServlet("/loginServlet")publicclassLoginServletextendsHttpServlet{protectedvoiddoPost(HttpServletRequestreq......
  • 《黑马旅游网》综合案例注册功能后台
    Servlet代码实现UserDao:publicinterfaceUserDao{/***根据用户名查询用户信息*@paramusername*@return*/publicUserfindBy......
  • 《黑马旅游网》综合案例八 分页数据展示-前台代码
    类别id传递点击了不同的分类后将来看到的旅游线路不一样的。通过分析数据库表结构,发现旅游线路表和分类表是一个多对一的关系   CategoryServiceImpl实现类:pub......
  • sqlserver本机数据库开放外部访问【copy收藏】
    一)首先是要检查SQLServer数据库服务器中是否允许远程链接。其具体操作为:(1)打开数据库,用本地帐户登录,右击第一个选项,选择属性:   (2)在打开的属性窗口,在其右边点击“连......
  • 商标干货!所有企业都值得收藏!
    商标,是用于识别和区分不同商品或服务来源的标志,代表了企业的产品质量和服务保证,可以说,商标承载了一个企业的信誉,是企业参与市场竞争的重要工具,对于企业及其产品的重要性不言......
  • 《黑马旅游网》综合案例七 分类展示功能缓存
    对分类数据进行缓存优化分析发现,分类的数据在每一次页面加载后都会重新请求数据库来加载,对数据库的压力比较大,而且分类的数据不会经常产生变化,所有可以使用redis来缓存这......
  • 我的收藏周刊047
    文章分享SDKLT@BroadcomsdkltintroSDKLT:LogicalTable-BasedSwitchDevelopmentKitLastversioncompatiblewithWindowsXPintortoisegittortoisegit......
  • 开发软件收藏夹
    说明此篇收藏的是平时开发时候常见的收藏夹,有一些已经涉水,有的是待学习和开发。2019年10月16日10:15:13​​在线h5制作github登录​​2019年6月21日​​markdown前端代码......
  • Java代码工具快速生成词云图(强烈建议收藏)
    “词云”一词最早是由美国西北大学新闻学副教授、新媒体专业主任里奇戈登(RichGordon)提出的。词云(WordCloud),又称文字云、标签云(TagCloud)、关键词云(KeywordCloud),是对文本......