(一)判断是否收藏过该线路需求分析
(二)后台代码:判断是否收藏过该线路
(三)前台代码:判断是否收藏过该线路
(四)收藏次数动态展示
(五)点击按钮收藏需求分析
(六)后台代码:点击按钮收藏
(七)前台代码:点击按钮收藏
(八)前台效果优化
当页面加载完成后,发送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;
}
}
前台代码略
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);
}
前台代码略
前台代码略