Caso completo de "Dark Horse Travel Network" Día 04

Caso completo de "Dark Horse Travel Network" Día 04

  1. Función de recogida de rutas turísticas

    14.1 Análisis
    Inserte la descripción de la imagen aquí
    Inserte la descripción de la imagen aquí
    14.1.1 Determine si el usuario que ha iniciado sesión actualmente ha marcado la línea como favorita

    Cuando se cargue la página, envíe una solicitud ajax para obtener la marca de si el usuario es favorito

    Según la marca, muestra diferentes estilos de botones.

    14.2 Código de escritura

    14.2.1 Código de fondo

    RouteServlet

    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

    @Override
    public boolean isFavorite(String rid, int uid) {
          
          
    
        Favorite favorite = favoriteDao.findByRidAndUid(Integer.parseInt(rid), uid);
    
        return favorite != null;//如果对象有值,则为true,反之,则为false
    }
    

    FavoriteDao

    @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;
    }
    

    14.2.2 Código de recepción

    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{
          
          
                //用户没有收藏
            }
        });
    });
    

    14.3 Visualización dinámica de favoritos

    Mostrador:

    //设置收藏次数
    $("#favoriteCount").html("已收藏"+route.count+"次");
    

    Entre bastidores:

    RouteService

    @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());
        //2.2将集合设置到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;
    }
    

    FavoriteDao

    @Override
    public int findCountByRid(int rid) {
          
          
        String sql = "SELECT COUNT(*) FROM tab_favorite WHERE rid = ?";
    
        return template.queryForObject(sql,Integer.class,rid);
    }
    

    14.4 Haga clic en el botón para marcar la línea

    14.4.1 Análisis:
    Inserte la descripción de la imagen aquí

    14.4.2 Codificación

    Código de recepción

    $(function () {
          
          
       // 发送请求,判断用户是否收藏过该线路
        var rid = getParameter("rid");
        $.get("route/isFavorite",{
          
          rid:rid},function (flag) {
          
          
            if(flag){
          
          
                // 用户已经收藏过
                //<a  class="btn already" disabled="disabled">
                //设置收藏按钮的样式
                $("#favorite").addClass("already");
                $("#favorite").attr("disabled","disabled");
    
                //删除按钮的点击事件
                $("#favorite").removeAttr("onclick");
            }else{
          
          
                // 用户没有收藏
            }
        });
    });
    
    //点击收藏按钮触发的方法
    function addFavorite(){
          
          
        var rid = getParameter("rid");
        //1. 判断用户是否登录
        $.get("user/findOne",{
          
          },function (user) {
          
          
           if(user){
          
          
               //用户登录了
                //添加功能
                $.get("route/addFavorite",{
          
          rid:rid},function () {
          
          
    
                    //代码刷新页面
                    location.reload();
                });
    
           }else{
          
          
               //用户没有登录
               alert("您尚未登录,请登录");
               location.href="http://localhost/travel/login.html";
           }
        })
    }
    

    Código detrás

    RouteServlet

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

    FavoriteService

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

    FavoriteDao

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

Descarga el código del proyecto completo

Supongo que te gusta

Origin blog.csdn.net/weixin_44505194/article/details/105684706
Recomendado
Clasificación