码迷,mamicode.com
首页 > 其他好文 > 详细

电商01

时间:2017-06-11 20:13:10      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:fastdfs   根据   lap   dtree   工具类   remove   ant   put   上传   

横向切分,把表现层和服务层拆分成不同的war包;纵向切分,把各个模块分成不同war包

1 电商核心业务主线

技术分享

2 项目介绍

传统项目:使用人群是企业内部员工,类似项目(OA、ERP等)

互联网项目:使用人群是互联网用户,类似项目(京东、P2P金融)

IT公司类型:

自己做产品的:京东、淘宝、还有一些创业公司。特点是产品开发周期长

做互联网软件的:方正、北明、中软。开发周期一般最多半年。

人力外包公司:华为、软通动力。开发周期一般三四个月。

3 整体课程计划

第一天:

1、 电商介绍

2、 宜立方商城介绍

a) 宜立方商城的架构

3、 搭建后台管理系统

a) 使用maven搭建

4、 SSM框架整合

5、 上传代码到SVN

第二天:

1、 改造工程为SOA架构

a) 服务中间件dubbo

b) 工程改造

2、 后台首页展示及功能页面展示

3、 商品列表功能开发

a) Mybatis的分页(pagehelper)

第三天:

1、 创建商品之商品类目选择(easyui tree控件(ztree、dtree))

2、 创建商品之分析商品图片上传

3、 图片展示之Nginx讲解

第四天:

1、 图片服务器fastdfs讲解(不需要课堂安装,直接提供安装好的虚拟机)

2、 实现图片上传功能

3、 商品描述之富文本编辑器(KindEditor【fckeditor】)

4、 实现商品添加功能

第五天:

1、 搭建EC系统

2、 展示商城首页

3、 CMS系统实现

a) 内容分类(广告位)管理

b) 内容(广告)管理

第六天:

1、 首页大广告位动态展示

2、 redis安装

3、 redis集群安装

4、 实现业务缓存逻辑

第七天:

1、 搜索系统搭建

2、 Solr安装

3、 初始化商品索引数据

4、 实现搜索功能

第八天:

1、 solrcloud 集群搭建

2、 activemq介绍

3、 activemq安装配置

4、 activemq使用

第九天:

1、 实现商品索引同步

2、 商品详情页动态展示(jsp+redis)

3、 Freemarker讲解

第十天:

1、 商品详情页静态化

2、 创建登录系统

3、 实现注册功能

第十一天:

1、 实现登录功能

2、 Cookie跨域

3、 Js跨域

第十二天:

1、 创建购物车系统

2、 实现购物车功能

第十三天:

1、创建订单系统

2、实现下单功能

第十四天:

1、 项目部署

2、 项目总结

3、 面试中遇到的问题


4 电商介绍

4.1 电商理解

电商,全名叫电子商务,英文名称Electronic Commerce,简称EC。

“21世纪要么‘电子商务’,要么‘无商可务’”——比尔?盖茨对电子商务的高度评价。

电子商务通常是指在全球各地广泛的商业贸易活动中,在因特网开放的网络环境下,基于浏览器/服务器应用方式,买卖双方不谋面地进行各种商贸活动,实现消费者的网上购物、商户之间的网上交易和在线电子支付以及各种商务活动、交易活动、金融活动和相关的综合服务活动的一种新型的商业运营模式。

4.2 电商运营模式(掌握)

按照电商行业的运营模型,一般分为以下几种模式:

B2B:商家到商家。例如:阿里巴巴(www.1688.com)、慧聪网。

B2C:商家到用户。例如京东商城、国美网上商城、小米商城、华为商城。

B2B2C:商家到商家到用户,比如京东、天猫都有第三方商户。

C2C:用户到用户。比如淘宝。

O2O:线上到线下,比如百度外卖、美团等。

4.3 11.11

技术分享

技术分享

技术分享

4.4 电商行业技术特点

? 分布式

? 高并发

? 高可用

? 集群

? 负载均衡

? 海量数据

? 系统安全

5 宜立方商城介绍

5.1 商城概述

