文章目录
1、购物车流程
1.1、以前的购物车流程
1.2、现在的购物车流程
2、商城购物车系统的搭建
2.1、购物车系统的架构
2.2、服务层工程搭建
2.3、表现层工程搭建
3、商城购物车系统的实现分析
3.1、购物车如何表示?
3.2、怎么将购物车存入cookie中?
3.3、使用哪种redis数据结构存放购物车?
3.4、创建POJO
4、商城购物车系统实现的准备工作
4.1、修改所有登录注册的url
4.2、修改所有回显用户名的url
4.3、修改所有安全退出的url
5、实现登录与未登录状态下添加商品到购物车
5.1、导入静态资源
5.2、修改商品详情页
5.3、登录状态下添加购物车
5.4、未登录状态下添加购物车
6、实现登录与未登录状态下展示购物车列表
6.1、功能分析
6.2、dao层
6.3、service层
6.4、发布服务与引用服务
6.5、Controller
6.6、访问测试
7、实现登录与未登录状态下更新购物车的商品数量
7.1、更新购物车的商品数量的js分析
7.2、dao层
7.3、service层
7.4、发布服务与引用服务
7.5、Controller
7.6、访问测试
8、实现登录与未登录状态下删除购物车中的商品
8.1、功能分析
8.2、dao层
8.3、service层
8.4、发布服务与引用服务
8.5、Controller
8.6、访问测试
 
课程计划
1、购物车的流程
2、购物车的实现
a) 登录状态下的购物车实现
b) 未登录状态下的购物车实现
回到顶部
1、购物车流程
1.1、以前的购物车流程
用户将商品添加到购物车时,判断用户是否登录,如果已经登录将购物车放入session中。
存在的问题:
  购物车使用了session,而session是存在于内存资源中,消耗了大量的内存资源。非常不好。
  购物车存在session当中,如果session销毁(浏览器关闭),购物车就没有了。
  session无法共享,无法进行水平扩展。
    解决方案:给购物车做持久化。
    持久化,需要用到数据库(把数据存储到服务端,较安全)。
    a、mysql数据库(数据完整性比较好)
    b、redis数据库(读写速度快)
  用户未登录的时候不能添加购物车。
    解决方案:未登录的状态下,可以把购物车放在cookie中。
  在不登陆的情况下添加购物车。把购物车信息写入cookie。(数据保存在客户端,数据完整性差)。
  优点:
    1、不占用服务端存储空间。
    2、用户体验好。
    3、代码实现简单。
  缺点:
    1、cookie中保存的容量有限。最大4k。
    2、把购物车信息保存在cookie中,更换设备购物车信息不能同步。
  这里我们不使用这种方法。
1.2、现在的购物车流程
对于未登陆用户,将购物车放到cookie中。对于已登陆用户将购物车放入redis缓存中。可以实现,用户未登录或者登录状况下的添加购物车(并进行购物车的增删查改)。
回到顶部
2、商城购物车系统的搭建
2.1、购物车系统的架构
购物车系统架构:
taotao-cart(pom聚合工程)
  |--taotao-cart-interface(jar)
  |--taotao-cart-Service(war)
taotao-cart-web(war)
可以参考taotao-manager、taotao-manager-web创建。
2.2、服务层工程搭建
2.2.1、taotao-cart
taotao-cart打包方式pom。
可以参考taotao-manager工程的创建。
New --> Maven Project --> 不使用骨架创建工程 --> Next
pom.xml
    4.0.0
    
        com.taotao
        taotao-parent
        0.0.1-SNAPSHOT
    
    taotao-cart
    pom
    
        
        
            com.taotao
            taotao-common
            0.0.1-SNAPSHOT
        
    
    
        
            
            
                org.apache.tomcat.maven
                tomcat7-maven-plugin
                
                    8089
                    /
                
            
        
    
2.2.2、taotao-cart-interface
New --> Other--> Maven Module --> 不使用骨架创建
千万不要创建成Maven Project。
taotao-cart-interface打包方式jar。
pom.xml
    4.0.0
    
        com.taotao
        taotao-cart
        0.0.1-SNAPSHOT
    
    taotao-cart-interface
    
        
        
            com.taotao
            taotao-manager-pojo
            0.0.1-SNAPSHOT
        
    
