1. 程式人生 > >學習淘淘商城第九十六課(購物車實現分析及工程搭建)

學習淘淘商城第九十六課(購物車實現分析及工程搭建)

        關於購物車模組,京東和淘寶並不一樣,京東允許使用者在沒有登入的情況下就使用購物車,而且加到購物車裡面的商品可以一直儲存著(其實是放到了Cookie當中,如果清空了Cookie也就清空購物車了)。而淘寶則是必須先登入才能將商品新增到購物車當中,就使用者體驗來說,京東的購物車模組使用者體驗更好。

        我們看下京東購物車,如下圖所示,可以看到域名是cart.jd.com,這與商品詳情頁面的item.jd.com是不一樣的,說明京東的購物車模組是個單獨的工程。


         我們搭建購物車工程只需要搭建web工程就可以了,不需要服務端,這是因為購物車裡面的商品資訊,我們可以通過taotao-manager服務來獲取。

         下面我們便新建taotao-cart-web工程,File----->New---->Other....,如下圖所示


         會看到如下圖所示對話方塊,點選"Maven Project",然後點選"Next"。


          勾選最上面的複選框,然後點選"Next",如下圖所示。


         工程名就叫taotao-cart-web,打包方式是war,如下圖所示。


         下面我們便配置下pom.xml檔案,我們可以參考taotao-item-web工程的pom.xml檔案,把freemarker和activemq的依賴去掉,因為購物車模組用不到這些。然後將tomcat外掛的埠號改為8089,修改完後taotao-cart-web的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>
  <groupId>com.taotao</groupId>
  <artifactId>taotao-cart-web</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  
  <dependencies>
    <!-- 依賴taotao-common -->
    <dependency>
    	<groupId>com.taotao</groupId>
		<artifactId>taotao-common</artifactId>
		<version>0.0.1-SNAPSHOT</version>
    </dependency>
    <dependency>  
        <groupId>com.taotao</groupId>  
        <artifactId>taotao-manager-interface</artifactId>  
        <version>0.0.1-SNAPSHOT</version>  
    </dependency>
  	<!-- 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>
	<dependency>
		<groupId>junit</groupId>
		<artifactId>junit</artifactId>
	</dependency>
	<!-- JSP相關 -->
	<dependency>
		<groupId>jstl</groupId>
		<artifactId>jstl</artifactId>
	</dependency>
	<dependency>
		<groupId>javax.servlet</groupId>
		<artifactId>servlet-api</artifactId>
		<scope>provided</scope>
	</dependency>
	<dependency>
		<groupId>javax.servlet</groupId>
		<artifactId>jsp-api</artifactId>
		<scope>provided</scope>
	</dependency>
	<!-- dubbo相關的jar包 -->
	<dependency>
		<groupId>com.alibaba</groupId>
		<artifactId>dubbo</artifactId>
		<exclusions>
			<exclusion>
				<artifactId>spring</artifactId>
				<groupId>org.springframework</groupId>
			</exclusion>
			<exclusion>
				<artifactId>netty</artifactId>
				<groupId>org.jboss.netty</groupId>
			</exclusion>
		</exclusions>
	</dependency>
	<dependency>
		<groupId>org.apache.zookeeper</groupId>
		<artifactId>zookeeper</artifactId>
	</dependency>
	<dependency>
		<groupId>com.github.sgroschupf</groupId>
		<artifactId>zkclient</artifactId>
	</dependency>
	<dependency>  
        <groupId>commons-fileupload</groupId>  
        <artifactId>commons-fileupload</artifactId>  
    </dependency>
  </dependencies>
  <build>
  	<plugins>
  		<plugin>
  			<groupId>org.apache.tomcat.maven</groupId>
  			<artifactId>tomcat7-maven-plugin</artifactId>
  			<configuration>
  				<path>/</path>
  				<port>8089</port>
  			</configuration>
  		</plugin>
  	</plugins>
  </build>
</project>
         接著,我們把taotao-item-web工程的src/main/resources目錄下的resource和spring兩個目錄複製到taotao-cart-web工程的src/main/resources目錄下,我們把resource目錄下的resource.properties檔案中的內容清空,另外由於剛貼上過來resource.properties檔案的編碼格式是ISO8859-1,我們要把它改成UTF-8,在檔案上右鍵--->Properties,如下圖所示。


        把spring目錄下的springmvc-activemq.xml檔案刪除掉,然後修改springmvc.xml,配置包掃描目錄並且在src/main/java目錄下新建這個包,dubbo服務名稱改為"taotao-cart-web"。引用的item服務不用動,因為我們查詢商品剛好就是用的item服務。


         springmvc.xml檔案如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd
        http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd">
       
    <!-- 載入配置檔案 -->
    <context:property-placeholder location="classpath:resource/resource.properties"/>    
	<!-- 配置註解驅動 -->
	<mvc:annotation-driven />
	<!-- 檢視解析器 -->
	<bean
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/jsp/" />
		<property name="suffix" value=".jsp" />
	</bean>
	
	<!-- 配置包掃描器,掃描@Controller註解的類 -->
	<context:component-scan base-package="com.taotao.cart.controller"/>
	
	
	<!-- 引用dubbo服務 -->
	<dubbo:application name="taotao-cart-web"/>
	<dubbo:registry protocol="zookeeper" address="192.168.156.14:2181"/>
    <dubbo:reference interface="com.taotao.service.ItemService" id="itemService" />
</beans>
        下面我們把taotao-item-web工程下面的web.xml複製到taotao-cart-web工程的webapp目錄下,只不過需要先建一個名為"WEB-INF"的目錄,然後貼上到WEB-INF目錄下,如下圖所示,我們將原來所有叫taotao-item-web名字地方都改為taotao-cart-web,我們可以使用Ctrl+F開啟查詢替換對話方塊,然後進行替換操作。



         這樣,我們的taotao-cart-web工程便搭建完了。