宜立方网上商城是一个综合性的B2C商城,运营模式类似京东商城。对于B2C模式的商城来说,它的系统主要包括『前台商城系统』、『后台管理系统』,及一些『周边系统』。

[商城会员]可以在『前台商城系统』搜索商品、用户登录、添加购物车、提交订单等操作。

[商城运营人员]可以在『后台管理系统』中管理商品、订单、会员等信息。

[商城客服人员]可以在『后台管理系统』中处理用户的询问以及投诉等操作。

5.2 功能架构

技术分享

5.3 系统架构(重点)

5.3.1 传统架构

依照传统架构实现的话,只需要创建一个工程即可。

技术分享

思考:传统架构在互联网应用中存在什么问题?

1、 系统耦合性高,一个模块出现问题,其他模块都无法正常使用。

2、 系统扩展性差,添加新功能时,会对现有系统产生破坏。

5.3.2 分布式系统架构

依据分布式系统架构实现的话,需要创建多个工程,不同的工程完成不同的功能。

技术分享

分布式架构:把系统按照系统模块拆分成多个独立的子系统。

优点:

1、系统之间弱耦合,把模块拆分,使用接口通信,降低模块之间的耦合度。

2、系统之间扩展性好,有新功能时,添加子模块即可,不会对原有系统产生破坏,大大增强系统可扩展性。

3、部署灵活方便,互联网应用需要进行分布式部署,使用这种架构,可以灵活的进行分布式部署。

缺点:

系统之间交互需要使用远程通信,接口开发增加工作量。

5.3.3 宜立方商城系统架构(SOA)

宜立方商城的架构就是采用的分布式架构,只不过在此架构基础之上,我们又实现了面向服务的思想,所以宜立方商城的架构就是分布式服务架构。

宜立方商城架构体系两部分信息:

1、 分布式(表现层分布式、服务层分布式)

2、 面向服务(表现层和服务层拆分)

a) 需要使用RPC框架(webservice,soap协议很大)

b) 使用restful请求(比如移动端app调用后台服务,调用http请求)

c) Dubbo(阿里出品,只能在公司内部使用)

具体架构如下:

技术分享

宜立方商城的架构:

1、 先是按照工程的三层结构进行拆分。

2、 其次再根据功能模块进行拆分。

5.4 技术选项

l Maven(管理依赖及工程构建)

l SVN(版本控制工具)

l SSM框架(spring+springmvc+mybatis)

l Mysql(数据库)

l JSP、jQuery、jQuery EasyUI、KindEditor(富文本编辑器)

l Linux

l Redis(缓存服务器)

l RedisCluster(集群)

l Solr(搜索服务器)

l solrcloud集群

l Dubbo+zookeeper(调用&发布服务)

l Nginx(http&反向代理服务器)

l FastDFS(图片服务器)

l Freemarker(页面静态化)

l Activemq消息中间件

6 搭建后台管理系统

整个电商系统中的工程都是由maven来创建。

Maven是一个项目管理工具,也是一个项目构建工具,类似的产品有ant。

Maven的核心功能:依赖管理(使用POM文件进行jar包的管理)、项目构建(使用插件使用项目的编译、打包、部署等操作)

Maven有三大生命周期:clean、Default、site

主要是使用Default生命周期,该周期包含几个阶段(phase):compile、test、package\isntall\deploy

每个生命周期包含几个有固定顺序的阶段,每个阶段由插件(plugin)实现。

Maven的核心概念:坐标(GAV)、依赖传递、继承、聚合

继承和聚合都是POM工程。

项目一创建的父工程,即体现继承也体现聚合。

在继承的父工程中,项目管理依赖版本。继承简单点将就是继承了POM文件。

在聚合工程中,实际上就是将聚合工程的子模块,最终合成一个war包。

Maven有仓库的概念,使用仓库可以对依赖进行管理。

仓库分为本地仓库和远程仓库(中央仓库、私服)。

使用maven很重要的认识就是需要知道本地仓库?建议一个项目单独指定本地仓库地址。

我们为什么使用maven来创建工程呢?

首先,maven是一个优秀的项目构建工具。使用maven,可以很方便的对项目进行分模块构建,这样在开发和测试打包部署时,效率会提高很多。

其次,maven可以进行依赖的管理。使用maven,可以将不同系统的依赖进行统一管理,并且可以进行依赖之间的传递和继承。

6.1 设置宜立方商城Maven本地仓库

使用eclipse mars2自带的maven插件,但是maven版本是3.3.9,指定宜立方商城专用本地仓库地址。

技术分享

如果不能联网,可以将以下仓库压缩包解压,然后拷贝repository目录中的内容到自己的本地仓库位置,比如我的本地仓库:E:\08-repo\02-e3\repository

6.2 Maven工程结构

|--e3-parent(父工程,主要管理依赖版本,不真实添加依赖,打包类型POM)

|--e3-common(通用工具类工程,jar)

|--e3-manager(后台管理系统,聚合工程POM)

|--e3-manager-pojo(实体类工程,jar)

|--e3-manager-dao(持久层工程,jar)

|--e3-manager-interface(服务层工程,jar)

|--e3-manager-service(服务实现类工程,jar)

|--e3-manager-web(表现层工程,war)

6.3 搭建e3-parent

作用:使用dependencyManagement标签统一管理依赖版本号。

6.3.1 POM文件

<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>

<groupId>cn.e3mall</groupId>

<artifactId>e3-parent</artifactId>

<version>0.0.1-SNAPSHOT</version>

<packaging>pom</packaging>

<!-- 集中管理版本号 -->

<properties>

<!-- 数据库相关 -->

<mysql.version>5.1.32</mysql.version>

<druid.version>1.0.9</druid.version>

<mybatis.version>3.2.8</mybatis.version>

<pagehelper.version>3.4.2-fix</pagehelper.version>

<!-- mybatis与spring整合包 -->

<mybatis.spring.version>1.2.2</mybatis.spring.version>

<!-- spring相关 -->

<spring.version>4.1.3.RELEASE</spring.version>

<!-- 页面相关 -->

<jstl.version>1.2</jstl.version>

<freemarker.version>2.3.23</freemarker.version>

<jackson.version>2.4.2</jackson.version>

<!-- 日志相关 -->

<slf4j.version>1.6.4</slf4j.version>

<!-- 日期库 -->

<joda-time.version>2.5</joda-time.version>

<!-- commons工具包 -->

<commons-lang3.version>3.3.2</commons-lang3.version>

<commons-io.version>1.3.2</commons-io.version>

<commons-fileupload.version>1.3.1</commons-fileupload.version>

<commons-net.version>3.3</commons-net.version>

<!-- redis客户端 -->

<jedis.version>2.7.2</jedis.version>

<!-- solr客户端 -->

<solrj.version>4.10.3</solrj.version>

<!-- quartz时间任务 -->

<quartz.version>2.2.2</quartz.version>

<!-- servlet相关 -->

<servlet-api.version>2.5</servlet-api.version>

<jsp-api.version>2.0</jsp-api.version>

<!-- 单元测试 -->

<junit.version>4.12</junit.version>

<!-- dubbo -->

<dubbo.version>2.5.3</dubbo.version>

<zookeeper.version>3.4.7</zookeeper.version>

<zkclient.version>0.1</zkclient.version>

<!-- fastdfs依赖 -->

<fastdfs_client.version>1.25</fastdfs_client.version>

<!-- activemq依赖 -->

<activemq.verion>5.11.2</activemq.verion>

</properties>

<!-- 统一管理依赖版本号 -->

<dependencyManagement>

<dependencies>

<!-- 时间操作组件 -->

<dependency>

<groupId>joda-time</groupId>

<artifactId>joda-time</artifactId>

<version>${joda-time.version}</version>

</dependency>

<!-- Apache工具组件 -->

<dependency>

<groupId>org.apache.commons</groupId>

<artifactId>commons-lang3</artifactId>

<version>${commons-lang3.version}</version>

</dependency>

<dependency>

