JAVAEE——宜立方商城01:电商行业的背景、商城系统架构、后台工程搭建、SSM框架整合...

1. 学习计划

第一天:

1、电商行业的背景。

2、宜立方商城的系统架构

a) 功能介绍

b) 架构讲解

3、工程搭建-后台工程

a) 使用maven搭建工程

b) 使用maventomcat插件启动工程

4、SSM框架整合

5、svn的使用。

 

第二天:

1、服务中间件dubbo

2、项目改造为基于SOA架构

3、商品列表查询功能实现。

 

第三天:

1、商品类目选择

2、图片上传功能分析

3、nginx的安装

4、Nginx配置虚拟机

5、Nginx实现反向代理

6、Nginx实现负载均衡

 

第四天:

1、FastDFS分布式文件系统

2、上传图片功能实现

3、富文本编辑器使用

4、商品添加功能实现

 

第五天

1、前台系统搭建

2、Cms系统的实现

a) 内容分类管理

b) 内容管理

 

第六天:

1、前台内容动态展示

2、Redis服务器搭建

3、向业务逻辑中添加缓存。

4、使用redis做缓存

5、缓存同步。

 

第七天:

1、Solr服务器安装

2、Solrj使用测试

3、把数据库中的数据导入索引库

4、搜索功能的实现

 

第八天:

1、solr集群搭建

2、使用solrj管理solr集群

3、把搜索功能切换到集群版

4、什么是MQ

5、MQ的应用场景

6、使用Activemq发送接收消息

 

第九天:

1、ActiveMQ整合spring。

2、使用消息队列实现商品同步。

3、商品详情页面展示,动态展示 jsp + redis

 

第十天:

1、使用freemarker实现网页静态化

2、ActiveMq同步生成静态网页

3、Sso系统工程搭建

 

第十一天:

1、sso注册功能实现

2、sso登录功能实现

3、通过token获得用户信息

