ioi

02.商品分类选择-分析-前端js_

03.商品分类选择-分析-数据库_

(JJTree渲染过程解析(parent_id为0就是父节点,is_parent为1说明下面有子节点,state1正常2删除。tree组件有ztree,异步控件树每个节点都有id,展开节点向服务端发送请求,请求检索子节点列表,参数当前节点的id,服务端响应json数据,)&)

04.商品分类选择-Service_

05.商品分类选型实现_

(使用@RequestParam获取参数(@RequestParam(name=”id”,defaultValue=”0” )第一次请求不带参数,给一个默认值确保肯定有值)&)

06.图片上传分析及图片服务器配置_

(Socket选项 HTTP服务器(开启虚拟机,选择已移动该虚拟机保留原来网路配置不发生变化,复制重新生成网卡原来配置不生效,如果要使用虚拟机通过设置为NAT模式,并设置子网网段)&高可用的分布式文件系统构建(只有一个工程把图片放在工程目录下,在1000并发的时候到达tomcat集群,通过Nginx转发每一个tomcat部署一个应用程序,通过轮询把请求平均分给不同服务器,为了能够保证在不同服务器都能找到目标图片需要专门有一个分布式文件服务器FastDFS(软件分布式文件系统,允许横向扩容与负载均衡保证高性能与高可用)负责图片存放与http图片访问(http服务器可以使tomcat或者是nginx(用于访问静态资源性能较好)))&Nginx 安装及负载均衡配置&)

07.FastDFS上传图片测试_

(跟踪服务器配置(fastDFS没法从中央仓库获取,通过maven工程导入,)&存储节点配置(创建一个资源文件client.conf 配置fastDFS中央仓库服务器地址,后缀与源数据详情)&上传文件测试&)

08.FastDFSClient的使用_

(加载资源文件中的图片(this.getClass.getResource(“/”).getPath()取完还是绝对路径,使用全路径复制会有隐藏字符需要去除格式即可。不以’/'开头时,默认是从此类所在的包下取资源,以’/'开头时,则是从ClassPath根下获取。)&)

package testpackage;
public class TestMain {public static void main(String[] args) {System.out.println(TestMain.class.getResource(""));System.out.println(TestMain.class.getResource("/"));}
}
file:/E:/workspace/Test/bin/testpackage/
file:/E:/workspace/Test/bin/

上面说到的【path以’/'开头时,则是从ClassPath根下获取;】在这里就是相当于bin目录(Eclipse环境下)。

如果我们想在TestMain.java中分别取到1~3.properties文件,该怎么写路径呢?代码如下:

package testpackage;public class TestMain {public static void main(String[] args) {// 当前类(class)所在的包目录System.out.println(TestMain.class.getResource(""));// class path根目录System.out.println(TestMain.class.getResource("/"));// TestMain.class在<bin>/testpackage包中// 2.properties  在<bin>/testpackage包中System.out.println(TestMain.class.getResource("2.properties"));// TestMain.class在<bin>/testpackage包中// 3.properties  在<bin>/testpackage.subpackage包中System.out.println(TestMain.class.getResource("subpackage/3.properties"));// TestMain.class在<bin>/testpackage包中// 1.properties  在bin目录(class根目录)System.out.println(TestMain.class.getResource("/1.properties"));}
}

※Class.getResource和Class.getResourceAsStream在使用时,路径选择上是一样的。

Class.getClassLoader().getResource(String path)

path不能以’/'开头时;
path是从ClassPath根下获取;

还是先看一下下面这段代码的输出:

package testpackage;
public class TestMain {public static void main(String[] args) {TestMain t = new TestMain();System.out.println(t.getClass());System.out.println(t.getClass().getClassLoader());System.out.println(t.getClass().getClassLoader().getResource(""));System.out.println(t.getClass().getClassLoader().getResource("/"));//null}
}

输出结果:

class testpackage.TestMain
sun.misc.Launcher$AppClassLoader@1fb8ee3
file:/E:/workspace/Test/bin/
null

从结果来看【TestMain.class.getResource("/") == t.getClass().getClassLoader().getResource("")】

如果有同样的Project结构

使用Class.getClassLoader().getResource(String path)可以这么写:

package testpackage;public class TestMain {public static void main(String[] args) {TestMain t = new TestMain();System.out.println(t.getClass().getClassLoader().getResource(""));System.out.println(t.getClass().getClassLoader().getResource("1.properties"));System.out.println(t.getClass().getClassLoader().getResource("testpackage/2.properties"));System.out.println(t.getClass().getClassLoader().getResource("testpackage/subpackage/3.properties"));}
}

※Class.getClassLoader().getResource和Class.getClassLoader().getResourceAsStream在使用时,路径选择上也是一样的。

09.图片上传功能分析_

10.图片上传功能实现_

(多文件上传1:使用MultipartHttpServletRequest(springMVC需要把commonsi-fileupload两个jar包加到项目中,前端控制器需要配置多媒体解析器MultipartResolver设置默认编码与最大文件大小,通过MultipartFile接收参数,通过@Value加载配置文件的资源,通过Map返回json数据)&单文件上传3:使用MultipartFile结合实体类&通过IOC容器注入Properties类型&placeholder属性&)

11.上传图片功能测试_

12.解决上传图片浏览器兼容性问题_

(使用jackson在服务端将JSON字符串转换成各种Java数据类型(SpringMvc会把对象转为字符串响应浏览器,直接把Map转为json返回String即可)&)

13.富文本编辑器的使用_

(富文本UEditor(富文本编辑器有UEditor、KindEditor、CKEditor都是纯js开发的)&)

14.商品添加功能分析_

15.商品添加-service_

16.商品添加-完成_

02.工程搭建分析_

03.前台系统工程搭建_

(使用URL Rewrite实现网站伪静态(在web.xml中 url-pattern拦截所有*.html 请求网页伪静态,所有url后缀全部改为html,@RequestMapping(“/index”) 通过index.html进行访问。只访问localhost:8080会默认找welcome-file欢迎页index.html 带html后缀去controller匹配)&)

04.首页展示_

05.首页内容管理-数据库分析_

06.内容服务工程搭建_

07.内容分类查询-service_

08.内容分类列表展示_

(@RequestParam注解(与参数名对不上号,使用@RequestParam(“id” ,defaultValue=””)Integer parentId。使用脚本启动服务Maven build clean tomcat7:run )&)

09.内容分类添加-js分析_

10.内容分类添加-mapper_

11.内容分类添加-service_

12.内容分类添加-完成_

13.内容分类修改、删除-作业_

14.内容添加-功能分析_

15.内容添加-service_

16.内容添加-完成_

17.内容编辑、删除_

01.课程计划

(Redis缓存穿透和雪崩(首页并发量最高,每次都查询数据库压力比较大,通过缓存读取内存数据减轻数据库压力,Reids可以把内容持久化到磁盘数据不会丢,内容不会丢失否则瞬时请求会造成数据库雪崩,Redis缓存同步问题)&)

02.首页大广告位实现分析_

04.首页大广告位实现-表现层_

05.首页大广告-测试_

06.redis的安装及启动_

(gcc的简易用法(编译、参数与连接)(编译环境对c语言编译后为可二进制可执行文件,需要按照gcc编译环境,yum install gcc-c++)&用make进行宏编译&makefile的基本语法与变量&RPM安装(install)&Redis安装和配置(rm -rf * 删除所有安装包 ,rm -rf /user/local/redis* )&Redis客户端命令(tar zxf redis-3.0.0.tar.gz 进行解压缩,C语言编译必须有Makefile文件夹,直接使用make命令编译,编译后进行通过make install进行安装 make install PREFIX=/usr/local/redis到指定目录,进入安装目录的bin文件夹,通过./redis-server启动前端启动模式占用一个终端,通过配置文件cp ~/redis-3.0.0/redis.conf 复制到当前文件夹下,进行后端启动不占端口号,修改daemonize yes即可,通过./redis-server redis.conf 后端启动,通过ps aux|grep redis查看进程判断是否启动。 ./redis-cli默认连接6379端口,客户端通过ping pang检测服务器健康状态,连接其他redis服务 ./redis-cli -h 192.168 -p 6379)&Redis基础配置文件&)

sftp是Secure File Transfer Protocol的缩写,安全文件传送协议。它类似于ftp, 但是它提供一种更为安全的网络的加密方法。

如何进行远程连接,进行文件的上传和下载。

在命令行模式下,输入:

sftp 用户名@ip地址  eg: sftp lzy@202.206.64.33

sftp>

如果登陆远程机器不是为了上传下载文件,而是要修改远程主机上的某些文件。可以

ssh  lzy@202.206.64.33 (其实sftp就是ssh 的一个程式。)

sftp> get /var/index.php  /home/libai/

这条语句将从远程主机的  /var目录下将 index.php 下载到本地  /home/libai/目录下。
     sftp> put /home/libai/downloads/linuxgl.pdf  /var/
     这条语句将把本地 /home/libai/downloads/目录下的 linuxgl.pdf文件上传至远程主机/var 目录下。

要查看远端机器的一些信息,可以直接使用平时的linux命令

比如:pwd 远端机器的当前路径  cd 改变远端机器的路径 ,ls, rm, mkdir,rmdir 都可以用

要查看本机的一些信息,要在平时的linux命令上,加上l

比如:lpwd 本机当前工作目录  lcd 改变本机的路径, lls ,lrm,lmkdir,lrmdir

要离开sftp,用exit 或quit、 bye 均可。详细情况可以查阅 man  sftp.

如果觉得在命令行模式下不太方便,可以 sudo apt-get install gftp。在图形界面下操作就简便多了。

07.redis常用命令复_

(Redis数据结构常用命令(Redis一共提供5种数据类型,String普通key-value Hash一个key对应一个hash集,LIST集合 set集合 zset有序集合。String数据类型 set添加一个值 set str1 12345 get str1 incr str1自增,decr减1,Hash命令hset添加一个key hset hash1 field1 abc hget hash1 field1,ttl str1查看key的有效期-1永久保存,ttl str2 -2key不存在,正数正在倒计时,expire str1 100设置过期时间为100秒,key *查看数据库有多少key)&Redis数据结构——哈希&Redis数据结构——链表(linked-list)&Redis数据结构——集合&Redis数据结构——有序集合&INCRBY、DECRBY:对整数值执行加法操作和减法操作& HSET:为字段设置值&)

08.Jedis的使用方法_

(使用Jedis客户端操作Redis(Java客户端通过Jedis,每次创建都有一个连接耗费资源,通过redis连接池JedisPool 节约资源,jedis.getResource()获取jedis来操作数据库)&)

09.redis的使用方法_

(单线程与多线程客户端(持久化RDB和AOF默认开启RDB快照(当前时刻数据)定期操作磁盘,AOF保存对数据库操作的命令频繁操作磁盘性能下降,数据完整性高一点,可以同时开启。Redis有可能丢数据,Mysql或者Oracle关系型数据库不会丢数据,Redis不适合保存大数据适合存储小数据(单线程的顺次处理单个命令尽快完成,通过集群横向扩容),基于Hadoop的Hbase还有MongoDB支持存储海量数据)&)

10.redis集群架构讲解_

(使用Redis集群实现数据水平化存储(Redis集群没有统一的入口,可以连接任何客户端进入集群,集群内部客户端可以相互通讯,检测检点的监控状态通过投票容错实现,redis集群有0-16383个slot为了均匀分布key到不同服务器,每个节点分配一定数量的槽,一般集群分布在3个节点上,每个集群主从同步槽挂了包装高可用,需要6台服务器(一台服务器运行在不同端口6个实例,搭建集群要把dump.rdb快照文件删除,修改redis.conf改变端口号,/cluster-enabled yes集群节点。通过批处理批量执行启动命令 vim start-all.sh cd redis01 ./redis-server redis.conf) cd.. 通过chmod +x start-all.sh增加可执行权限,TCC最大权限 ,./start-all.sh执行)&对文章进行投票&Redis集群容错&Redis集群中的主从复制&Redis主从复制模式&)

11.redis集群搭建01_

(Redis主从架构的缺点&Redis哨兵模式& Redis集群架构& Redis集群环境搭建&mongodump 和mongorestore&批处理和任务&权限设置&)

12.redis集群搭建02_

(RPM、SRPM与YUM&)

13.使用redis-cli连接集群_

14.使用JedisCluster连接集群_

(使用Jedis客户端操作Redis(Java通过JedisCluster连接到集群,自带连接池,构造参数是set类型集合每个元素是HostAndPort类型)&)

15.JedisClient连接单机版_

(使用Annotation注解法创建对象(<context:component-scan base-package=””>注解既包括了开启注解<context:annotation-config>也包括了扫描包)&组件扫描注解&)

16.jedisClient连接集群_

17.向业务逻辑中添加缓存_

18.添加缓存测试_

19.缓存同步处理_

(消息发送和同步接收&HDEL:删除字段&)

day06

01.课程计划_

02.solr服务搭建_

(catalina.sh脚本&Redis基础配置文件&Tomcat启动&复制、删除与移动:cp、rm、mv &配置web.xml文件&)

03.业务域的定义_

(中文分词安装&IK分词器安装&内部类——InnerClasses属性 &基于XML Schema的简化配置方式&使用th:field属性&语言区域&使用服务提供业务逻辑&)

04.业务数据sql语句编写_

05.搜索工程搭建_

(覆盖起步依赖引入的传递依赖&)

06.导入商品数据到索引库-dao_

07.solrj实现索引库维护_

(在Sping Boot中集成Solr,实现数据的增、删、改和查&)

08.导入商品数据-Service_

( constructor方法&)

09.导入商品数据-jsp_

10.商品数据导入成功_

11.首页跳转到搜索页面_

12.商品实现分析_

13.使用solrJ查询索引库_

(Solr——搜索应用服务器&)

14.搜索服务-dao实现_

day07

01.课程计划_

02.商品搜索功能-Service_

03.商品搜索功能-Controller_

04.搜索功能测试_

05.什么是SolrCloud_

06.solr集群架构讲解_

(并发&分片简介&)

07.zookeeper集群讲解_

08.zookeeper集群搭建_

(配置ZooKeeper集群&Data Server简介&修改文件时间或创建新文件:touch&变量的使用与设置:echo、变量设置规则、unset &vim的额外功能&)

09.solr集群的配置_

10.SolrCloud中管理Collection_

11.闲扯_

12.使用SolrJ管理SolrCloud_

13.搜索功能切换到集群_

14.全局异常处理器的应用_

day08

01.课程计划_

02.同步索引库功能分析_

03.什么是ActiveMQ_

04.activemq的安装_

(vim的额外功能&)

05.Activemq发送queue消息_

(Topic 和 Queue&)

06.接收queue消息_

07.发送topic消息_

08.接收topic消息_

09.spring整合Activemq_

(使用JmsTemplate 发送&)

10.使用JMSTemplate发送消息_

11.Activemq整合Spring接收消息_

12.添加商品同步索引库-发送消息_

13.添加商品同步索引库-mapper_

14.添加商品同步索引库-MessageListener_

15.添加商品同步索引库-测试_

16.小结_

day09

01.课程计划_

02.商品详情页面工程搭建_

03.商品详情页面展示分析_

04.商品详情页面展示-代码实现_

05.商品详情页面展示-测试_

06.商品详情页面添加缓存分析_

07.redis添加缓存的使用方法_

08.向业务逻辑中添加缓存_

09.添加缓存测试_

10.freemarker的使用方法_

11.freemarker语法-取pojo的属性_

12.freemarker语法-list_

13.freemarker语法-if_

14.freemarker语法-日期类型处理_

15freemarker语法-null值的处理_

16.freemarker语法-include_

17.freemarker整合Spring_

18.网页静态化方案分析_

19.网页静态化-freemarker模板改造_

20.网页静态化-业务逻辑_

21.网页静态化-测试_

day10

01.课程计划_

(构建HTTP服务器&)

02.什么是nginx_

03.nginx的应用场景_

04.nginx的安装及启动_

( v-pre&)

05.nginx的配置文件介绍_

06.通过端口区分虚拟主机_

(shift&使用fetchType属性设置局部加载策略&ngx_http_upstream_t结构体&)

07.什么是域名及hosts文件的作用_

08.通过域名区分虚拟主机_

09.使用nginx配置反向代理_

(proxy_pass请求代理规则&)

10.使用nginx实现负载均衡_

11.nginx小结_

12.keepalived+nginx实现高可用_

13.lvs实现高并发处理_

14.sso系统分析_

15.sso工程搭建_

16.sso系统接口分析_

day11_单点登录&js跨域

01.课程计划_

02.检查数据是否可用-接口分析_

03.检查数据是否可用-Service_

04.检查数据是否可用-Controller_

05.用户注册-Service_

06.用户注册-表现层_

07.用户登录流程分析_

08.用户登录-Service_

(使用Redis保存token令牌&全局唯一标识符UUID&)

09.用户登录表现层_

10.用户登录测试_

11.根据token查询用户信息-Service_

(使用Redis保存token令牌&)

12.根据token查询用户信息-表现层层_

13.安全退出-作业_

14.登录、注册页面展示_

15.用户注册页面实现_

16.用户登页面实现_

17.js跨域分析_

(跨域AJAX&)

  1. jsonp的原理_

(活用模板方法模式及Callback&callback调用&JSONP&media query语法&)

19.jsonp服务端处理_

20.jsonp处理第二种方法_

day12

01.课程计划_

02.购物车实现分析_

03.购物车工程搭建_

04.商品详情页面加入购物车改造_

05.添加购物车功能分析_

06.添加购物车实现_

07.添加购物车测试_

08.展示购物车列表_

09.修改购物车商品数量_

10.修改购物车商品数量测试_

11.删除购物车商品_

12.购物车小结_

13.订单系统工程搭建_

14.订单确认页面展示_

15.登录拦截器实现分析_

(HandlerInterceptor接口&Handler实例&)

16.拦截器业务逻辑实现_

17.拦截器测试及登录成功回调_

(Interceptor&)

18.拦截器测试取用户信息_

19.订单生成-数据库分析_

20.订单生成-页面分析_

day13

01.课程计划_

02.订单提交-分析回顾_

03.生成订单业务逻辑_

04.订单生成表现层_

05.订单生成-测试_

06.系统架构讲解_

07.系统部署规划_

(安装RPM包&)

08.tomcat热部署_

09.系统部署演示_

10.项目总结01_

11.项目总结02_

12.面试中的问题_

部分代码

taotao-order-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-order-web</artifactId><version>0.0.1-SNAPSHOT</version><packaging>war</packaging><dependencies><dependency><groupId>com.taotao</groupId><artifactId>taotao-common</artifactId><version>0.0.1-SNAPSHOT</version></dependency><dependency><groupId>com.taotao</groupId><artifactId>taotao-order-interface</artifactId><version>0.0.1-SNAPSHOT</version></dependency><dependency><groupId>com.taotao</groupId><artifactId>taotao-sso-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><!-- 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>junit</groupId><artifactId>junit</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><configuration><path>/</path><port>8091</port></configuration></plugin></plugins></build>
</project>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"id="WebApp_ID" version="2.5"><display-name>taotao-order-web</display-name><welcome-file-list><welcome-file>index.html</welcome-file></welcome-file-list><!-- post乱码过滤器 --><filter><filter-name>CharacterEncodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>utf-8</param-value></init-param></filter><filter-mapping><filter-name>CharacterEncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- 前端控制器 --><servlet><servlet-name>taotao-order-web</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- contextConfigLocation不是必须的, 如果不配置contextConfigLocation, springmvc的配置文件默认在:WEB-INF/servlet的name+"-servlet.xml" --><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring/springmvc.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>taotao-order-web</servlet-name><!-- 伪静态化 --><url-pattern>*.html</url-pattern></servlet-mapping></web-app>

success.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page trimDirectiveWhitespaces="true" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="pragma" content="no-cache" /><meta http-equiv="cache-control" content="no-cache" /><meta http-equiv="expires" content="0" /> <meta name="format-detection" content="telephone=no" />  <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" /> <meta name="format-detection" content="telephone=no" /><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><link type="text/css" rel="stylesheet" href="/css/base.css" /><link rel="stylesheet" type="text/css" href="/css/purchase.base.2012.css" /><link rel="stylesheet" type="text/css" href="/css/purchase.sop.css" /><title>订单成功页面 - 淘淘商城</title><script type="text/javascript" src="/js/jquery-1.6.4.js"></script><script type="text/javascript" src="/js/base-2011.js" charset="utf-8"></script><script type="text/javascript" src="/js/jquery.cookie.js" charset="utf-8"></script><script type="text/javascript" src="/js/taotao.js" charset="utf-8"></script>
</head> <body id="mainframe">
<!--shortcut start-->
<jsp:include page="commons/shortcut.jsp" />
<!--shortcut end-->
<div class="w" id="headers"><div id="logo"><a href="/"><img alt="淘淘商城" src="/images/taotao-logo.gif"></a></div><ul class="step" id="step3"><li class="fore1">1.我的购物车<b></b></li><li class="fore2">2.填写核对订单信息<b></b></li><li class="fore3">3.成功提交订单</li></ul><div class="clr"></div>
</div>
<div class="w" id="safeinfo"></div><!--父订单的ID-->
<div class="w main"><div class="m m3 msop"><div class="mt" id="success_tittle"><s class="icon-succ02"></s><h3 class="ftx-02">感谢您,订单提交成功!</h3></div><div class="mc" id="success_detail"> <ul class="list-order"><li class="li-st"><div class="fore1">订单号:<a href="javascript:void(0)">${orderId }</a></div><!-- 货到付款 --><div class="fore2">货到付款:<strong class="ftx-01">${payment}元</strong></div><div class="fore3">淘淘快递 &nbsp; 送货时间: 预计 ${date} 送达&nbsp;</div></li></ul><!-- 在线支付按钮  --><div id="bookDiv"></div><p class="i-tips01">您的订单已经在处理中,发货后订单内容会显示承运人联系方式,如有必要您可以联系对方</p></div></div>
</div><div class="w"><!-- links start --><jsp:include page="commons/footer-links.jsp"></jsp:include><!-- links end -->
</div><!-- footer end --></body>
</html>

order-cart.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page trimDirectiveWhitespaces="true" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="pragma" content="no-cache" /><meta http-equiv="cache-control" content="no-cache" /><meta http-equiv="expires" content="0" /> <meta name="format-detection" content="telephone=no" />  <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" /> <meta name="format-detection" content="telephone=no" /><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>订单结算页 -淘淘商城</title><!--结算页面样式-->  <link rel="stylesheet" type="text/css" href="/css/base.css" media="all" /><link type="text/css" rel="stylesheet"  href="/css/order-commons.css" source="widget"/>   <script type="text/javascript" src="/js/jquery-1.6.4.js"></script><script type="text/javascript" src="/js/base.js"></script>    <script type="text/javascript" src="/js/order.common.js"></script><script type="text/javascript" src="/js/jquery.checkout.js"></script>
</head>   <body id="mainframe">
<jsp:include page="commons/shortcut.jsp" />
<!--shortcut end--><div class="w w1 header clearfix"><div id="logo"><a href="/"><img src="/images/taotao-logo.gif" alt="淘淘商城"></a></div>
</div><form id="orderForm" class="hide" action="/order/create.html" method="post"><input type="hidden" name="paymentType" value="1"/><c:forEach items="${cartList }" var="cart" varStatus="status"><c:set var="totalPrice"  value="${ totalPrice + (cart.price * cart.num)}"/><input type="hidden" name="orderItems[${status.index}].itemId" value="${cart.id}"/><input type="hidden" name="orderItems[${status.index}].num" value="${cart.num }"/><input type="hidden" name="orderItems[${status.index}].price" value="${cart.price}"/><input type="hidden" name="orderItems[${status.index}].totalFee" value="${cart.price * cart.num}"/><input type="hidden" name="orderItems[${status.index}].title" value="${cart.title}"/><input type="hidden" name="orderItems[${status.index}].picPath" value="${cart.image}"/></c:forEach><input type="hidden" name="payment" value="<fmt:formatNumber groupingUsed="false" maxFractionDigits="2" minFractionDigits="2" value="${totalPrice/100 }"/>"/><input type="hidden" name="orderShipping.receiverName" value="入云龙"/><input type="hidden" name="orderShipping.receiverMobile" value="15891588888"/><input type="hidden" name="orderShipping.receiverState" value="北京"/><input type="hidden" name="orderShipping.receiverCity" value="北京"/><input type="hidden" name="orderShipping.receiverDistrict" value="昌平区"/><input type="hidden" name="orderShipping.receiverAddress" value="西三旗 xxxxxxxxx"/>
</form><!-- main -->
<div id="container"><div id="content" class="w"><div class="m"><div class="mt"><h2>填写并核对订单信息</h2></div><div class="mc"><div class="checkout-steps">
<!--  /widget/consignee-step/consignee-step.tpl -->
<div class="step-tit"><h3>收货人信息</h3><div class="extra-r"><a href="#none" class="ftx-05" onclick="use_NewConsignee()">新增收货地址</a></div>
</div>
<div class="step-cont"><div class="consignee-list" id="consignee-list1"><a href="#none" id="prev" class="prev arrow-btns"></a><a href="#none" id="next" class="next arrow-btns"></a><div id="consignee1" class="list-cont ui-switchable-body"><div id="consignee-ret"></div><ul class="ui-switchable-panel-main" id="consignee-list"><!----><li class="ui-switchable-panel" id="consignee_index_137617472"selected="selected" style="cursor: pointer;"><div class="consignee-item item-selected"consigneeId="137617472" id="consignee_index_div_137617472"><b></b><div class="user-name"><div class="fl"><strong limit="4">入云龙</strong>&nbsp;&nbsp;收</div><div class="fr">158****8888</div><div class="clr"></div></div><div class="mt10" limit="15">北京 昌平区 五环外六环里</div><div class="adr-m" limit="30">西三旗 xxxxxxxxx</div><div class="op-btns ar"><a href="#none"class="ftx-05 mr10 setdefault-consignee hide"fid="137617472">设为默认地址</a> <a href="#none"class="ftx-05 mr10 edit-consignee" fid="137617472">编辑</a><a href="#none" class="ftx-05 del-consignee hide"fid="137617472">删除</a></div></div></li><!----></ul></div></div>
</div>
<!--/ /widget/consignee-step/consignee-step.tpl --><!--/ /widget/shopping-list/shopping-list.tpl -->
<div id="shipAndSkuInfo"><div id="payShipAndSkuInfo"><div class="step-tit"><h3>支付方式</h3>
</div>
<div class="step-cont"><div class="payment-list" id=""><div class="list-cont"><ul id="payment-list"><input type="hidden" id="instalmentPlan" value="false"><li style="cursor: pointer;" onclick="save_Pay(1);"><div class="payment-item item-selected online-payment "for="pay-method-1" payname="货到付款" payid="1"><b></b> 货到付款<span class="qmark-icon qmark-tip"data-tips="送货上门后再收款,支持现金、POS机刷卡、支票支付 <a href='http://help.jd.com/help/distribution-768-2-2813-2863-0-1410707152669.html' target='_blank' class='ftx-05'>查看服务及配送范围</a>"></span><!--  span class="qmark-icon qmark-tip" data-tips="在线支付,支持绝大多数银行借记卡及部分银行信用卡 <a href='http://help.jd.com/help/question-68.html' target='_blank' class='ftx-05'>查看银行及限额</a>"></span --><!-- span class="qmark-icon qmark-tip" data-tips="送货上门后再收款,支持现金、POS机刷卡、支票支付 <a target='_blank' href='http://psfw.jd.com/help/distribution-768.html-2-2825-2893-0-1427094595258.html'>查看服务及配送范围</a>"></span --></div></li><li style="cursor: pointer;" onclick="save_Pay(4);"><div class="payment-item  online-payment "for="pay-method-4" payname="在线支付" payid="4"><b></b> 在线支付 <font class="whiteBarSpanClass hide"color="#FF6600">[支持打白条]</font> <spanclass="qmark-icon qmark-tip"data-tips="即时到帐,支持绝大数银行借记卡及部分银行信用卡 <a href='http://www.jd.com/help/onlinepay.aspx' target='_blank' class='ftx-05'> 查看银行及限额</a>"></span><!--  span class="qmark-icon qmark-tip" data-tips="在线支付,支持绝大多数银行借记卡及部分银行信用卡 <a href='http://help.jd.com/help/question-68.html' target='_blank' class='ftx-05'>查看银行及限额</a>"></span --><!-- span class="qmark-icon qmark-tip" data-tips="即时到帐,支持绝大数银行借记卡及部分银行信用卡 <a target='_blank' href='http://www.jd.com/help/onlinepay.aspx'>查看银行及限额</a>"></span --></div></li><li style="cursor: pointer;" onclick="save_Pay(5); "><div class="payment-item online-payment "for="pay-method-5" payname="公司转账" payid="5"><b></b> 公司转账 <span class="qmark-icon qmark-tip"data-tips="通过快钱平台转账 转帐后1-3个工作日内到帐 <a href='http://help.jd.com/help/question-70.html' target='_blank' class='ftx-05'>查看帐户信息</a>"></span><!--  span class="qmark-icon qmark-tip" data-tips="在线支付,支持绝大多数银行借记卡及部分银行信用卡 <a href='http://help.jd.com/help/question-68.html' target='_blank' class='ftx-05'>查看银行及限额</a>"></span --><!-- span class="qmark-icon qmark-tip" data-tips="通过快钱平台转账 转帐后1-3个工作日内到帐 <a target='_blank' href='http://help.jd.com/help/question-70.html'>查看帐户信息</a>"></span --></div></li><li style="cursor: pointer;" onclick="save_Pay(2); "><div class="payment-item  online-payment "for="pay-method-2" payname="邮局汇款" payid="2"><b></b> 邮局汇款 <span class="qmark-icon qmark-tip"data-tips="通过快钱平台收款 汇款后1-3个工作日到账 <a href='http://help.jd.com/help/question-69.html' target='_blank' class='ftx-05'>查看帮助</a>"></span><!--  span class="qmark-icon qmark-tip" data-tips="在线支付,支持绝大多数银行借记卡及部分银行信用卡 <a href='http://help.jd.com/help/question-68.html' target='_blank' class='ftx-05'>查看银行及限额</a>"></span --><!-- span class="qmark-icon qmark-tip" data-tips="通过快钱平台收款  汇款后1-3个工作日到账 <a target='_blank' href='http://help.jd.com/help/question-69.html'>查看帮助</a>"></span --></div></li> <!--div id="shipment"></div--> <script>$('.online-payment').hover(function() {$(this).addClass('payment-item-hover');}, function() {$(this).removeClass('payment-item-hover');});</script></ul></div></div>
</div>
<!--/ /widget/payment-step/payment-step.tpl -->
<div class="step-tit"><h3>送货清单</h3><div class="extra-r"><a href="/cart/show.html" id="cartRetureUrl" class="return-edit ftx-05">返回修改购物车</a></div>
</div>
<div class="step-cont" id="skuPayAndShipment-cont"><!--添加商品清单  zhuqingjie -->
<div class="shopping-lists" id="shopping-lists">
<div class="shopping-list ABTest"><div class="goods-list"><!--配送方式--><h4 class="vendor_name_h" id="0">商家:淘淘商城</h4>              <div class="goods-suit goods-last"><c:forEach items="${cartList }" var="cart"><div class="goods-item goods-item-extra"><div class="p-img"><a target="_blank" href="/item/${cart.id}.html"><img src="${cart.image}" alt=""></a></div><div class="goods-msg"><div class="p-name"><a href="/item/${cart.id}.html" target="_blank">${cart.title } </a></div><div class="p-price"><!--增加预售金额显示 begin   预售分阶段支付类型(1:一阶梯全款支付;2:一阶梯定金支付(全款或定金可选);3:三阶梯仅定金支付) --><strong>¥<fmt:formatNumbergroupingUsed="false" maxFractionDigits="2"minFractionDigits="2" value="${cart.price / 100 }" /></strong><!--增加预售金额显示 end--><span class="ml20"> x${cart.num} </span> <span class="ml20 p-inventory" skuId="11555193">有货</span></div><i class="p-icon p-icon-w"></i><span class="ftx-04">7天无理由退货</span></div><div class="clr"></div></div></c:forEach></div>
</div>
<!--goods-list 结束-->
<div class="dis-modes"><!--配送方式--><div class="mode-item mode-tab"><h4>配送方式:(<a id="jd-goods-item" class="ftx-05 alink"href="#none">对应商品</a>)</h4><div class="mode-tab-nav"><ul><li class="mode-tab-item " id="jd_shipment_item"onclick="doSwithTab('pay')"><spanid="jdShip-span-tip" class="m-txt">淘淘快递<iclass='qmark-icon qmark-tip'data-tips='由淘淘公司负责配送,速度很快,还接受上门刷卡付款服务'></i></span><b></b></li></ul></div></div>
</div>
<!--dis-modes 结束-->
<div class="clr"></div>
<div class="freight-cont"><strong class="ftx-01" style="color: #666"freightByVenderId="0" popJdShipment="false">免运费</strong>
</div>
</div>    </div>
</div>
</div>
</div>
<!--  /widget/invoice-step/invoice-step.tpl -->
<div class="step-tit"><h3>发票信息</h3>
</div>
<div class="step-content"><div id="part-inv" class="invoice-cont"><span class="mr10"> 普通发票(电子) &nbsp; </span><span class="mr10">个人 &nbsp; </span><span class="mr10"> &nbsp; </span> 明细 <a href="#none"class="ftx-05 invoice-edit" onclick="edit_Invoice()">修改</a></div>
</div><div class="order-summary"><!--  预售 计算支付展现方式 begin --><div class="statistic fr"><div class="list"><span>总商品金额:</span> <em class="price" id="warePriceId">¥<fmt:formatNumber value="${totalPrice / 100}" maxFractionDigits="2" minFractionDigits="2" groupingUsed="true"/></em></div><div class="list"><span>运费:</span> <em class="price" id="freightPriceId">¥0.00</em></div><div class="list"><span>应付总额:</span> <em class="price" id="sumPayPriceId">¥<fmt:formatNumber value="${totalPrice / 100}" maxFractionDigits="2" minFractionDigits="2" groupingUsed="true"/></em></div></div><div class="clr"></div></div></div>
</div>
<!--/ /widget/order-summary/order-summary.tpl --><!--  /widget/checkout-floatbar/checkout-floatbar.tpl -->
<div class="trade-foot"><div id="checkout-floatbar" class="group"><div class="ui-ceilinglamp checkout-buttons"><div class="sticky-placeholder hide" style="display: none;"></div><div class="sticky-wrap"><div class="inner"><button type="submit" class="checkout-submit btn-1" id="order-submit"    onclick="$('#orderForm').submit()">提交订单</button><span class="total">应付总额:<strong id="payPriceId">¥<fmt:formatNumber value="${totalPrice / 100}" maxFractionDigits="2" minFractionDigits="2" groupingUsed="true"/></strong></span><span id="checkCodeDiv"></span><div class="checkout-submit-tip" id="changeAreaAndPrice" style="display: none;">由于价格可能发生变化,请核对后再提交订单</div><div style="display:none" id="factoryShipCodShowDivBottom" class="dispatching">部分商品货到付款方式:先由淘淘配送“提货单”并收款,然后厂商发货。</div></div><span id="submit_message" style="display:none" class="submit-error" ></span><div class="submit-check-info" id="submit_check_info_message" style="display:none"></div></div></div></div></div></div></div></div>
</div><!-- /main --><jsp:include page="commons/footer.jsp" /></body>
</html>

exception.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%@ page trimDirectiveWhitespaces="true"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta name="format-detection" content="telephone=no" />
<meta name="viewport"content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta name="format-detection" content="telephone=no" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>出错了 -淘淘商城</title>
<!--结算页面样式-->
<link rel="stylesheet" type="text/css" href="/css/base.css" media="all" />
<link type="text/css" rel="stylesheet" href="/css/order-commons.css"source="widget" />
<script type="text/javascript" src="/js/jquery-1.6.4.js"></script>
<script type="text/javascript" src="/js/base.js"></script>
<script type="text/javascript" src="/js/order.common.js"></script>
<script type="text/javascript" src="/js/jquery.checkout.js"></script>
</head>
<body id="mainframe"><div class="w w1 header clearfix"><div id="logo"><a href="/"><img src="/images/taotao-logo.gif" alt="淘淘商城"></a></div></div><div class="w"><div id="refresh"><style type="text/css">
#refresh {text-align: left;margin: 30px auto;width: 750px;height: 220px;background:url(/images/errordog.jpg)0 0;position: relative
}#refresh .txt {position: absolute;left: 236px;top: 16px;color: #fff;font-size: 14px;font-family: "microsoft yahei"
}#refresh .m {position: absolute;left: 336px;top: 80px;line-height: 18px;font-size: 14px
}#refresh .m li {padding-bottom: 8px
}#refresh .m a {color: #005eab
}#refresh .m .fore1, #refresh .m .fore2 {font-family: "microsoft yahei"
}#refresh .m .fore1 a {color: #e4393c
}#refresh .m .fore2 a {color: #e4393c;font-weight: bold;font-size: 18px;padding: 0 3px
}#refresh .m .fore3 {font-weight: bold;font-size: 12px
}#refresh .m .fore4 a {margin-right: 15px;font-size: 12px
}</style><span class="txt">糟了...系统出错了...</span><ul class="m"><li class="fore1">您可以:稍后再试或联系客服400-8888-9999。</li><li class="fore2">返回<a href="/" target="_blank">淘淘首页</a></li><li class="fore3">错误消息</li><li class="fore4">${message }</li></ul></div></div><!-- footer start --><jsp:include page="../commons/footer.jsp" /><!-- footer end -->
</body>
</html>