<groupId>org.apache.commons</groupId>

<artifactId>commons-io</artifactId>

<version>${commons-io.version}</version>

</dependency>

<!-- 文件上传组件 -->

<dependency>

<groupId>commons-fileupload</groupId>

<artifactId>commons-fileupload</artifactId>

<version>${commons-fileupload.version}</version>

</dependency>

<dependency>

<groupId>commons-net</groupId>

<artifactId>commons-net</artifactId>

<version>${commons-net.version}</version>

</dependency>

<!-- Jackson Json处理工具包 -->

<dependency>

<groupId>com.fasterxml.jackson.core</groupId>

<artifactId>jackson-databind</artifactId>

<version>${jackson.version}</version>

</dependency>

<!-- 单元测试 -->

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>${junit.version}</version>

</dependency>

<!-- 日志处理 -->

<dependency>

<groupId>org.slf4j</groupId>

<artifactId>slf4j-log4j12</artifactId>

<version>${slf4j.version}</version>

</dependency>

<!-- mysql驱动 -->

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

<version>${mysql.version}</version>

</dependency>

<!-- 数据库连接池包 德鲁伊(druid) -->

<dependency>

<groupId>com.alibaba</groupId>

<artifactId>druid</artifactId>

<version>${druid.version}</version>

</dependency>

<!-- mybatis -->

<dependency>

<groupId>org.mybatis</groupId>

<artifactId>mybatis</artifactId>

<version>${mybatis.version}</version>

</dependency>

<!-- mybatis的分页插件 -->

<dependency>

<groupId>com.github.pagehelper</groupId>

<artifactId>pagehelper</artifactId>

<version>${pagehelper.version}</version>

</dependency>

<!-- mybatis与spring的整合包 -->

<dependency>

<groupId>org.mybatis</groupId>

<artifactId>mybatis-spring</artifactId>

<version>${mybatis.spring.version}</version>

</dependency>

<!-- spring的包 -->

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-context</artifactId>

<version>${spring.version}</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-beans</artifactId>

<version>${spring.version}</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-jdbc</artifactId>

<version>${spring.version}</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-webmvc</artifactId>

<version>${spring.version}</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-aspects</artifactId>

<version>${spring.version}</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-context-support</artifactId>

<version>${spring.version}</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-jms</artifactId>

<version>${spring.version}</version>

</dependency>

<!-- jsp相关 -->

<dependency>

<groupId>jstl</groupId>

<artifactId>jstl</artifactId>

<version>${jstl.version}</version>

</dependency>

<!-- freemarker相关 -->

<dependency>

<groupId>org.freemarker</groupId>

<artifactId>freemarker</artifactId>

<version>${freemarker.version}</version>

</dependency>

<!-- servlet-api和jsp-api -->

<dependency>

<groupId>javax.servlet</groupId>

<artifactId>servlet-api</artifactId>

<version>${servlet-api.version}</version>

<scope>provided</scope>

</dependency>

<dependency>

<groupId>javax.servlet</groupId>

<artifactId>jsp-api</artifactId>

<version>${jsp-api.version}</version>

<scope>provided</scope>

</dependency>

<!-- Redis客户端 -->

<dependency>

<groupId>redis.clients</groupId>

<artifactId>jedis</artifactId>

<version>${jedis.version}</version>

</dependency>

<!-- solr客户端 -->

<dependency>

<groupId>org.apache.solr</groupId>

<artifactId>solr-solrj</artifactId>

<version>${solrj.version}</version>

</dependency>

<!-- 定时任务 -->

<dependency>

<groupId>org.quartz-scheduler</groupId>

<artifactId>quartz</artifactId>

<version>${quartz.version}</version>

</dependency>

<!-- dubbo相关 -->

<dependency>

<groupId>com.alibaba</groupId>

<artifactId>dubbo</artifactId>

<version>${dubbo.version}</version>

</dependency>

<dependency>

<groupId>org.apache.zookeeper</groupId>

<artifactId>zookeeper</artifactId>

<version>${zookeeper.version}</version>

</dependency>

<dependency>

