淘淘商城项目_12
课程计划
- 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
<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>
<parent>
<groupId>com.taotao</groupId>
<artifactId>taotao-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>taotao-cart</artifactId>
<packaging>pom</packaging>
<dependencies>
<!-- 配置对taotao-common的依赖-->
<dependency>
<groupId>com.taotao</groupId>
<artifactId>taotao-common</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<plugins>
<!-- 配置Tomcat插件 -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<configuration>
<port>8089</port>
<path>/</path>
</configuration>
</plugin>
</plugins>
</build>
</project>
2.2.2、taotao-cart-interface
New --> Other–> Maven Module --> 不使用骨架创建
千万不要创建成Maven Project。
taotao-cart-interface打包方式jar。
pom.xml
<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>
<parent>
<groupId>com.taotao</groupId>
<artifactId>taotao-cart</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>taotao-cart-interface</artifactId>
<dependencies>
<!-- 配置对taotao-manager-pojo的依赖 -->
<dependency>
<groupId>com.taotao</groupId>
<artifactId>taotao-manager-pojo</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
2.2.3、taotao-cart-service
New --> Other–> Maven Module --> 不使用骨架创建
千万不要创建成Maven Project。
taotao-cart-service打包方式war。
pom.xml
<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>
<parent>
<groupId>com.taotao</groupId>
<artifactId>taotao-cart</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>taotao-cart-service</artifactId>
<packaging>war</packaging>
<dependencies>
<!-- 配置对taotao-manager-dao的依赖 -->
<dependency>
<groupId>com.taotao</groupId>
<artifactId>taotao-manager-dao</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<!-- 配置对taotao-cart-interface的依赖:服务层发布服务要通过该接口 -->
<dependency>
<groupId>com.taotao</groupId>
<artifactId>taotao-cart-interface</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<!-- 配置对spring的依赖 -->
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
</dependency>
<!-- 配置对dubbo的依赖 -->
<!-- dubbo相关 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<!-- 排除对低版本jar包的依赖 -->
<exclusions>
<exclusion>
<artifactId>spring</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
<exclusion>
<artifactId>netty</artifactId>
<groupId>org.jboss.netty</