shortcut.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<div id="shortcut-2013"><div class="w"><ul class="fl lh"><li class="fore1 ld" clstag="homepage|keycount|home2013|01a"><b></b><a href="javascript:addToFavorite()" rel="nofollow">收藏淘淘</a></li></ul><ul class="fr lh"><li class="fore1" id="loginbar" clstag="homepage|keycount|home2013|01b">您好!欢迎来到淘淘!<a href="javascript:login()">[登录]</a>&nbsp;<a href="javascript:regist()">[免费注册]</a></li><li class="fore2 ld" clstag="homepage|keycount|home2013|01c"><s></s><a href="http://jd2008.jd.com/JdHome/OrderList.aspx" rel="nofollow">我的订单</a></li><li class="fore2-1 ld" id="jd-vip"><s></s><a target="_blank" rel="nofollow" href="http://vip.jd.com">会员俱乐部</a></li><li class="fore3 ld menu" id="app-jd" data-widget="dropdown" clstag="homepage|keycount|home2013|01d"><s></s><i></i><span class="outline"></span><span class="blank"></span><a href="http://app.jd.com/" target="_blank">手机淘淘</a><b></b></li><li class="fore4 ld menu" id="biz-service" data-widget="dropdown" clstag="homepage|keycount|home2013|01e"><s></s><span class="outline"></span><span class="blank"></span>客户服务<b></b><div class="dd"><div><a href="http://help.jd.com/index.html" target="_blank">帮助中心</a></div><div><a href="http://myjd.jd.com/repair/orderlist.action" target="_blank" rel="nofollow">售后服务</a></div><div><a href="http://chat.jd.com/jdchat/custom.action" target="_blank" rel="nofollow">在线客服</a></div><div><a href="http://myjd.jd.com/opinion/list.action" target="_blank" rel="nofollow">投诉中心</a></div><div><a href="http://www.jd.com/contact/service.html" target="_blank">客服邮箱</a></div></div></li><li class="fore5 ld menu" id="site-nav" data-widget="dropdown" clstag="homepage|keycount|home2013|01f"><s></s><span class="outline"></span><span class="blank"></span>网站导航<b></b><div class="dd lh"><dl class="item fore1"><dt>特色栏目</dt><dd><div><a target="_blank" href="http://mobile.jd.com/index.do">淘淘通信</a></div><div><a target="_blank" href="http://jdstar.jd.com/">校园之星</a></div><div><a target="_blank" href="http://my.jd.com/personal/guess.html">为我推荐</a></div><div><a target="_blank" href="http://shipingou.jd.com/">视频购物</a></div><div><a target="_blank" href="http://club.jd.com/">淘淘社区</a></div><div><a target="_blank" href="http://read.jd.com/">在线读书</a></div><div><a target="_blank" href="http://diy.jd.com/">装机大师</a></div><div><a target="_blank" href="http://giftcard.jd.com/market/index.action">淘淘E卡</a></div><div><a target="_blank" href="http://channel.jd.com/jiazhuang.html">家装城</a></div><div><a target="_blank" href="http://dapeigou.jd.com/">搭配购</a></div><div><a target="_blank" href="http://xihuan.jd.com/">我喜欢</a></div></dd></dl><dl class="item fore2"><dt>企业服务</dt><dd><div><a target="_blank" href="http://giftcard.jd.com/company/index">企业客户</a></div><div><a target="_blank" href="http://sale.jd.com/p10997.html">办公直通车</a></div></dd></dl><dl class="item fore3"><dt>旗下网站</dt><dd><div><a target="_blank" href="http://en.jd.com/">English Site</a></div></dd></dl></div></li></ul><span class="clr"></span></div>
</div>

