天天看点

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

今日任务

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

cookie的方式进行跨域

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

1.先找到对应的服务器 sso

jsonp 是http协议

判断在哪里写 还是看Js前端给的url地址

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

用户登出操作

登出分析

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

还得删除cookie和redis里面的数据(要得到key)

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

然后执行删除操作

自我实现

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

同域 判断 写在自家web服务器上

jt-web

@Autowired
private JedisCluster jedisCluster;


/**
     * 实现用户的登出操作  要求删除cookie 和redis中的数据(key)
     * 步骤: 通过cookie获取ticket信息.
     * url: http://www.jt.com/user/logout.html
     * 参数: 暂时没有
     * 返回值: 重定向到系统首页
     */
    @RequestMapping("/logout")
    public String logout(HttpServletRequest request, HttpServletResponse response) {

        Cookie[] cookies = request.getCookies();
        if (cookies != null && cookies.length > 0) {
            for (Cookie cookie : cookies) {
                if ("JT_TICKET".equals(cookie.getName())) {
                    //获取value之后删除cookie
                    String ticket = cookie.getValue();
                    jedisCluster.del(ticket);   //删除redis中的数据
                    //删除cookie时 必须与原来的cookie数据保持一致
                    cookie.setDomain("jt.com");
                    cookie.setPath("/");
                    cookie.setMaxAge(0);
                    response.addCookie(cookie);
                    break;
                }
            }
        }

        return "redirect:/";


    }
           
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

实现成功

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

业务不同 不能泛化 不修改原有的分布式架构或者其他业务 在上面添加微服务架构

改对了不是你的功劳 改错了就是你的锅

restful风格

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

后缀重复了

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

继续

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

写一个工具API

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

获得cookie对象

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

获得cookie对象的值

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

新增Cookie方法

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

删除Cookie方法

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

写完重复的调用就行

简化代码的调用

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