4、Ajax跨域请求(jsonp

第十二天:

1、使用cookie实现购物车

2、将购物车数据保存到服务端

 

第十三天:

1、订单确认页面

2、登录拦截器实现

3、订单系统完成

4、mycat的使用

 

第十四天

1、系统部署

2、项目总结

3、Git的使用

4、实战说明

 

第十五~七天:

项目实战

2. 电商行业背景介绍

近年来,中国的电子商务快速发展,交易额连创新高,电子商务在各领域的应用不断拓展和深化、相关服务业蓬勃发展、支撑体系不断健全完善、创新的动力和能力 不断增强。电子商务正在与实体经济深度融合,进入规模性发展阶段,对经济社会生活的影响不断增大,正成为我国经济发展的新引擎。

    中国电子商务研究中心数据显示,截止到2012年底,中国电子商务市场交易规模达7.85万亿人民币,同比增长30.83%。其中,B2B电子商务交易额 达6.25万亿,同比增长27%。而2011年全年,中国电子商务市场交易额达6万亿人民币,同比增长33%,占GDP比重上升到13%2012年,电 子商务占GDP的比重已经高达15%。预计2013年我国电子商务规模将突破十万亿大关。

 JAVAEE——宜立方商城01:电商行业的背景、商城系统架构、后台工程搭建、SSM框架整合..._第1张图片

 

009-2015年中国电子商务市场交易规模(万亿元)

 

2.1. 11.11

JAVAEE——宜立方商城01:电商行业的背景、商城系统架构、后台工程搭建、SSM框架整合..._第2张图片

 

 

结论:

1、电商行业很挣钱,找互联网相关的工作。

2、电商行业技术要求很高、高可用、海量数据的存储。

 

2.2. 电商行业技术特点

  • 技术新
  • 技术范围广
  • 分布式
  • 高并发、集群、负载均衡、高可用
  • 海量数据
  • 业务复杂
  • 系统安全

 

3. 宜立方商城介绍

宜立方网上商城是一个综合性的B2C平台,类似京东商城、天猫商城。会员可以在商城浏览商品、下订单,以及参加各种活动。

管理员、运营可以在平台后台管理系统中管理商品、订单、会员等。

客服可以在后台管理系统中处理用户的询问以及投诉。

 

电商模式:

B2B:商家到商家。阿里巴巴,慧聪网、铭万网。

B2C:商家到用户。京东。

C2C:用户到用户。淘宝。

B2B2C:商家到商家到用户。天猫。

O2O:线上到线下。百度外卖、美团、饿了么。

 

 

4. 
宜立方商城架构

4.1. 功能列表

 JAVAEE——宜立方商城01:电商行业的背景、商城系统架构、后台工程搭建、SSM框架整合..._第3张图片

 

 

后台管理系统:管理商品、订单、类目、商品规格属性、用户管理以及内容发布等功能。

前台系统:用户可以在前台系统中进行注册、登录、浏览商品、首页、下单等操作。

会员系统:用户可以在该系统中查询已下的订单、收藏的商品、我的优惠券、团购等信息。

订单系统:提供下单、查询订单、修改订单状态、定时处理订单。

搜索系统:提供商品的搜索功能。

单点登录系统:为多个系统之间提供用户登录凭证以及查询登录用户的信息。

4.2. 
系统架构

4.2.1. 传统架构

 JAVAEE——宜立方商城01:电商行业的背景、商城系统架构、后台工程搭建、SSM框架整合..._第4张图片

 

4.2.2. 1000并发

 JAVAEE——宜立方商城01:电商行业的背景、商城系统架构、后台工程搭建、SSM框架整合..._第5张图片

 

需要20台服务器做tomcat集群。当tomcat集群中节点数量增加,服务能力先增加后下降。

所以集群中节点数量不能太多,一般也就5个左右。

4.2.3. 
10000并发

 

需要按照功能点把系统拆分,拆分成独立的功能。单独为某一个节点添加服务器。需要系统之间配合才能完成整个业务逻辑。叫做分布式。

 JAVAEE——宜立方商城01:电商行业的背景、商城系统架构、后台工程搭建、SSM框架整合..._第6张图片

 

分布式架构:多个子系统相互协作才能完成业务流程。系统之间需要进行通信。

集群:同一个工程部署到多台服务器上。

分布式架构:

把系统按照模块拆分成多个子系统。

优点:

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

2、把项目拆分成若干个子项目,不同的团队负责不同的子项目。

3、增加功能时只需要再增加一个子项目,调用其他系统的接口就可以。

4、可以灵活的进行分布式部署。

 

缺点:

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

2、各个模块有一些通用的业务逻辑无法共用。

 

4.2.4. 
基于soa的架构

SOAService Oriented Architecture面向服务的架构。也就是把工程拆分成服务层、表现层两个工程。服务层中包含业务逻辑,只需要对外提供服务即可。表现层只需要处理和页面的交互,业务逻辑都是调用服务层的服务来实现。

 JAVAEE——宜立方商城01:电商行业的背景、商城系统架构、后台工程搭建、SSM框架整合..._第7张图片

 

 

 

4.2.5. 宜立方商城系统架构

 JAVAEE——宜立方商城01:电商行业的背景、商城系统架构、后台工程搭建、SSM框架整合..._第8张图片

 

 

5. 工程搭建

5.1. 使用maven的好处

使用maven管理工程。

Jar包的管理

工程之间的依赖管理

自动打包

5.2. 
后台工程搭建分析

Maven的常见打包方式:jarwarpom

Pom工程一般都是父工程,管理jar包的版本、maven插件的版本、统一的依赖管理。聚合工程。

 

e3-parent:父工程,打包方式pom,管理jar包的版本号。

  |           项目中所有工程都应该继承父工程。

  |--e3-common:通用的工具类通用的pojo。打包方式jar

  |--e3-manager:服务层工程。聚合工程。Pom工程

    |--e3-manager-dao:打包方式jar

    |--e3-manager-pojo:打包方式jar

    |--e3-manager-interface:打包方式jar

    |--e3-manager-service:打包方式:jar

    |--e3-manager-web:表现层工程。打包方式war

5.3. 工程搭建

5.3.1. e3-parent

Pom工程。

 

开发环境:eclipse mars2

Maven3.3.9

本地仓库:默认位置在~/.m2/repository

Eclipse不需要配置,只需要把本地仓库放到当前用户目录下的.m2下。

 JAVAEE——宜立方商城01:电商行业的背景、商城系统架构、后台工程搭建、SSM框架整合..._第9张图片

JAVAEE——宜立方商城01:电商行业的背景、商城系统架构、后台工程搭建、SSM框架整合..._第10张图片

 

 JAVAEE——宜立方商城01:电商行业的背景、商城系统架构、后台工程搭建、SSM框架整合..._第11张图片

 

 

 

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.0modelVersion>
    <groupId>cn.e3mallgroupId>
    <artifactId>e3-parentartifactId>
    <version>0.0.1-SNAPSHOTversion>
    <packaging>pompackaging>
    
    <properties>
        <junit.version>4.12junit.version>
        <spring.version>4.2.4.RELEASEspring.version>
        <mybatis.version>3.2.8mybatis.version>
        <mybatis.spring.version>1.2.2mybatis.spring.version>
        <mybatis.paginator.version>1.2.15mybatis.paginator.version>
        <mysql.version>5.1.32mysql.version>
        <slf4j.version>1.6.4slf4j.version>
        <jackson.version>2.4.2jackson.version>
        <druid.version>1.0.9druid.version>
        <httpclient.version>4.3.5httpclient.version>
        <jstl.version>1.2jstl.version>
        <servlet-api.version>2.5servlet-api.version>
        <jsp-api.version>2.0jsp-api.version>
        <joda-time.version>2.5joda-time.version>
        <commons-lang3.version>3.3.2commons-lang3.version>
        <commons-io.version>1.3.2commons-io.version>
        <commons-net.version>3.3commons-net.version>
        <pagehelper.version>3.4.2-fixpagehelper.version>
        <jsqlparser.version>0.9.1jsqlparser.version>
        <commons-fileupload.version>1.3.1commons-fileupload.version>
        <jedis.version>2.7.2jedis.version>
        <solrj.version>4.10.3solrj.version>
        <dubbo.version>2.5.3dubbo.version>
        <zookeeper.version>3.4.7zookeeper.version>
        <zkclient.version>0.1zkclient.version>
        <activemq.version>5.11.2activemq.version>
        <freemarker.version>2.3.23freemarker.version>
        <quartz.version>2.2.2quartz.version>
    properties>
    <dependencyManagement>
        <dependencies>
            
            <dependency>
                <groupId>joda-timegroupId>
                <artifactId>joda-timeartifactId>
                <version>${joda-time.version}version>
            dependency>
            
            <dependency>
                <groupId>org.apache.commonsgroupId>
                <artifactId>commons-lang3artifactId>
                <version>${commons-lang3.version}version>
            dependency>
            <dependency>
                <groupId>org.apache.commonsgroupId>
                <artifactId>commons-ioartifactId>
                <version>${commons-io.version}version>
            dependency>
            <dependency>
                <groupId>commons-netgroupId>
                <artifactId>commons-netartifactId>
                <version>${commons-net.version}version>
            dependency>
            
            <dependency>
                <groupId>com.fasterxml.jackson.coregroupId>
                <artifactId>jackson-databindartifactId>
                <version>${jackson.version}version>
            dependency>
            
            <dependency>
                <groupId>org.apache.httpcomponentsgroupId>
                <artifactId>httpclientartifactId>
                <version>${httpclient.version}version>
            dependency>
            
            <dependency>
                <groupId>org.quartz-schedulergroupId>
                <artifactId>quartzartifactId>
                <version>${quartz.version}version>
            dependency>
            
            <dependency>
                <groupId>junitgroupId>
                <artifactId>junitartifactId>
                <version>${junit.version}version>
                <scope>testscope>
            dependency>
            
            <dependency>
                <groupId>org.slf4jgroupId>
                <artifactId>slf4j-log4j12artifactId>
                <version>${slf4j.version}version>
            dependency>
            
            <dependency>
                <groupId>org.mybatisgroupId>
                <artifactId>mybatisartifactId>
                <version>${mybatis.version}version>
            dependency>
            <dependency>
                <groupId>org.mybatisgroupId>
                <artifactId>mybatis-springartifactId>
                <version>${mybatis.spring.version}version>
            dependency>
            <dependency>
                <groupId>com.github.miemiedevgroupId>
                <artifactId>mybatis-paginatorartifactId>
                <version>${mybatis.paginator.version}version>
            dependency>
            <dependency>
                <groupId>com.github.pagehelpergroupId>
                <artifactId>pagehelperartifactId>
                <version>${pagehelper.version}version>
            dependency>
            
            <dependency>
                <groupId>mysqlgroupId>
                <artifactId>mysql-connector-javaartifactId>
                <version>${mysql.version}version>
            dependency>
            
            <dependency>
                <groupId>com.alibabagroupId>
                <artifactId>druidartifactId>
                <version>${druid.version}version>
            dependency>
            
            <dependency>
                <groupId>org.springframeworkgroupId>
                <artifactId>spring-contextartifactId>
                <version>${spring.version}version>
            dependency>
            <dependency>
                <groupId>org.springframeworkgroupId>
                <artifactId>spring-beansartifactId>
                <version>${spring.version}version>
            dependency>
            <dependency>
                <groupId>org.springframeworkgroupId>
                <artifactId>spring-webmvcartifactId>
                <version>${spring.version}version>
            dependency>
            <dependency>
                <groupId>org.springframeworkgroupId>
                <artifactId>spring-jdbcartifactId>
                <version>${spring.version}version>
            dependency>
            <dependency>
                <groupId>org.springframeworkgroupId>
                <artifactId>spring-aspectsartifactId>
                <version>${spring.version}version>
            dependency>
            <dependency>
                <groupId>org.springframeworkgroupId>
                <artifactId>spring-jmsartifactId>
                <version>${spring.version}version>
            dependency>
            <dependency>
                <groupId>org.springframeworkgroupId>
                <artifactId>spring-context-supportartifactId>
                <version>${spring.version}version>
            dependency>
            
            <dependency>
                <groupId>jstlgroupId>
                <artifactId>jstlartifactId>
                <version>${jstl.version}version>
            dependency>
            <dependency>
                <groupId>javax.servletgroupId>
                <artifactId>servlet-apiartifactId>
                <version>${servlet-api.version}version>
                <scope>providedscope>
            dependency>
            <dependency>
                <groupId>javax.servletgroupId>
                <artifactId>jsp-apiartifactId>
                <version>${jsp-api.version}version>
                <scope>providedscope>
            dependency>
            
            <dependency>
                <groupId>commons-fileuploadgroupId>
                <artifactId>commons-fileuploadartifactId>
                <version>${commons-fileupload.version}version>
            dependency>
            
            <dependency>
                <groupId>redis.clientsgroupId>
                <artifactId>jedisartifactId>
                <version>${jedis.version}version>
            dependency>
            
            <dependency>
                <groupId>org.apache.solrgroupId>
                <artifactId>solr-solrjartifactId>
                <version>${solrj.version}version>
            dependency>
            
            <dependency>
                <groupId>com.alibabagroupId>
                <artifactId>dubboartifactId>
                <version>${dubbo.version}version>
            dependency>
            <dependency>
                <groupId>org.apache.zookeepergroupId>
                <artifactId>zookeeperartifactId>
                <version>${zookeeper.version}version>
            dependency>
            <dependency>
                <groupId>com.github.sgroschupfgroupId>
                <artifactId>zkclientartifactId>
                <version>${zkclient.version}version>
            dependency>
            <dependency>
                <groupId>org.apache.activemqgroupId>
                <artifactId>activemq-allartifactId>
                <version>${activemq.version}version>
            dependency>
            <dependency>
                <groupId>org.freemarkergroupId>
                <artifactId>freemarkerartifactId>
                <version>${freemarker.version}version>
            dependency>

        dependencies>
    dependencyManagement>

    <build>
        <finalName>${project.artifactId}finalName>
        <plugins>
            
            <plugin>
                <groupId>org.apache.maven.pluginsgroupId>
                <artifactId>maven-resources-pluginartifactId>
                <version>2.7version>
                <configuration>
                    <encoding>UTF-8encoding>
                configuration>
            plugin>
            
            <plugin>
                <groupId>org.apache.maven.pluginsgroupId>
                <artifactId>maven-compiler-pluginartifactId>
                <version>3.2version>
                <configuration>
                    <source>1.7source>
                    <target>1.7target>
                    <encoding>UTF-8encoding>
                configuration>
            plugin>
        plugins>
        <pluginManagement>
            <plugins>
                
                <plugin>
                    <groupId>org.apache.tomcat.mavengroupId>
                    <artifactId>tomcat7-maven-pluginartifactId>
                    <version>2.2version>
                plugin>
            plugins>
        pluginManagement>
    build>
project>
pom.xml

  

5.3.2. e3-common

通用的工具类、通用的pojo。打包方式jar。需要继承父工程。

 JAVAEE——宜立方商城01:电商行业的背景、商城系统架构、后台工程搭建、SSM框架整合..._第12张图片

 

 

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.0modelVersion>
    <parent>
        <groupId>cn.e3mallgroupId>
        <artifactId>e3-parentartifactId>
        <version>0.0.1-SNAPSHOTversion>
    parent>
    <groupId>cn.e3mallgroupId>
    <artifactId>e3-commonartifactId>
    <version>0.0.1-SNAPSHOTversion>
    <dependencies>
        
        <dependency>
            <groupId>joda-timegroupId>
            <artifactId>joda-timeartifactId>
        dependency>
        
        <dependency>
            <groupId>org.apache.commonsgroupId>
            <artifactId>commons-lang3artifactId>
        dependency>
        <dependency>
            <groupId>org.apache.commonsgroupId>
            <artifactId>commons-ioartifactId>
        dependency>
        <dependency>
            <groupId>commons-netgroupId>
            <artifactId>commons-netartifactId>
        dependency>
        
        <dependency>
            <groupId>com.fasterxml.jackson.coregroupId>
            <artifactId>jackson-databindartifactId>
        dependency>
        
        <dependency>
            <groupId>org.apache.httpcomponentsgroupId>
            <artifactId>httpclientartifactId>
        dependency>
        
        <dependency>
            <groupId>org.quartz-schedulergroupId>
            <artifactId>quartzartifactId>
        dependency>
        
        <dependency>
            <groupId>junitgroupId>
            <artifactId>junitartifactId>
            <scope>testscope>
        dependency>
        
        <dependency>
            <groupId>org.slf4jgroupId>
            <artifactId>slf4j-log4j12artifactId>
        dependency>
    dependencies>
project>

 


5.3.3. e3-manager
 

聚合工程。打包方式pom

 JAVAEE——宜立方商城01:电商行业的背景、商城系统架构、后台工程搭建、SSM框架整合..._第13张图片

 

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.0modelVersion>
    <parent>
        <groupId>cn.e3mallgroupId>
        <artifactId>e3-parentartifactId>
        <version>0.0.1-SNAPSHOTversion>
    parent>
    <groupId>cn.e3mallgroupId>
    <artifactId>e3-managerartifactId>
    <version>0.0.1-SNAPSHOTversion>
    <packaging>pompackaging>
    <dependencies>
        <dependency>
            <groupId>cn.e3mallgroupId>
            <artifactId>e3-commonartifactId>
            <version>0.0.1-SNAPSHOTversion>
        dependency>
    dependencies>
project>

 


5.3.4. e3-manager-pojo
 

是一个maven模块,打包方式jar

 JAVAEE——宜立方商城01:电商行业的背景、商城系统架构、后台工程搭建、SSM框架整合..._第14张图片

 

 JAVAEE——宜立方商城01:电商行业的背景、商城系统架构、后台工程搭建、SSM框架整合..._第15张图片

JAVAEE——宜立方商城01:电商行业的背景、商城系统架构、后台工程搭建、SSM框架整合..._第16张图片

 

 JAVAEE——宜立方商城01:电商行业的背景、商城系统架构、后台工程搭建、SSM框架整合..._第17张图片

 

 

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.0modelVersion>
    <parent>
        <groupId>cn.e3mallgroupId>
        <artifactId>e3-managerartifactId>
        <version>0.0.1-SNAPSHOTversion>
    parent>
    <artifactId>e3-manager-pojoartifactId>
project>

 


5.3.5. e3-manager-dao
 

Maven模块,打包方式jar

 JAVAEE——宜立方商城01:电商行业的背景、商城系统架构、后台工程搭建、SSM框架整合..._第18张图片

JAVAEE——宜立方商城01:电商行业的背景、商城系统架构、后台工程搭建、SSM框架整合..._第19张图片

 

 

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.0modelVersion>
    <parent>
        <groupId>cn.e3mallgroupId>
        <artifactId>e3-managerartifactId>
        <version>0.0.1-SNAPSHOTversion>
    parent>
    <artifactId>e3-manager-daoartifactId>
    <dependencies>
        <dependency>
            <groupId>cn.e3mallgroupId>
            <artifactId>e3-manager-pojoartifactId>
            <version>0.0.1-SNAPSHOTversion>
        dependency>
        
        <dependency>
            <groupId>org.mybatisgroupId>
            <artifactId>mybatisartifactId>
        dependency>
        <dependency>
            <groupId>org.mybatisgroupId>
            <artifactId>mybatis-springartifactId>
        dependency>
        <dependency>
            <groupId>com.github.miemiedevgroupId>
            <artifactId>mybatis-paginatorartifactId>
        dependency>
        <dependency>
            <groupId>com.github.pagehelpergroupId>
            <artifactId>pagehelperartifactId>
        dependency>
        
        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
        dependency>
        
        <dependency>
            <groupId>com.alibabagroupId>
            <artifactId>druidartifactId>
        dependency>
    dependencies>
project>

 


5.3.6. e3-manager-interface
 

 JAVAEE——宜立方商城01:电商行业的背景、商城系统架构、后台工程搭建、SSM框架整合..._第20张图片

JAVAEE——宜立方商城01:电商行业的背景、商城系统架构、后台工程搭建、SSM框架整合..._第21张图片

 

 

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.0modelVersion>
    <parent>
        <groupId>cn.e3mallgroupId>
        <artifactId>e3-managerartifactId>
        <version>0.0.1-SNAPSHOTversion>
    parent>
    <artifactId>e3-manager-interfaceartifactId>
    <dependencies>
        <dependency>
            <groupId>cn.e3mallgroupId>
            <artifactId>e3-manager-pojoartifactId>
            <version>0.0.1-SNAPSHOTversion>
        dependency>
    dependencies>
project>

 


5.3.7. e3-manager-service
 

打包方式jar包。

 JAVAEE——宜立方商城01:电商行业的背景、商城系统架构、后台工程搭建、SSM框架整合..._第22张图片

 

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.0modelVersion>
    <parent>
        <groupId>cn.e3mallgroupId>
        <artifactId>e3-managerartifactId>
        <version>0.0.1-SNAPSHOTversion>
    parent>
    <artifactId>e3-manager-serviceartifactId>
    <dependencies>
        <dependency>
            <groupId>cn.e3mallgroupId>
            <artifactId>e3-manager-daoartifactId>
            <version>0.0.1-SNAPSHOTversion>
        dependency>
        <dependency>
            <groupId>cn.e3mallgroupId>
            <artifactId>e3-manager-interfaceartifactId>
            <version>0.0.1-SNAPSHOTversion>
        dependency>
        
        
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-contextartifactId>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-beansartifactId>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-webmvcartifactId>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-jdbcartifactId>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-aspectsartifactId>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-jmsartifactId>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-context-supportartifactId>
        dependency>
    dependencies>
project>

 

 

 

 

5.3.8. e3-manager-web

表现层,打包方式war

 JAVAEE——宜立方商城01:电商行业的背景、商城系统架构、后台工程搭建、SSM框架整合..._第23张图片

 

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.0modelVersion>
    <parent>
        <groupId>cn.e3mallgroupId>
        <artifactId>e3-managerartifactId>
        <version>0.0.1-SNAPSHOTversion>
    parent>
    <artifactId>e3-manager-webartifactId>
    <packaging>warpackaging>
    <dependencies>
        <dependency>
        <groupId>cn.e3mallgroupId>
        <artifactId>e3-manager-serviceartifactId>
        <version>0.0.1-SNAPSHOTversion>
        dependency>
        
        <dependency>
            <groupId>jstlgroupId>
            <artifactId>jstlartifactId>
        dependency>
        <dependency>
            <groupId>javax.servletgroupId>
            <artifactId>servlet-apiartifactId>
            <scope>providedscope>
        dependency>
        <dependency>
            <groupId>javax.servletgroupId>
            <artifactId>jsp-apiartifactId>
            <scope>providedscope>
        dependency>
    dependencies>
project>

 


由于打包方式为war需要补全目录结构,需要在webapp目录下添加WEB-INF目录,和web.xml文件。补全目录结构

 JAVAEE——宜立方商城01:电商行业的背景、商城系统架构、后台工程搭建、SSM框架整合..._第24张图片

 

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>e3-manager-webdisplay-name>
    <welcome-file-list>
        <welcome-file>index.jspwelcome-file>
    welcome-file-list>
    
    
web-app>

 


 JAVAEE——宜立方商城01:电商行业的背景、商城系统架构、后台工程搭建、SSM框架整合..._第25张图片添加欢迎页

 

Index.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title heretitle>
head>
<body>
    <h1>hello 宜立方商城h1>
body>
html>

 


5.4. 启动工程
 

启动e3-manager工程。

需要在e3-manager pom工程中,配置tomcat插件。启动的端口号,和工程名称。

在e3-managerpom文件中添加如下配置:

 


    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.tomcat.mavengroupId>
                <artifactId>tomcat7-maven-pluginartifactId>
                <configuration>
                    <port>8080port>
                    <path>/path>
                configuration>
            plugin>
        plugins>
    build>

 

 


clean tomcat7:run
启动
tomcat插件:

先把e3-parente3-common安装到本地仓库。然后再启动。

 JAVAEE——宜立方商城01:电商行业的背景、商城系统架构、后台工程搭建、SSM框架整合..._第26张图片

 

6. Ssm框架整合

6.1. 数据库

数据库使用mysql数据库,要求5.5以上版本。

1、在mysql数据库中创建数据库e3mall

2、将创建数据库的脚本导入到e3mall中。

 JAVAEE——宜立方商城01:电商行业的背景、商城系统架构、后台工程搭建、SSM框架整合..._第27张图片

 

6.2. Mybatis逆向工程

使用mybatis官方提供的mybatis-generator生成pojomapper接口及映射文件。

并且将pojo放到e3-manager-pojo工程中。

mapper接口及映射文件放到e3-manager-dao工程中。

 

6.3. 整合思路

1、Dao层:

Mybatis的配置文件:SqlMapConfig.xml

不需要配置任何内容,需要有文件头。文件必须存在。

applicationContext-dao.xml

mybatis整合spring,通过由spring创建数据库连接池,spring管理SqlSessionFactorymapper代理对象。需要mybatisspring的整合包。

2、Service层:

applicationContext-service.xml

所有的service实现类都放到spring容器中管理。并由spring管理事务。

 

3、表现层:

Springmvc框架,由springmvc管理controller

Springmvc的三大组件。

 

6.4. Dao整合

6.4.1. 创建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>

 


6.4.2. Spring
整合mybatis 

创建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.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
    http://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.xsd
    http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.2.xsd">

    
    
    <context:property-placeholder location="classpath:conf/db.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>
    
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        
        <property name="dataSource" ref="dataSource" />
        
        <property name="configLocation" value="classpath:mybatis/SqlMapConfig.xml" />
    bean>
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="cn.e3mall.mapper" />
    bean>
beans>

 



db.properties

 

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

 

备注:

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

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

 

6.5. Service整合

6.5.1. 管理Service

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.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
    http://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.xsd
    http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.2.xsd">

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

 


  

6.5.2. 事务管理

创建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.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
    http://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.xsd
    http://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(* cn.e3mall.service..*.*(..))" />
    aop:config>
beans>

 


6.6. 表现层整合
 

6.6.1. 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-4.2.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd">

    <context:component-scan base-package="cn.e3mall.controller" />
    <mvc:annotation-driven />
    <bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/" />
        <property name="suffix" value=".jsp" />
    bean>
beans>

 


6.6.2. 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>e3-managerdisplay-name>
    <welcome-file-list>
        <welcome-file>index.jspwelcome-file>
    welcome-file-list>
    
    
    <context-param>
        <param-name>contextConfigLocationparam-name>
        <param-value>classpath:spring/applicationContext*.xmlparam-value>
    context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>
    listener>
    
    
    <filter>
        <filter-name>CharacterEncodingFilterfilter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>
        <init-param>
            <param-name>encodingparam-name>
            <param-value>utf-8param-value>
        init-param>
    filter>
    <filter-mapping>
        <filter-name>CharacterEncodingFilterfilter-name>
        <url-pattern>/*url-pattern>
    filter-mapping>


    
    <servlet>
        <servlet-name>e3-managerservlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
        
        <init-param>
            <param-name>contextConfigLocationparam-name>
            <param-value>classpath:spring/springmvc.xmlparam-value>
        init-param>
        <load-on-startup>1load-on-startup>
    servlet>
    <servlet-mapping>
        <servlet-name>e3-managerservlet-name>
        <url-pattern>/url-pattern>
    servlet-mapping>
web-app>

 


6.7. 整合测试
 

6.7.1. 需求

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

 

6.7.2. Dao

由于是单表查询可以使用逆向工程生成的代码。

 

6.7.3. Service

参数:商品id

返回值:TbItem

业务逻辑:根据商品id查询商品信息。

/**
 * 商品管理Service
 * 

Title: ItemServiceImpl

*

Description:

*

Company: www.itcast.cn

*
@version 1.0 */ @Service public class ItemServiceImpl implements ItemService { @Autowired private TbItemMapper itemMapper; @Override public TbItem getItemById(long id) { TbItem item = itemMapper.selectByPrimaryKey(id); return item; } }

 



6.7.4. Controller

 

/**
 * 商品管理Controller
 * 

Title: ItemController

*

Description:

*

Company: www.itcast.cn

*
@version 1.0 */ @Controller public class ItemController { @Autowired private ItemService itemService; @RequestMapping("/item/{itemId}") @ResponseBody private TbItem getItemById(@PathVariable Long itemId) { TbItem tbItem = itemService.getItemById(itemId); return tbItem; } }

 

6.7.5. 解决mapper绑定异常

原因

 JAVAEE——宜立方商城01:电商行业的背景、商城系统架构、后台工程搭建、SSM框架整合..._第28张图片

 

此异常的原因是由于mapper接口编译后在同一个目录下没有找到mapper映射文件而出现的。由于maven工程在默认情况下src/main/java目录下的mapper文件是不发布到target目录下的。

 

解决方法

在e3-manager-dao工程的pom文件中添加如下内容:

            

                src/main/java

                

                    **/*.properties

                    **/*.xml

                

                false

            

        

 

 

7. Svn的使用

7.1. 服务端

服务端使用VisualSVN,一般一个项目组只有一个svn,并不是每个开发者都需要安装服务端。

 JAVAEE——宜立方商城01:电商行业的背景、商城系统架构、后台工程搭建、SSM框架整合..._第29张图片

 

7.2. 客户端

客户端使用Eclipsesvn插件,在提供的Eclipse中已经安装好,直接使用即可。

 

https://{svn服务ip地址}/svn/{ 仓库名称}/

用户名:user

密码:user

 

https://PC-201311301552/svn/e3-javaee25/

 

转载于:https://www.cnblogs.com/xieyupeng/p/9325462.html

你可能感兴趣的:(系统架构,java,数据库)