<groupId>com.github.sgroschupf</groupId>

<artifactId>zkclient</artifactId>

<version>${zkclient.version}</version>

</dependency>

<dependency>

<groupId>fastdfs_client</groupId>

<artifactId>fastdfs_client</artifactId>

<version>${fastdfs_client.version}</version>

</dependency>

<dependency>

<groupId>org.apache.activemq</groupId>

<artifactId>activemq-all</artifactId>

<version>${activemq.verion}</version>

</dependency>

</dependencies>

</dependencyManagement>

<build>

<!-- 定制打包的包名 -->

<finalName>${project.artifactId}</finalName>

<plugins>

<!-- 资源文件拷贝插件 -->

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-resources-plugin</artifactId>

<version>2.7</version>

<configuration>

<encoding>UTF-8</encoding>

</configuration>

</plugin>

<!-- java编译插件 -->

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-compiler-plugin</artifactId>

<version>3.2</version>

<configuration>

<source>1.7</source>

<target>1.7</target>

<encoding>UTF-8</encoding>

</configuration>

</plugin>

</plugins>

<pluginManagement>

<plugins>

<!-- 配置Tomcat插件,只管理,不真实添加tomcat插件 -->

<plugin>

<groupId>org.apache.tomcat.maven</groupId>

<artifactId>tomcat7-maven-plugin</artifactId>

<version>2.2</version>

</plugin>

</plugins>

</pluginManagement>

</build>

</project>

6.4 搭建e3-common

6.4.1 POM文件

<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>cn.e3mall</groupId>

<artifactId>e3-parent</artifactId>

<version>0.0.1-SNAPSHOT</version>

</parent>

<artifactId>e3-common</artifactId>

<!-- 添加依赖 -->

<dependencies>

<!-- 时间操作组件 -->

<dependency>

<groupId>joda-time</groupId>

<artifactId>joda-time</artifactId>

</dependency>

<!-- Apache工具组件 -->

<dependency>

<groupId>org.apache.commons</groupId>

<artifactId>commons-lang3</artifactId>

</dependency>

<dependency>

<groupId>org.apache.commons</groupId>

<artifactId>commons-io</artifactId>

</dependency>

<dependency>

<groupId>commons-net</groupId>

<artifactId>commons-net</artifactId>

</dependency>

<!-- Jackson Json处理工具包 -->

<dependency>

<groupId>com.fasterxml.jackson.core</groupId>

<artifactId>jackson-databind</artifactId>

</dependency>

<!-- 文件上传组件 -->

<dependency>

<groupId>commons-fileupload</groupId>

<artifactId>commons-fileupload</artifactId>

</dependency>

<!-- 日志处理 -->

<dependency>

<groupId>org.slf4j</groupId>

<artifactId>slf4j-log4j12</artifactId>

</dependency>

</dependencies>

</project>

6.5 搭建e3-manager

e3-manager工程是一个聚合工程,也就是POM工程。

6.5.1 创建聚合工程

6.5.2 修改POM文件

要运行聚合工程,需要配置tomcat7的插件。

<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>cn.e3mall</groupId>

<artifactId>e3-parent</artifactId>

<version>0.0.1-SNAPSHOT</version>

</parent>

<artifactId>e3-manager</artifactId>

<packaging>pom</packaging>

<!-- 添加依赖 -->

<dependencies>

<dependency>

<groupId>cn.e3mall</groupId>

<artifactId>e3-common</artifactId>

                 <version>0.0.1-SNAPSHOT</version>

</dependency>

</dependencies>

<!-- 添加tomcat插件,此处不用写版本号 -->

<build>

<plugins>

<plugin>

<groupId>org.apache.tomcat.maven</groupId>

<artifactId>tomcat7-maven-plugin</artifactId>

                          <!-—不配置Tomcat7插件,也能运行。不过默认的端口是8080,path就是工程的名称 -->

<configuration>

<port>8080</port>

<path>/</path>

</configuration>

</plugin>

</plugins>

</build>

</project>

6.5.3 创建e3-manager-pojo