2.2.3、taotao-cart-service
New --> Other--> Maven Module --> 不使用骨架创建
千万不要创建成Maven Project。
taotao-cart-service打包方式war。
pom.xml
    4.0.0
    
        com.taotao
        taotao-cart
        0.0.1-SNAPSHOT
    
    taotao-cart-service
    war
    
        
        
            com.taotao
            taotao-manager-dao
            0.0.1-SNAPSHOT
        
        
        
            com.taotao
            taotao-cart-interface
            0.0.1-SNAPSHOT
        
        
        
        
            org.springframework
            spring-context
        
        
            org.springframework
            spring-beans
        
        
            org.springframework
            spring-webmvc
        
        
            org.springframework
            spring-jdbc
        
        
            org.springframework
            spring-aspects
        
        
            org.springframework
            spring-jms
        
        
            org.springframework
            spring-context-support
        
        
        
        
            com.alibaba
            dubbo
            
            
                
                    spring
                    org.springframework
                
                
                    netty
                    org.jboss.netty
                
            
        
        
            org.apache.zookeeper
            zookeeper
        
        
            com.github.sgroschupf
            zkclient
        
        
        
            redis.clients
            jedis
        
    
    
        
            
            
                org.apache.maven.plugins
                maven-surefire-plugin
                
                    true
                
            
        
    
由于没有web.xml,打包方式为war的项目会报错。
右键项目taotao-cart-service --> Java EE Tools --> Generate … xxx,会自动帮我们生成web.xml,
在web.xml中配置spring的监听器,内容如下:
web.xml
    taotao-cart-service
    
        index.jsp
    
    
    
        contextConfigLocation
        classpath:spring/applicationContext*.xml
    
    
        org.springframework.web.context.ContextLoaderListener
    
2.2.4、框架整合
将taotao-manager-service的src/main/resources下的配置文件全部复制到taotao-cart-service的src/main/resources中
删除或清空与数据库相关的配置文件,因为购物车主要使用redis缓存,所以需要将redis的工具类添加进来:
修改applicationContext-service.xml中spring注解包扫描的类与dubbo暴露服务的端口:
在taotao-cart-interface工程的src/main/java中创建com.taotao.cart.service包;
在taotao-cart-service工程的src/main/java中创建com.taotao.cart.service.impl包。
2.3、表现层工程搭建
2.3.1、taotao-cart-web
表现层为一个单独的工程,所以需要创建Maven Project。
New --> Maven Project
千万不要创建成Maven Module。
taotao-cart-web的打包方式是war。
pom.xml
    4.0.0
    
        com.taotao
        taotao-parent
        0.0.1-SNAPSHOT
    
    taotao-cart-web
    war
    
        
        
            com.taotao
            taotao-common
            0.0.1-SNAPSHOT
        
        
        
            com.taotao
            taotao-manager-interface
            0.0.1-SNAPSHOT
        
        
        
        
            org.springframework
            spring-context
        
        
            org.springframework
            spring-beans
        
        
            org.springframework
            spring-webmvc
        
        
            org.springframework
            spring-jdbc
        
        
            org.springframework
            spring-aspects
        
        
            org.springframework
            spring-jms
        
        
            org.springframework
            spring-context-support
        
        
        
            jstl
            jstl
        
        
            javax.servlet
            servlet-api
            provided
        
        
            javax.servlet
            jsp-api
            provided
        
        
        
            commons-fileupload
            commons-fileupload
        
        
        
            com.github.pagehelper
            pagehelper
        
        
        
        
            com.alibaba
            dubbo
            
            
                
                    spring
                    org.springframework
                
                
                    netty
                    org.jboss.netty
                
            
        
        
            org.apache.zookeeper
            zookeeper
        
        
            com.github.sgroschupf
            zkclient
        
        
            junit
            junit
        
    
    
        
            
            
                org.apache.tomcat.maven
                tomcat7-maven-plugin
                
                    8090
                    /
                
            
            
            
                org.apache.maven.plugins
                maven-surefire-plugin
                
                    true
                
            
        
    
web.xml
                        关键字: