學習淘淘商城第九十六課(購物車實現分析及工程搭建)
關於購物車模組,京東和淘寶並不一樣,京東允許使用者在沒有登入的情況下就使用購物車,而且加到購物車裡面的商品可以一直儲存著(其實是放到了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檔案內容如下:
接著,我們把taotao-item-web工程的src/main/resources目錄下的resource和spring兩個目錄複製到taotao-cart-web工程的src/main/resources目錄下,我們把resource目錄下的resource.properties檔案中的內容清空,另外由於剛貼上過來resource.properties檔案的編碼格式是ISO8859-1,我們要把它改成UTF-8,在檔案上右鍵--->Properties,如下圖所示。<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>
把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工程便搭建完了。