创建聚合工程的子模块e3-manager-pojo工程。

第一步:右键点击e3-manager工程,new—>project

技术分享

第二步:next

第三步:点击Finish,创建工程。

6.5.4 创建e3-manager-dao

同e3-manager-pojo的创建

6.5.4.1 POM文件

<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>cn.e3mall</groupId>

<artifactId>e3-manager</artifactId>

<version>0.0.1-SNAPSHOT</version>

</parent>

<artifactId>e3-manager-dao</artifactId>

<!-- 添加依赖 -->

<dependencies>

<dependency>

<groupId>${project.groupId}</groupId>

<artifactId>e3-manager-pojo</artifactId>

                 <version>0.0.1-SNAPSHOT</version>

</dependency>

<!-- Mybatis -->

<dependency>

<groupId>org.mybatis</groupId>

<artifactId>mybatis</artifactId>

</dependency>

<dependency>

<groupId>org.mybatis</groupId>

<artifactId>mybatis-spring</artifactId>

</dependency>

<dependency>

<groupId>com.github.pagehelper</groupId>

<artifactId>pagehelper</artifactId>

</dependency>

<!-- MySql -->

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

</dependency>

<!-- 连接池 -->

<dependency>

<groupId>com.alibaba</groupId>

<artifactId>druid</artifactId>

</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-jdbc</artifactId>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-aspects</artifactId>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-context-support</artifactId>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-webmvc</artifactId>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-jms</artifactId>

</dependency>

</dependencies>

</project>

6.5.5 创建e3-manager-interface

同e3-manager-pojo的创建

6.5.5.1 POM文件

<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>cn.e3mall</groupId>

<artifactId>e3-manager</artifactId>

<version>0.0.1-SNAPSHOT</version>

</parent>

<artifactId>e3-manager-interface</artifactId>

<dependencies>

<dependency>

<groupId>cn.e3mall</groupId>

<artifactId>e3-manager-pojo</artifactId>

                 <version>0.0.1-SNAPSHOT</version>

</dependency>

</dependencies>

</project>

6.5.6 创建e3-manager-service

同e3-manager-pojo的创建

6.5.6.1 POM文件

<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>cn.e3mall</groupId>

<artifactId>e3-manager</artifactId>

<version>0.0.1-SNAPSHOT</version>

</parent>

<artifactId>e3-manager-service</artifactId>

<!-- 添加依赖 -->

<dependencies>

<dependency>

<groupId>${project.groupId}</groupId>

<artifactId>e3-manager-dao</artifactId>

<version>${project.version}</version>

</dependency>

           <!-- 服务接口依赖 -->

<dependency>

<groupId>${project.groupId}</groupId>

<artifactId>e3-manager-interface</artifactId>

<version>${project.version}</version>

</dependency>

</dependencies>

</project>

6.5.7 搭建e3-manager-web

6.5.7.1 POM文件

<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>cn.e3mall</groupId>

<artifactId>e3-manager</artifactId>

<version>0.0.1-SNAPSHOT</version>

</parent>

<artifactId>e3-manager-web</artifactId>

<packaging>war</packaging>

<!-- 添加依赖 -->

<dependencies>

           <dependency>

<groupId>${project.groupId}</groupId>

<artifactId>e3-manager-service</artifactId>

<version>${project.version}</version>

</dependency>

<!-- JSP相关 -->

<dependency>

<groupId>jstl</groupId>

<artifactId>jstl</artifactId>

</dependency>

<!-- servlet相关 -->

<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>

</dependencies>

</project>

6.5.7.2 Web.xml

注意:使用maven创建的web工程,需要手动创建WEB-INF目录和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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

id="e3" version="2.5">

</web-app>

7 SSM框架整合及测试

7.1 整合思路

整体思路是用spring来整合所有的javabean,同时整合配置文件。

1、 dao层(mybatis和spring整合)

a) spring管理数据源

b) spring管理SqlSessionFactory

c) spring生成mapper接口的代理对象

2、 service层(spring)

a) spring管理service的bean

b) spring管理事务