header.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<script type="text/javascript" src="/js/base-v1.js" charset="utf-8"></script>
<!--shortcut start-->
<jsp:include page="shortcut.jsp" />
<!--shortcut end-->
<div id="o-header-2013"><div class="w" id="header-2013"><div id="logo-2013" class="ld"><a href="/" hidefocus="true" clstag="homepage|keycount|home2013|02a"><b></b><img src="/images/taotao-logo.gif" width="270" height="60" alt="淘淘"></a></div><!--logo end--><div id="search-2013"><div class="i-search ld"><ul id="shelper" class="hide"></ul><div class="form"><input type="text" class="text" accesskey="s" id="key" autocomplete="off" onkeydown="javascript:if(event.keyCode==13) search('key');"><input type="button" value="搜索" class="button" onclick="search('key');return false;" clstag="homepage|keycount|home2013|03a"></div></div><div id="hotwords" clstag="homepage|keycount|home2013|03b"></div></div><!--search end--><div id="my360buy-2013"><dl><dt class="ld"><s></s><a href="http://localhost:8084/user/showLogin" clstag="homepage|keycount|home2012|04a">我的淘淘</a><b></b></dt><dd><div class="loading-style1"><b></b>加载中,请稍候...</div></dd></dl></div><!--my360buy end--><div id="settleup-2013" clstag="homepage|keycount|home2013|05a"><dl><dt class="ld"><s></s><span class="shopping"><span id="shopping-amount"></span></span><a href="/cart/cart.html" id="settleup-url">去购物车结算</a> <b></b> </dt>
<!--                 <dd><div class="prompt"><div class="loading-style1"><b></b>加载中,请稍候...</div></div></dd>-->           </dl></div><!--settleup end--></div><!--header end--><div class="w"><div id="nav-2013"><div id="categorys-2013" class="categorys-2014"><div class="mt ld"><h2><a href="http://www.jd.com/allSort.aspx" clstag="homepage|keycount|home2013|06a">全部商品分类<b></b></a></h2></div><div id="_JD_ALLSORT" class="mc"><div class="item fore1"><span data-split="1"><h3><a href="/products/1.html">图书、音像、电子书刊</a></h3><s></s></span></div><div class="item fore2"><span data-split="1"><h3><a href="/products/74.html">家用电器</a></h3><s></s></span></div><div class="item fore3"><span data-split="1"><h3><a href="/products/161.html">电脑、办公</a></h3><s></s></span></div><div class="item fore4"><span data-split="1"><h3><a href="/products/249.html">个护化妆</a></h3><s></s></span></div><div class="item fore5"><span data-split="1"><h3><a href="/products/290.html">钟表</a></h3><s></s></span></div><div class="item fore6"><span data-split="1"><h3><a href="/products/296.html">母婴</a></h3><s></s></span></div><div class="item fore7"><span data-split="1"><h3><a href="/products/378.html">食品饮料、保健食品</a></h3><s></s></span></div><div class="item fore8"><span data-split="1"><h3><a href="/products/438.html">汽车用品</a></h3><s></s></span></div><div class="item fore9"><span data-split="1"><h3><a href="/products/495.html">玩具乐器</a></h3><s></s></span></div><div class="item fore10"><span data-split="1"><h3><a href="/products/558.html">手机</a></h3><s></s></span></div><div class="item fore11"><span data-split="1"><h3><a href="/products/580.html">数码</a></h3><s></s></span></div><div class="item fore12"><span data-split="1"><h3><a href="/products/633.html">家居家装</a></h3><s></s></span></div><div class="item fore13"><span data-split="1"><h3><a href="/products/699.html">厨具</a></h3><s></s></span></div><div class="item fore14"><span data-split="1"><h3><a href="/products/749.html">服饰内衣</a></h3><s></s></span></div><div class="extra"><a {if="" pageconfig.ishome}clstag="homepage|keycount|home2013|0614a"{="" if}="" href="http://www.jd.com/allSort.aspx">全部商品分类</a></div></div></div><div id="treasure" clstag="homepage|keycount|home2013|08a"></div><ul id="navitems-2013"><li class="fore1" id="nav-home" clstag="homepage|keycount|home2013|07a"><a href="/">首页</a></li><li class="fore2" id="nav-fashion" clstag="homepage|keycount|home2013|07b"><a href="http://fashion.jd.com/">服装城</a></li><li class="fore3" id="nav-chaoshi" clstag="homepage|keycount|home2013|07c"><a href="http://channel.jd.com/chaoshi.html">食品</a></li><li class="fore4" id="nav-tuan" clstag="homepage|keycount|home2013|07d"><a href="http://tuan.jd.com/" target="_blank">团购</a></li><li class="fore5" id="nav-auction" clstag="homepage|keycount|home2013|07e"><a href="http://auction.jd.com/">夺宝岛</a></li><li class="fore6" id="nav-shan" clstag="homepage|keycount|home2013|07f"><a href="http://red.jd.com/" target="_blank">闪购</a></li><li class="fore7" id="nav-jinrong" clstag="homepage|keycount|home2013|07g1"><a href="http://jr.jd.com/" target="_blank">金融</a></li></ul></div></div>
</div>
<script type="text/javascript">
(function(){if(pageConfig.navId){var object=document.getElementById("nav-"+pageConfig.navId);if(object)object.className+=" curr";}})();
</script>