41分之前 一句话分析 if(!StringUtils.isEmpty(ticket)){

自我实现

提高服用 jt-common

编写工具API

package com.jt.util;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class CookieUtil {

    /**
     * 该工具API主要的任务
     *      1.根据cookie的名称 返回cookie对象
     *      2.根据cookie的名称 返回valve的值
     *      3.新增cookie方法
     *      4.删除cookie方法
     */
    public static Cookie getCookie(String cookieName, HttpServletRequest request){
        Cookie[] cookies = request.getCookies();
        if(cookies !=null && cookies.length >0) {
            for (Cookie cookie : cookies) {
                if (cookieName.equals(cookie.getName())) {
                    return cookie;
                }
            }
        }
        return null ;
    }

    public static String getCookieValue(String cookieName,HttpServletRequest request){
        Cookie cookie = getCookie(cookieName, request);
        return cookie ==null?null:cookie.getValue();
    }

    public static void addCookie(String cookieName, String cookieValue, String path,
                                 String domain, int maxAge, HttpServletResponse response){
        Cookie cookie = new Cookie(cookieName,cookieValue);
        cookie.setPath(path);
        cookie.setDomain(domain);
        cookie.setMaxAge(maxAge);
        response.addCookie(cookie);
    }

    public static void deleteCookie(String cookieName,String path,
                                    String domain,HttpServletResponse response){

        addCookie(cookieName,"",path, domain, 0, response);
    }

}

           

web里面的controller层

晚上 去理解

/**
     * 实现用户的登出操作  要求删除cookie 和redis中的数据(key)
     * 步骤: 通过cookie获取ticket信息.
     * url: http://www.jt.com/user/logout.html
     * 参数: 暂时没有
     * 返回值: 重定向到系统首页
     */
    @RequestMapping("/logout")
    public String logout(HttpServletRequest request,HttpServletResponse response){
        String ticket = CookieUtil.getCookieValue("JT_TICKET", request);
        if(!StringUtils.isEmpty(ticket)){
            jedisCluster.del(ticket);
            CookieUtil.deleteCookie("JT_TICKET","/","jt.com",response);
        }
        return "redirect:/";
    }










    /*
    public String logout(HttpServletRequest request, HttpServletResponse response) {

        Cookie[] cookies = request.getCookies();
        if (cookies != null && cookies.length > 0) {
            for (Cookie cookie : cookies) {
                if ("JT_TICKET".equals(cookie.getName())) {
                    //获取value之后删除cookie
                    String ticket = cookie.getValue();
                    jedisCluster.del(ticket);   //删除redis中的数据
                    //删除cookie时 必须与原来的cookie数据保持一致
                    cookie.setDomain("jt.com");
                    cookie.setPath("/");
                    cookie.setMaxAge(0);
                    response.addCookie(cookie);
                    break;
                }
            }
        }

        return "redirect:/";


    }*/
           
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

删除成功 工具类生效

购物车模块

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

新建模块

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
id                   bigint(20) not null auto_increment,
   user_id              bigint(20),
   item_id              bigint(20),
   item_title           varchar(100),
   item_image           varchar(200),
   item_price           bigint(20) comment '单位:分',
   num                  int(10),
   created              datetime,
   updated              datetime,
   primary key (id),
   key AK_user_itemId (user_id, item_id)
           

添加实现类加接口

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

自我实现 新建jt-cart

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

新建pojo 在jt-common里面

package com.jt.pojo;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.experimental.Accessors;

@TableName("tb_cart")
@Data
@Accessors(chain = true)
public class Cart extends BasePojo{

    @TableId(type = IdType.AUTO)
    private Long id;            //主键自增
    private Long userId;        //用户id
    private Long itemId;        //商品id
    private String itemTitle;
    private String itemImage;
    private Long itemPrice;
    private Integer num;
}

           

依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <artifactId>jt-cart</artifactId>

    <parent>
        <artifactId>jt</artifactId>
        <groupId>org.example</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <!--添加依赖项-->
    <dependencies>
        <dependency>
            <groupId>org.example</groupId>
            <artifactId>jt-common</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>

    <!--添加插件-->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>
           

yml配置文件

server:
  port: 8094
  servlet:
    context-path: /
spring:
  datasource:
    #引入druid数据源
    #type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/jtdb?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
    username: root
    password: root

  #提供了MVC的支持
  mvc:
    view:
      prefix: /WEB-INF/views/
      suffix: .jsp

#mybatis-plush配置
mybatis-plus:
  type-aliases-package: com.jt.pojo
  mapper-locations: classpath:/mybatis/mappers/*.xml
  configuration:
    map-underscore-to-camel-case: true

logging:
  level:
    com.jt.mapper: debug

#关于Dubbo配置
dubbo:
  scan:
    basePackages: com.jt    #指定dubbo的包路径
  application:              #应用名称
    name: provider-cart     #一个接口对应一个服务名称
  registry:                 #zk集群 主机中的信息与从机中的信息一致的 从zk中获取数据的时候链接的从机 主机的作用就是监控集群
    address: zookeeper://192.168.126.129:2181?backup=192.168.126.129:2182,192.168.126.129:2183
  protocol:  #指定协议
    name: dubbo  #使用dubbo协议(tcp-ip)  web-controller直接调用sso-Service
    port: 20881  #每一个服务都有自己特定的端口 不能重复.

           

jt-cart提供者实现类

package com.jt.service;

import com.alibaba.dubbo.config.annotation.Service;
import com.jt.mapper.CartMapper;
import org.springframework.beans.factory.annotation.Autowired;

@Service
public class DubboCartServiceImpl implements DubboCartService{

    @Autowired
    private CartMapper cartMapper;





}

           

dao层

package com.jt.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jt.pojo.Cart;

public interface CartMapper extends BaseMapper<Cart> {

}

           

11.20前 命令

中午去找回那一行命令

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

继续

自我实现

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

购物车结算实现 购物车列表展现

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

页面分析 是本域的 需写在本系统 web前端服务器里面

url分析

Request URL: http://www.jt.com/cart/show.html
           
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

2.业务说明

了解

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

同域 在web里面写

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

页面需求 取值

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

自我实现

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

如上图 可以完成商品购物车跳转 但是购物车中的商品信息不能显示出来

继续 完成列表展现

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

如上图 长时间不用 怕数据滞后

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

域对象的理解

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

换上 因为还没做新增 没有自己家的图

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

要根据用户和商品id才行 itemId和userId

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

自我实现 回显购物车数据

顺序开始

同域 web前端服务器

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

jt-common接口

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

jt-cart 提供者 实现类

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

页面效果

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

完美显现出来

下午

购物车的数量修改

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
itemNumChange : function(){
		$(".increment").click(function(){//+
			var _thisInput = $(this).siblings("input");
			_thisInput.val(eval(_thisInput.val()) + 1);
			$.post("/cart/update/num/"+_thisInput.attr("itemId")+"/"+_thisInput.val(),function(data){
				TTCart.refreshTotalPrice();
			});
		});
		$(".decrement").click(function(){//-
			var _thisInput = $(this).siblings("input");
			if(eval(_thisInput.val()) == 1){
				return ;
			}
			_thisInput.val(eval(_thisInput.val()) - 1);
			$.post("/cart/update/num/"+_thisInput.attr("itemId")+"/"+_thisInput.val(),function(data){
				TTCart.refreshTotalPrice();
			});
		});
		$(".quantity-form .quantity-text").rnumber(1);//限制只能输入数字
		$(".quantity-form .quantity-text").change(function(){
			var _thisInput = $(this);
			$.post("/cart/update/num/"+_thisInput.attr("itemId")+"/"+_thisInput.val(),function(data){
				TTCart.refreshTotalPrice();
			});
		});
	},
           
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

controller分析

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

自我实现

脚手架开始 同域名 web 的controller开始

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

jt-common 接口

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

实现类 jt-cart

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

页面实现

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

刷新

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

ps

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

写sql逻辑的适合 脑子里先过一遍 我要达成什么逻辑之类的

购物车的删除

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

分析 要重定向到列表页面

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

重定向到列表页面

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

如上图 更新操作就动了userId和itemId 所以where cart就是条件构造

自我实现

脚手架

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

页面效果

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

操了 没了 删无了

实现商品详情的展现

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

利用dubbo

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

自我改造

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

改造成微服务架构完成

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

页面的取值问题

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

域对象得先存一个item对象了

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

编辑Controller(要做新增购物车列表数据)

同域名 在web写

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

自我实现

url分析 同域

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

页面详情显示成功

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

ps:

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

延申

购物车的新增操作

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

ctrl+F

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

小点

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

为了页面取值方便 想要数组

分析controller 购物车

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

自我实现

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

实现类分析

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

自我实现 接上上面

jt-common接口

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

jt-cart 提供者

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

jt-cart dao层

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

页面实现

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

原有数目上 num叠加 不入库

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

完美实现

作业

拦截器

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

拦截器的具体应用

CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除
CGB2005 0918 jt19用户登出操作登出分析购物车模块购物车的删除

业务至上 不要耦合