3、 Controller层(springmvc)

a) springmvc本身是spring的一个模块,无需整合。

7.2 整合dao

在e3-manager-dao工程中整合持久层。

1.1.1 applicationContext-dao.xml

在src/main/resources目录下,创建spring目录,然后创建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.0.xsd

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd

http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd

http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">

<!-- 加载java的配置文件 -->

<context:property-placeholder location="classpath*:properties/*.properties" />

<!-- 创建数据源 -->

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"

destroy-method="close">

<property name="driverClassName" value="${db.driver}" />

<property name="url" value="${db.url}" />

<property name="username" value="${db.username}" />

<property name="password" value="${db.password}" />

<property name="maxActive" value="${db.maxActive}" />

<property name="minIdle" value="${db.minIdle}" />

</bean>

<!-- SqlSessionFactory -->

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">

<!-- 指定mybatis的全局配置文件的路径 -->

<property name="configLocation" value="classpath:mybatis/SqlMapConfig.xml"></property>

<!-- 别名定义 -->

<property name="typeAliasesPackage" value="cn.e3mall.manager.po"></property>

<!-- 数据源 -->

<property name="dataSource" ref="dataSource"></property>

</bean>

<!-- 批量配置mapper代理类 -->

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">

<!-- 配置扫描的包 -->

<property name="basePackage" value="cn.e3mall.manager.mapper"></property>

</bean>

</beans>

备注:

Druid是目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。

Druid已经在阿里巴巴部署了超过600个应用,经过多年多生产环境大规模部署的严苛考验。

7.2.1 SqlMapConfig.xml

在src/main/resources目录下,创建mybatis目录,然后创建SqlMapConfig.xml,内容如下:

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE configuration

PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>

</configuration>

7.2.2 db.properties

在src/main/resources目录下,创建properties目录,然后创建db.properties文件

db.driver=com.mysql.jdbc.Driver

db.url=jdbc:mysql://localhost:3306/e3mall?useUnicode=true&characterEncoding=utf8

db.username=root

db.password=root

db.maxActive=10

db.minIdle=5

7.2.3 log4j.properties(非必须)

在src/main/resources目录下,创建log4j.properties文件

# Global logging configuration

log4j.rootLogger=DEBUG, stdout

# Console output...

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

7.3 整合service

7.3.1 applicationContext-service.xml

在src/main/resources目录下,创建spring目录,然后创建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: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.0.xsd

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd

http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd

http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">

<!-- 包扫描器,扫描带@Service注解的类 -->

<context:component-scan base-package="cn.e3mall.manager.service"></context:component-scan>

<!-- 事务管理器 -->

<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="del*" propagation="REQUIRED" />

<tx:method name="remove*" propagation="REQUIRED" />

<tx:method name="update*" propagation="REQUIRED" />

<tx:method name="modify*" propagation="REQUIRED" />

<tx:method name="edit*" 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(* cn.e3mall.manager.service.*.*(..))" />

</aop:config>

</beans>

7.4 整合Controller

7.4.1 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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

id="e3" version="2.5">

<display-name>e3-manager-web</display-name>

<!-- springmvc的前端控制器 -->

<servlet>

<servlet-name>springmvc</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<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>springmvc</servlet-name>

<url-pattern>/</url-pattern>

</servlet-mapping>

<!-- 初始化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>

<!-- 解决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>

</web-app>

7.4.2 springmvc.xml

在src/main/resources目录下,创建spring目录,然后创建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:mvc="http://www.springframework.org/schema/mvc"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd

        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd

        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

<!-- 配置包扫描器 -->

<context:component-scan base-package="cn.e3mall.manager.controller"></context:component-scan>

<!-- 配置注解驱动 -->

<mvc:annotation-driven />

<!-- 视图解析器 -->

<bean

class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<property name="prefix" value="/WEB-INF/jsp/" />

<property name="suffix" value=".jsp" />

</bean>

<!-- 配置静态资源访问 -->

<mvc:resources location="/css/" mapping="/css/**"/>

<mvc:resources location="/js/" mapping="/js/**"/>