footer-links.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<div id="footer-2013"><div class="links"><a href="http://www.jd.com/intro/about.aspx" target="_blank" rel="nofollow">关于我们</a>|<a href="http://www.jd.com/contact/" target="_blank" rel="nofollow">联系我们</a>|<a href="http://zhaopin.jd.com/" target="_blank" rel="nofollow">人才招聘</a>|<a href="http://www.jd.com/contact/joinin.aspx" target="_blank" rel="nofollow">商家入驻</a>|<a href="http://jzt.jd.com" target="_blank" rel="nofollow">营销中心</a>|<a href="http://app.jd.com/" target="_blank" rel="nofollow">手机淘淘</a>|<a href="http://club.jd.com/links.aspx" target="_blank">友情链接</a>|<a href="http://media.jd.com/" target="_blank">销售联盟</a>|<a target="_blank" href="http://club.jd.com/">淘淘社区</a>|<a target="_blank" href="http://gongyi.jd.com">淘淘公益</a>|<a target="_blank" href="http://en.jd.com/">English Site</a></div>
</div>

footer.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<div class="w" clstag="homepage|keycount|home2013|37a"><div id="service-2013"><dl class="fore1"><dt><b></b><strong>购物指南</strong></dt><dd><div><a href="http://help.jd.com/help/question-56.html" target="_blank" rel="nofollow">购物流程</a></div><div><a href="http://help.jd.com/help/question-57.html" target="_blank" rel="nofollow">会员介绍</a></div><div><a href="http://help.jd.com/help/question-181.html" target="_blank" rel="nofollow">团购/机票</a></div><div><a href="http://help.jd.com/help/question-61.html" target="_blank" rel="nofollow">常见问题</a></div><div><a href="http://help.jd.com/help/question-63.html" target="_blank" rel="nofollow">大家电</a></div><div><a href="http://help.jd.com/index.html" target="_blank" rel="nofollow">联系客服</a></div></dd></dl><dl class="fore2">        <dt><b></b><strong>配送方式</strong></dt><dd><div><a href="http://help.jd.com/help/question-64.html" target="_blank" rel="nofollow">上门自提</a></div><div><a href="http://help.jd.com/help/question-360.html" target="_blank" rel="nofollow">211限时达</a></div><div><a href="http://help.jd.com/help/distribution-768.html" target="_blank" rel="nofollow">配送服务查询</a></div><div><a href="http://help.jd.com/help/question-892.html#help2215" target="_blank" rel="nofollow">配送费收取标准</a></div><div><a href="http://market.jd.com/giftcard/index.html#one5" target="_blank" rel="nofollow">如何送礼</a></div><div><a href="http://en.jd.com/chinese.html" target="_blank">海外配送</a></div></dd></dl><dl class="fore3"><dt><b></b><strong>支付方式</strong></dt><dd><div><a href="http://help.jd.com/help/question-67.html" target="_blank" rel="nofollow">货到付款</a></div><div><a href="http://help.jd.com/help/question-68.html" target="_blank" rel="nofollow">在线支付</a></div><div><a href="http://help.jd.com/help/question-71.html" target="_blank" rel="nofollow">分期付款</a></div><div><a href="http://help.jd.com/help/question-69.html" target="_blank" rel="nofollow">邮局汇款</a></div><div><a href="http://help.jd.com/help/question-70.html" target="_blank" rel="nofollow">公司转账</a></div></dd></dl><dl class="fore4">       <dt><b></b><strong>售后服务</strong></dt><dd><div><a href="http://myjd.jd.com/afs/help/afshelp.action" target="_blank" rel="nofollow">售后政策</a></div><div><a href="http://help.jd.com/help/question-99.html" target="_blank" rel="nofollow">价格保护</a></div><div><a href="http://help.jd.com/help/question-100.html" target="_blank" rel="nofollow">退款说明</a></div><div><a href="http://myjd.jd.com/repair/repairs.action" target="_blank" rel="nofollow">返修/退换货</a></div><div><a href="http://help.jd.com/help/question-881.html" target="_blank" rel="nofollow">取消订单</a></div></dd></dl><dl class="fore5"><dt><b></b><strong>特色服务</strong></dt><dd>     <div><a href="http://help.jd.com/help/question-79.html" target="_blank">夺宝岛</a></div><div><a href="http://help.jd.com/help/question-86.html" target="_blank">DIY装机</a></div><div><a href="http://fuwu.jd.com/" target="_blank" rel="nofollow">延保服务</a></div><div><a href="http://giftcard.jd.com/market/index.action" target="_blank" rel="nofollow">淘淘E卡</a></div><div><a href="http://help.jd.com/help/question-91.html" target="_blank" rel="nofollow">节能补贴</a></div><div><a href="http://mobile.jd.com/" target="_blank" rel="nofollow">淘淘通信</a></div></dd></dl><div class="fr"><div class="sm" id="branch-office"><div class="smt"><h3>淘淘自营覆盖区县</h3></div><div class="smc"><p>淘淘已向全国1859个区县提供自营配送服务,支持货到付款、POS机刷卡和售后上门服务。</p><p class="ar"><a href="http://help.jd.com/help/distribution-768.html" target="_blank">查看详情&nbsp;></a></p></div></div></div><span class="clr"></span></div>
</div>
<div class="w" clstag="homepage|keycount|home2013|38a"><jsp:include page="footer-links.jsp"></jsp:include>
</div>
<script type="text/javascript" src="/js/jquery-1.6.4.js"></script>
<script type="text/javascript" src="/js/jquery-extend.js"></script>
<script type="text/javascript" src="/js/lib-v1.js" charset="utf-8"></script>
<script type="text/javascript" src="/js/taotao.js" charset="utf-8"></script>
<script type="text/javascript"> (function(){
var A="<strong>热门搜索:</strong><a href='http://sale.jd.com/act/OfHQzJ2GLoYlmTIu.html' target='_blank' style='color:#ff0000' clstag='homepage|keycount|home2013|03b1'>校园之星</a><a href='http://sale.jd.com/act/aEBHqLFMfVzDZUvu.html' target='_blank'>办公打印</a><a href='http://www.jd.com/pinpai/878-12516.html' target='_blank'>美菱冰箱</a><a href='http://sale.jd.com/act/nuzKb6ZiYL.html' target='_blank'>无肉不欢</a><a href='http://sale.jd.com/act/ESvhtcAJNbaj.html' target='_blank'>万件好货</a><a href='http://sale.jd.com/act/nAqiWgU34frQolt.html' target='_blank'>iPhone6</a><a href='http://sale.jd.com/act/p0CmUlEFPHLX.html' target='_blank'>哈利波特</a><a href='http://sale.jd.com/act/FstSdb2vCOLa8BRi.html' target='_blank'>美模接驾</a>";
var B=["java","apple","LG G3","天梭","保温杯","三个爸爸"];
B=pageConfig.FN_GetRandomData(B);
$("#hotwords").html(A);
var _searchValue = "${query}";
if(_searchValue.length == 0){_searchValue = B;
}
$("#key").val(_searchValue).bind("focus",function(){if (this.value==B){this.value="";this.style.color="#333"}}).bind("blur",function(){if (!this.value){this.value=B;this.style.color="#999"}});
})();
</script>

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.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsdhttp://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsdhttp://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 /><!-- 视图解析器 --><beanclass="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.order.controller"/><!-- 配置拦截器 --><mvc:interceptors><mvc:interceptor><mvc:mapping path="/order/**"/><bean class="com.taotao.order.interceptor.LoginInterceptor"></bean></mvc:interceptor></mvc:interceptors><!-- 引用dubbo服务 --><dubbo:application name="taotao-order-web"/><dubbo:registry protocol="zookeeper" address="192.168.25.167:2181"/> <dubbo:reference interface="com.taotao.sso.service.UserService" id="userService" /><dubbo:reference interface="com.taotao.order.service.OrderService" id="orderService" />
</beans>      

