旅游线路收藏
判断当前登录用户是否收藏过该线路
当页面加载完成后,发送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); }
FavoriteService接口:
public interface FavoriteService { /** * 判断是否收藏 * @param rid * @param uid * @return */ public boolean isFavorite(String rid,int uid); }
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;//如果对象有值,则为true,反之则为false } }
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.class), rid, uid); } catch (DataAccessException e) { // e.printStackTrace(); } return favorite; } }
前台代码
Route_detail.html页面:
$(function () { //发送请求,判断用户是否收藏过该线路 var rid = getParameter("rid"); $.get("route/isFavorite",{rid:rid},function (flag) { if (flag){ //用户已经收藏过了 //设置收藏按钮的样式 //<a class="btn already" disabled="disabled"> $("#favorite").addClass("already") $("#favorite").prop("disabled",disabled); }else { //用户没有收藏 } }); });
收藏次数动态展示
FavoriteDao接口:
/** * 根据线路id查询收藏次数 * @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实现类:
@Override public Route findOne(String rid) { //1、根据id去route表中查询route对象 Route route = routeDao.findOne(Integer.parseInt(rid)); //2、根据route的id查询图片集合信息 List<RouteImg> routeImgList = routeImgDao.findByRid(route.getRid()); //将集合设置到route对象 route.setRouteImgList(routeImgList); //3、根据route的sid(商家id)查询商家对象 Seller seller = sellerDao.findById(route.getSid()); route.setSeller(seller); //4、查询收藏次数 int count = favoriteDao.findCountByRid(route.getRid()); route.setCount(count); return route; }
route_detail.html页面:
//2、发送请求,请求route/findOne $.get("route/findOne",{rid:rid},function (route) { //3、解析数据,填充html $("#rname").html(route.rname); $("#routeIntroduce").html(route.routeIntroduce); $("#price").html("¥"+route.price); $("#sname").html(route.seller.sname); $("#consphone").html(route.seller.consphone); $("#address").html(route.seller.address); //设置收藏次数 $("#favoriteCount").html("已收藏"+route.count+"次");
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)