<mvc:resources location="/style/" mapping="/style/**"/>

</beans>

7.4.3 整合静态资源和JSP页面

技术分享

7.5 整合测试

7.5.1 需求

根据商品id查询商品信息,返回json格式数据。

7.5.2 初始化数据库数据

技术分享

7.5.3 Dao

根据商品ID查询商品表(tb_item),对于单表查询操作,可以使用逆向工程代码

1.1.2 逆向工程代码

第一步:将教案中的逆向工程导入的eclipse中

技术分享

第二步:执行Generator类

第三步:将生成的代码分别复制到e3-manager-pojo和e3-manager-dao工程中。

7.5.4 Service

参数:Long  itemId

返回值:TbItem对象

@Service

public class ItemServiceImpl implements ItemService {

@Autowired

private TbItemMapper itemMapper;

@Override

public TbItem queryItemById(Long itemId) {

if (itemId == null)

return null;

return itemMapper.selectByPrimaryKey(itemId);

}

}

7.5.5 Controller

请求URL:/item/test/{itemId}

请求参数:Long itemId,需要使用@PathVariable注解从URL接收该参数值

返回值:TbItem对象,需要使用@ResponseBody注解转成Json串返回到前端。

@RequestMapping("/item")

@Controller

public class ItemController {

@Autowired

private ItemService service;

@RequestMapping("/test/{itemId}")

@ResponseBody

public TbItem queryItemById(@PathVariable Long itemId) {

return service.queryItemById(itemId);

}

}

7.5.6 部署启动

选中e3-manager工程,然后运行maven命令:tomcat7:run

注意:运行tomcat之前,需要将e3-parent、e3-common、e3-manager安装到本地仓库。

7.6 解决mapper映射文件不拷贝的问题

出现问题:

技术分享

异常信息:查找不到对应的statement

原因分析:因为Maven在执行构建时,默认会对src/main/java目录下的配置文件进行过滤,所以Mybatis无法加载映射文件。

解决方法:只要在构建时,不过滤src/main/java目录下的配置文件即可。

修改e3-manager-dao的pom文件,在pom文件中添加如下内容:

<!-- 如果不添加此节点mybatis的mapper.xml文件都会被漏掉。 -->

<build>

<resources>

<resource>

<directory>src/main/java</directory>

<includes>

<include>**/*.properties</include>

<include>**/*.xml</include>

</includes>

<filtering>false</filtering>

</resource>

<resource>

<directory>src/main/resources</directory>

<includes>

<include>**/*.properties</include>

<include>**/*.xml</include>

</includes>

<filtering>false</filtering>

</resource>

</resources>

</build>

8 提交代码到SVN

需要安装SVN服务器,并且为每个班在SVN中创建用户及组。

对于SVN的使用,只需要掌握以下四种操作即可:

1、 新工程上传

2、 新工程下载

3、 提交代码(可能会导致代码冲突。先同步再根据情况更新或者提交)

4、 更新代码(认清一点就是更新代码不会覆盖本地代码。)

8.1 提交代码到SVN

SVN地址:https://itcast-sdj/svn/e3mall-hm50

用户名:student

密码:itcast

注意:

讲师使用trunk目录,权限为可读可写

学生使用branches目录,权限为可读可写,但是学生对trunk目录只是可读权限。

上传时注意将.project文件\.classpath文件\.settings目录\target目录设置忽略

注意:提交到SVN的Maven项目,只提交src和pom.xml

要在Eclipse里面设置SVN的过滤选项:

技术分享

8.2 从SVN检出项目

第一步:使用Eclipse中的SVN插件从SVN服务器中将项目下载下来

第二步:将下载的项目转成Maven工程

技术分享

第三步:将聚合工程的子工程导入到eclipse中。选中e3-manager工程,右键—>Import 






电商01

标签:fastdfs   根据   lap   dtree   工具类   remove   ant   put   上传   

原文地址:http://www.cnblogs.com/qinhelili/p/6985947.html

踩
(0)
赞
(0)
   
举报
评论 一句话评论(0)
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!