resource.properties

#\u8d2d\u7269\u8f66\u5728cookie\u4e2d\u4fdd\u5b58\u7684key
CART_KEY=TT_CART
#token\u5728cookie\u4e2d\u4fdd\u5b58\u7684key
TOKEN_KEY=TT_TOKEN
#SSO\u7cfb\u7edf\u7684url
SSO_URL=http://localhost:8088
package com.taotao.order.interceptor;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;import com.taotao.common.pojo.TaotaoResult;
import com.taotao.common.utils.CookieUtils;
import com.taotao.common.utils.JsonUtils;
import com.taotao.pojo.TbUser;
import com.taotao.sso.service.UserService;/*** 判断用户是否登录拦截器* <p>Title: LoginInterceptor</p>* <p>Description: </p>* <p>Company: www.itcast.cn</p> * @version 1.0*/
public class LoginInterceptor implements HandlerInterceptor {@Value("${TOKEN_KEY}")private String TOKEN_KEY;@Value("${SSO_URL}")private String SSO_URL;@Autowiredprivate UserService userService;@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)throws Exception {//执行handler之前先执行此方法//1.从cookie中取token信息String token = CookieUtils.getCookieValue(request, TOKEN_KEY);//2.如果取不到token,跳转到sso的登录页面,需要把当前请求的url做为参数传递给sso,sso登录成功之后跳转回请求的页面。if (StringUtils.isBlank(token)) {//取当前请求的urlString requestURL = request.getRequestURL().toString();//跳转到登录页面response.sendRedirect(SSO_URL + "/page/login?url=" + requestURL);//拦截return false;}//3.取到token,调用sso系统的服务判断用户是否登录TaotaoResult taotaoResult = userService.getUserByToken(token);//4.如果用户未登录,即没取到用户信息。跳转到sso的登录页面if (taotaoResult.getStatus() != 200) {//取当前请求的urlString requestURL = request.getRequestURL().toString();//跳转到登录页面response.sendRedirect(SSO_URL + "/page/login?url=" + requestURL);//拦截return false;}//5.如果取到用户信息。放行。// 把用户信息放到request中TbUser user = (TbUser) taotaoResult.getData();request.setAttribute("user", user);//返回值true:放行    返回false:拦截return true;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,ModelAndView modelAndView) throws Exception {//handler执行之后,modelAndView返回之前}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)throws Exception {// 在ModelAndView返回之后,异常处理}}
package com.taotao.order.controller;import java.util.ArrayList;
import java.util.List;import javax.servlet.http.HttpServletRequest;import org.apache.commons.lang3.StringUtils;
import org.joda.time.DateTime;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;import com.taotao.common.pojo.TaotaoResult;
import com.taotao.common.utils.CookieUtils;
import com.taotao.common.utils.JsonUtils;
import com.taotao.order.pojo.OrderInfo;
import com.taotao.order.service.OrderService;
import com.taotao.pojo.TbItem;
import com.taotao.pojo.TbUser;/*** 订单确认页面处理Controller* <p>Title: OrderCartController</p>* <p>Description: </p>* <p>Company: www.itcast.cn</p> * @version 1.0*/
@Controller
public class OrderCartController {@Value("${CART_KEY}")private String CART_KEY;@Autowiredprivate OrderService orderService;/*** 展示订单确认页面* <p>Title: showOrderCart</p>* <p>Description: </p>* @param request* @return*/@RequestMapping("/order/order-cart")public String showOrderCart(HttpServletRequest request) {//用户必须是登录状态//取用户idTbUser user = (TbUser) request.getAttribute("user");System.out.println(user.getUsername());//根据用户信息取收货地址列表,使用静态数据。//把收货地址列表取出传递给页面//从cookie中取购物车商品列表展示到页面List<TbItem> cartList = getCartItemList(request);request.setAttribute("cartList", cartList);//返回逻辑视图return "order-cart";}private List<TbItem> getCartItemList(HttpServletRequest request) {//从cookie中取购物车商品列表String json = CookieUtils.getCookieValue(request, CART_KEY, true);if (StringUtils.isBlank(json)) {//如果没有内容,返回一个空的列表return new ArrayList<>();}List<TbItem> list = JsonUtils.jsonToList(json, TbItem.class);return list;}/*** 生成订单处理*/@RequestMapping(value="/order/create", method=RequestMethod.POST)public String createOrder(OrderInfo orderInfo, Model model) {//生成订单TaotaoResult result = orderService.createOrder(orderInfo);//返回逻辑视图model.addAttribute("orderId", result.getData().toString());model.addAttribute("payment", orderInfo.getPayment());//预计送达时间,预计三天后送达DateTime dateTime = new DateTime();dateTime = dateTime.plusDays(3);model.addAttribute("date", dateTime.toString("yyyy-MM-dd"));return "success";}
}

Taotao-order

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-order</artifactId><version>0.0.1-SNAPSHOT</version><packaging>pom</packaging><modules><module>taotao-order-interface</module><module>taotao-order-service</module></modules><dependencies><dependency><groupId>com.taotao</groupId><artifactId>taotao-common</artifactId><version>0.0.1-SNAPSHOT</version></dependency></dependencies><build><plugins><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><configuration><path>/</path><port>8090</port></configuration></plugin></plugins></build>
</project>

taotao-order-service

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-order</artifactId><version>0.0.1-SNAPSHOT</version></parent><artifactId>taotao-order-service</artifactId><packaging>war</packaging><dependencies><dependency><groupId>com.taotao</groupId><artifactId>taotao-manager-dao</artifactId><version>0.0.1-SNAPSHOT</version></dependency><dependency><groupId>com.taotao</groupId><artifactId>taotao-order-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><!-- 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><!-- Redis客户端 --><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId></dependency></dependencies></project>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"id="WebApp_ID" version="2.5"><display-name>taotao-order</display-name><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><!-- 初始化spring容器 --><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring/applicationContext-*.xml</param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener></web-app>

applicationContext-trans.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsdhttp://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.2.xsd"><!-- 事务管理器 --><bean id="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><!-- 数据源 --><property name="dataSource" ref="dataSource" /></bean><!-- 通知 --><tx:advice id="txAdvice" transaction-manager="transactionManager"><tx:attributes><!-- 传播行为 --><tx:method name="save*" propagation="REQUIRED" /><tx:method name="insert*" propagation="REQUIRED" /><tx:method name="add*" propagation="REQUIRED" /><tx:method name="create*" propagation="REQUIRED" /><tx:method name="delete*" propagation="REQUIRED" /><tx:method name="update*" propagation="REQUIRED" /><tx:method name="find*" propagation="SUPPORTS" read-only="true" /><tx:method name="select*" propagation="SUPPORTS" read-only="true" /><tx:method name="get*" propagation="SUPPORTS" read-only="true" /></tx:attributes></tx:advice><!-- 切面 --><aop:config><aop:advisor advice-ref="txAdvice"pointcut="execution(* com.taotao.order.service.*.*(..))" /></aop:config></beans>

applicationContext-service.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsdhttp://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsdhttp://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.2.xsd"><!-- 配置包扫描器,扫描所有带@Service注解的类 --><context:component-scan base-package="com.taotao.order.service"/><!-- 发布dubbo服务 --><!-- 提供方应用信息,用于计算依赖关系 --><dubbo:application name="taotao-order" /><!-- 注册中心的地址 --><dubbo:registry protocol="zookeeper" address="192.168.25.167:2181" /><!-- 用dubbo协议在20880端口暴露服务 --><dubbo:protocol name="dubbo" port="20884" /><!-- 声明需要暴露的服务接口 --><dubbo:service interface="com.taotao.order.service.OrderService" ref="orderServiceImpl" timeout="300000"/>
</beans>

applicationContext-redis.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsdhttp://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.2.xsd"><context:annotation-config/><!-- redis单机版 --><bean id="jedisPool" class="redis.clients.jedis.JedisPool"><constructor-arg name="host" value="192.168.25.153"/>  <constructor-arg name="port" value="6379"/> </bean><bean id="jedisClientPool" class="com.taotao.jedis.JedisClientPool"/><!-- redis集群 --><!-- <bean id="jedisCluster" class="redis.clients.jedis.JedisCluster"><constructor-arg><set><bean class="redis.clients.jedis.HostAndPort"><constructor-arg name="host" value="192.168.25.153"/><constructor-arg name="port" value="7001"/></bean><bean class="redis.clients.jedis.HostAndPort"><constructor-arg name="host" value="192.168.25.153"/><constructor-arg name="port" value="7002"/></bean><bean class="redis.clients.jedis.HostAndPort"><constructor-arg name="host" value="192.168.25.153"/><constructor-arg name="port" value="7003"/></bean><bean class="redis.clients.jedis.HostAndPort"><constructor-arg name="host" value="192.168.25.153"/><constructor-arg name="port" value="7004"/></bean><bean class="redis.clients.jedis.HostAndPort"><constructor-arg name="host" value="192.168.25.153"/><constructor-arg name="port" value="7005"/></bean><bean class="redis.clients.jedis.HostAndPort"><constructor-arg name="host" value="192.168.25.153"/><constructor-arg name="port" value="7006"/></bean></set></constructor-arg></bean><bean id="jedisClientCluster" class="com.taotao.jedis.JedisClientCluster"/> -->
</beans>

applicationContext-dao.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsdhttp://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.2.xsd"><!-- 配置数据库连接池 --><!-- 加载配置文件 --><context:property-placeholder location="classpath:properties/*.properties" /><!-- 数据库连接池 --><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"destroy-method="close"><property name="url" value="${jdbc.url}" /><property name="username" value="${jdbc.username}" /><property name="password" value="${jdbc.password}" /><property name="driverClassName" value="${jdbc.driver}" /><property name="maxActive" value="10" /><property name="minIdle" value="5" /></bean><!-- SqlSessionFactory --><!-- 让spring管理sqlsessionfactory 使用mybatis和spring整合包中的 --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><!-- 数据库连接池 --><property name="dataSource" ref="dataSource" /><!-- 加载mybatis的全局配置文件 --><property name="configLocation" value="classpath:mybatis/SqlMapConfig.xml" /></bean><!-- Mapper映射文件的包扫描器 --><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="com.taotao.mapper" /></bean></beans>

resource.properties

#\u8ba2\u5355\u53f7\u751f\u6210key
ORDER_ID_GEN_KEY=ORDER_ID_GEN
#\u8ba2\u5355\u53f7\u521d\u59cb\u503c
ORDER_ID_BEGIN_VALUE=100544
#\u8ba2\u5355\u660e\u7ec6\u8868\u4e3b\u952e\u751f\u6210key
ORDER_ITEM_ID_GEN_KEY=ORDER_ITEM_ID_GEN

db.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/taotao?characterEncoding=utf-8
jdbc.username=root
jdbc.password=root

SqlMapConfig.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><!-- 配置分页插件 --><plugins><plugin interceptor="com.github.pagehelper.PageHelper"><!-- 配置数据库的方言 --><!-- 设置数据库类型 Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库-->        <property name="dialect" value="mysql"/></plugin></plugins>
</configuration>
package com.taotao.order.service.impl;import java.awt.datatransfer.FlavorEvent;
import java.util.Date;
import java.util.List;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;import com.taotao.common.pojo.TaotaoResult;
import com.taotao.jedis.JedisClient;
import com.taotao.mapper.TbOrderItemMapper;
import com.taotao.mapper.TbOrderMapper;
import com.taotao.mapper.TbOrderShippingMapper;
import com.taotao.order.pojo.OrderInfo;
import com.taotao.order.service.OrderService;
import com.taotao.pojo.TbOrderItem;
import com.taotao.pojo.TbOrderShipping;/*** 订单处理Server* <p>Title: OrderServiceImpl</p>* <p>Description: </p>* <p>Company: www.itcast.cn</p> * @version 1.0*/
@Service
public class OrderServiceImpl implements OrderService {@Autowiredprivate TbOrderMapper orderMapper;@Autowiredprivate TbOrderItemMapper orderItemMapper;@Autowiredprivate TbOrderShippingMapper orderShippingMapper;@Autowiredprivate JedisClient jedisClient;@Value("${ORDER_ID_GEN_KEY}")private String ORDER_ID_GEN_KEY;@Value("${ORDER_ID_BEGIN_VALUE}")private String ORDER_ID_BEGIN_VALUE;@Value("${ORDER_ITEM_ID_GEN_KEY}")private String ORDER_ITEM_ID_GEN_KEY;@Overridepublic TaotaoResult createOrder(OrderInfo orderInfo) {//生成订单号,可以使用redis的incr生成if (!jedisClient.exists(ORDER_ID_GEN_KEY)) {//设置初始值jedisClient.set(ORDER_ID_GEN_KEY, ORDER_ID_BEGIN_VALUE);}String orderId = jedisClient.incr(ORDER_ID_GEN_KEY).toString();//向订单表插入数据,需要补全pojo的属性orderInfo.setOrderId(orderId);//免邮费orderInfo.setPostFee("0");//1、未付款,2、已付款,3、未发货,4、已发货,5、交易成功,6、交易关闭orderInfo.setStatus(1);//订单创建时间orderInfo.setCreateTime(new Date());orderInfo.setUpdateTime(new Date());//向订单 表插入数据orderMapper.insert(orderInfo);//向订单明细表插入数据。List<TbOrderItem> orderItems = orderInfo.getOrderItems();for (TbOrderItem tbOrderItem : orderItems) {//获得明细主键String oid = jedisClient.incr(ORDER_ITEM_ID_GEN_KEY).toString();tbOrderItem.setId(oid);tbOrderItem.setOrderId(orderId);//插入明细数据orderItemMapper.insert(tbOrderItem);}//向订单物流表插入数据TbOrderShipping orderShipping = orderInfo.getOrderShipping();orderShipping.setOrderId(orderId);orderShipping.setCreated(new Date());orderShipping.setUpdated(new Date());orderShippingMapper.insert(orderShipping);//返回订单号return TaotaoResult.ok(orderId);}}
package com.taotao.jedis;import org.springframework.beans.factory.annotation.Autowired;import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;public class JedisClientPool implements JedisClient {@Autowiredprivate JedisPool jedisPool;@Overridepublic String set(String key, String value) {Jedis jedis = jedisPool.getResource();String result = jedis.set(key, value);jedis.close();return result;}@Overridepublic String get(String key) {Jedis jedis = jedisPool.getResource();String result = jedis.get(key);jedis.close();return result;}@Overridepublic Boolean exists(String key) {Jedis jedis = jedisPool.getResource();Boolean result = jedis.exists(key);jedis.close();return result;}@Overridepublic Long expire(String key, int seconds) {Jedis jedis = jedisPool.getResource();Long result = jedis.expire(key, seconds);jedis.close();return result;}@Overridepublic Long ttl(String key) {Jedis jedis = jedisPool.getResource();Long result = jedis.ttl(key);jedis.close();return result;}@Overridepublic Long incr(String key) {Jedis jedis = jedisPool.getResource();Long result = jedis.incr(key);jedis.close();return result;}@Overridepublic Long hset(String key, String field, String value) {Jedis jedis = jedisPool.getResource();Long result = jedis.hset(key, field, value);jedis.close();return result;}@Overridepublic String hget(String key, String field) {Jedis jedis = jedisPool.getResource();String result = jedis.hget(key, field);jedis.close();return result;}@Overridepublic Long hdel(String key, String... field) {Jedis jedis = jedisPool.getResource();Long result = jedis.hdel(key, field);jedis.close();return result;}}
package com.taotao.jedis;import org.springframework.beans.factory.annotation.Autowired;import redis.clients.jedis.JedisCluster;public class JedisClientCluster implements JedisClient {@Autowiredprivate JedisCluster jedisCluster;@Overridepublic String set(String key, String value) {return jedisCluster.set(key, value);}@Overridepublic String get(String key) {return jedisCluster.get(key);}@Overridepublic Boolean exists(String key) {return jedisCluster.exists(key);}@Overridepublic Long expire(String key, int seconds) {return jedisCluster.expire(key, seconds);}@Overridepublic Long ttl(String key) {return jedisCluster.ttl(key);}@Overridepublic Long incr(String key) {return jedisCluster.incr(key);}@Overridepublic Long hset(String key, String field, String value) {return jedisCluster.hset(key, field, value);}@Overridepublic String hget(String key, String field) {return jedisCluster.hget(key, field);}@Overridepublic Long hdel(String key, String... field) {return jedisCluster.hdel(key, field);}}
package com.taotao.jedis;public interface JedisClient {String set(String key, String value);String get(String key);Boolean exists(String key);Long expire(String key, int seconds);Long ttl(String key);Long incr(String key);Long hset(String key, String field, String value);String hget(String key, String field);Long hdel(String key, String... field);
}

taotao-order-interface

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-order</artifactId><version>0.0.1-SNAPSHOT</version></parent><artifactId>taotao-order-interface</artifactId><dependencies><dependency><groupId>com.taotao</groupId><artifactId>taotao-manager-pojo</artifactId><version>0.0.1-SNAPSHOT</version></dependency></dependencies>
</project>
package com.taotao.order.service;import com.taotao.common.pojo.TaotaoResult;
import com.taotao.order.pojo.OrderInfo;public interface OrderService {TaotaoResult createOrder(OrderInfo orderInfo);
}
package com.taotao.order.pojo;import java.io.Serializable;
import java.util.List;import com.taotao.pojo.TbOrder;
import com.taotao.pojo.TbOrderItem;
import com.taotao.pojo.TbOrderShipping;public class OrderInfo extends TbOrder implements Serializable{private List<TbOrderItem> orderItems;private TbOrderShipping orderShipping;public List<TbOrderItem> getOrderItems() {return orderItems;}public void setOrderItems(List<TbOrderItem> orderItems) {this.orderItems = orderItems;}public TbOrderShipping getOrderShipping() {return orderShipping;}public void setOrderShipping(TbOrderShipping orderShipping) {this.orderShipping = orderShipping;}}

FastDFS,Redis,Solr,ActiveMQ核心技术整合三相关推荐

  1. FastDFS,Redis,Solr,ActiveMQ核心技术整合五

    02.商品分类选择-分析-前端js_ 03.商品分类选择-分析-数据库_ (JJTree渲染过程解析(parent_id为0就是父节点,is_parent为1说明下面有子节点,state1正常2删除. ...

  2. FastDFS,Redis,Solr,ActiveMQ核心技术整合二(2)

    02.商品分类选择-分析-前端js_ 03.商品分类选择-分析-数据库_ (JJTree渲染过程解析(parent_id为0就是父节点,is_parent为1说明下面有子节点,state1正常2删除. ...

  3. FastDFS,Redis,Solr,ActiveMQ核心技术整合二(1)

    02.商品分类选择-分析-前端js_ 03.商品分类选择-分析-数据库_ (JJTree渲染过程解析(parent_id为0就是父节点,is_parent为1说明下面有子节点,state1正常2删除. ...

  4. B2C商城项目源码,基于Java开发的高可用分布式B2C商城系统,Java+Spring MVC+Dubbo+Zookeeper+MySQL+Redis+FastDFS+Nginx+Solr

    目录 前言 B2C商城-AIYOU 一.项目总体架构 二.系统软硬件设施总体规划 1.系统服务规划 2.应用服务规划 3.应用系统域名规划 三.系统运行环境构建 四.项目数据库创建 五.项目拉取 六. ...

  5. Redis 集群搭建(三):Docker 部署 Redis + Sentinel 高可用集群

    Redis 集群搭建(三):Docker 部署 Redis + Sentinel 高可用集群 前言 建议 官方译文 什么是 Sentinel? Sentinel 优点 Redis 配置文件 maste ...

  6. 大型分布式redis+solr+Linux+nginx+springmvc+mybatis电商项目-任亮-专题视频课程

    大型分布式redis+solr+Linux+nginx+springmvc+mybatis电商项目-45845人已学习 课程介绍         中国移动省级网上商城项目,用于建立网上终端.营销案和号 ...

  7. lamp架构之redis(3):redis和mysql的整合

    redis和mysql的整合 一.redis结合mysql 1.redis和mysql的基础概念 2.redis和mysql的区别总结 3.为什么要作缓存 4.redis作为缓存 二.环境部署 三.m ...

  8. [ 搭建Redis本地服务器实践系列三 ] :图解Redis客户端工具连接Redis服务器

    原文:[ 搭建Redis本地服务器实践系列三 ] :图解Redis客户端工具连接Redis服务器 上一章 [ 搭建Redis本地服务器实践系列二 ] :图解CentOS7配置Redis  介绍了Red ...

  9. 请求solr服务器未响应,solr与tomcat整合

    一.准备工作:我使用的是tomcat7.0,solr-4.8.1 solr-4.8.1解压后是这样的. 二.开始配置了 1.首先要创建两个文件夹.home和server.我是创建在与solr-4.8. ...

最新文章

  1. Jpa-操作mongodb
  2. zzUbuntu安装配置Qt环境
  3. MySQL等值传播(low!就是一层窗户纸)
  4. SAP CRM产品主数据错误消息Product ID Not in valid range的分析方法
  5. mysql 查看锁_MySQL反应慢的排查思路
  6. 关于字符集--总结,补遗以及问题
  7. centos8共享文件夹挂载_CentOS 8 安装并配置NFS服务
  8. 没有足够的值_元丰通宝值多少钱吗?市场价值如何?有没有足够的收藏空间?...
  9. 201521123016《Java设计与程序》第6周学习总结
  10. 9型转x型 cobol_9家企业入列省首批试点 建设培育产教融合型企业
  11. Microsoft Caffe(msCaffe)无GPU快速配置
  12. 风险投资,扼杀中国互联网创新的黑手
  13. atoi,itoa,strcpy, strcmp,strcpy, strcpy_s, memc...
  14. 关于官方Reachability Demo理解
  15. 北斗导航 | 基于奇偶矢量法的RAIM之SSE探索(附奇偶矢量法源代码)
  16. MATLAB Simulink工具箱
  17. 手把手教你如何在Innovus中解决local congestion问题
  18. 教师备课计算机教师管理制度,计算机学院教学过程管理中教师职责与问责暂行规定--中地大计字[2016]03号...
  19. Azure NSG Flow Log 引发的自嗨 -- 日志 ETL 流式处理
  20. iperf工具的安装和使用

热门文章

  1. php 并发下载文件,PHP 并发下载 - 鸟屁不会的程序猿的个人空间 - OSCHINA - 中文开源技术交流社区...
  2. Android 本地网络小说爬虫,基于 jsoup 及 xpath
  3. windows正版验证问题。。。
  4. c#流程控制语句简单经典应用
  5. 乐之邦07mp或08mp固件下载及说明书
  6. GRUB (简体中文)
  7. VxWorks 的 RapidIO
  8. EMA计算(pandas之emw函数使用及设置)
  9. 大咖 | 从Ian Goodfellow到Yann LeCun,对话Quora AI大佬TOP 10
  10. 【山东】关于2012年下半年计算机技术与软件专业技术资格(水平)考试有关问题的通知