1. 项目环境配置
修改eclipse文档编码为UTF-8
配置JDK
Window中JDK
检测是否有JAVA_HOME
检查是否有path
Path ;%JAVA_HOME%/bin
关闭校验
添加maven
2. maven配置
2.1 maven作用
说明:
Maven是一站式的项目管理工具.负责项目中jar包管理/依赖.
Maven可以实现项目的自动的打包部署.
Mvn install/mvn package命令
依赖说明:
Maven可以实现jar包自动依赖的下载.同时依赖具有传递性.
A.jar-----B.10.jar-----C.2.0.jar
使用原则:
Maven的使用必须基于网络!!!!
2.2 maven使用原理
部件:1.本地仓库 2.私服镜像 3.中央仓库
2.3 修改本地仓库路径
1. 配置仓库
2. 配置私服镜像
<!-- maven 镜像服务器配置 -->
<mirror>
<id>nexus</id>
<name>Tedu Maven</name>
<mirrorOf>*</mirrorOf>
<url>http://maven.tedu.cn/nexus/content/groups/public/</url>
</mirror>
3. 添加JDK配置
<profile>
<id>jdk18</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
2.4 编辑本地仓库路径
更新完成后保存.
3. maven高级
3.1 Maven的jar包如何自动依赖
说明:Maven加载jar包的过程
- 根据POM文件的坐标首先到本地仓库/私服镜像中查询jar包.
- 在引入jar包文件之前,需要先加载该jar包的pom.xml文件,对其中依赖的jar包再次解析.
- 解析完成后.实现jar包的自动依赖.
3.2 Maven的jar包如何保证不被篡改
SHA1介绍:
安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准 (Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。对于长度小于2^64位的消息,SHA1会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的过程中,数据很可能会发生变化,那么这时候就会产生不同的消息摘要。 SHA1有如下特性:不可以从消息摘要中复原信息;两个不同的消息不会产生同样的消息摘要,(但会有1x10 ^ 48分之一的机率出现相同的消息摘要,一般使用时忽略)。
王小云提出了密码哈希函数的碰撞攻击理论,即模差分比特分析法,提高了破解了包括MD5、SHA-1在内的5个国际通用哈希函数算法的概率;给出了系列消息认证码MD5-MAC等的子密钥恢复攻击和HMAC-MD5的区分攻击;提出了格最短向量求解的启发式算法二重筛法;设计了中国哈希函数标准SM3,该算法在金融、国家电网、交通等国家重要经济领域广泛使用。 [1]
3.3 Mavenjar包依赖关系
如果parent项目中依赖jar包.但是自己项目同样依赖jar包则以自己的依赖为准.
3.4 如何解决jar包冲突问题
依赖A-----B.1.0.jar
依赖C-----B.2.0.jar
解决思路:去除低版本jar包.
3.5 如何确定jar包版本关系
说明:架构师准备项目时需要保证jar包版本匹配.
Jar包依赖关系
4. 项目构建
4.1 分布式项目中存在的问题
问题描述:
1.根据项目拆分的思想,可以将项目根据垂直拆分和水平拆分.将大型项目拆分为不同的小项目但是jar包管理几份??如果jar包多份,将来扩展不易.
4.2 分布式项目中jar包如何管理
说明:采用parent的形式,将项目中公共的jar包进行管理.其他的项目只需要继承parent即可.实现了jar包的统一管理.
4.3 分布式项目中工具类如何管理
说明:如果将工具代码分别保存到不同的项目中,如果对工具类方法进行编辑.则需要修改多次.对编程不易.
4.4 解决方案
说明:在分布式项目中需要使用jar包的统一管理方式,还有工具类的统一的管理方式.所以创建jt-parent和jt-common.
把上述的2个项目叫做业务的支持系统
将jt-manage/jt-cart/jt-web/jt-order等项目称之为业务系统.搭建一个大型的项目.必须添加业务的支撑系统.
4.5 京淘项目划分
序号 | 项目名称 | 主要作用 |
1 | jt-manage | 京淘后台管理系统 负责商品的更新和维护 |
2 | jt-web | 京淘前台系统,主要负责商品的展现 |
3 | jt-cart | 京淘购物车系统,负责用户购物车信息维护 |
4 | jt-sso | 京淘单点登陆系统,实现session数据共享 |
5 | jt-order | 京淘订单系统,负责订单维护 |
6 | jt-search | 京淘项目的全文检索 |
7 | jt-rabbitMQ | 消息队列系统 |
8 | jt-parent | 负责jar包的管理和依赖 |
9 | jt-common | 管理工具类文件 |
5. 构建jt-parent
5.1 创建项目
5.2 添加jar包文件
<!-- 集中定义依赖版本号 -->
<properties>
<junit.version>4.10</junit.version>
<spring.version>4.1.3.RELEASE</spring.version>
<mybatis.version>3.2.8</mybatis.version>
<mybatis.spring.version>1.2.2</mybatis.spring.version>
<mybatis.paginator.version>1.2.15</mybatis.paginator.version>
<mysql.version>5.1.32</mysql.version>
<bonecp-spring.version>0.8.0.RELEASE</bonecp-spring.version>
<druid.version>1.0.29</druid.version>
<mapper.version>2.3.2</mapper.version>
<pagehelper.version>3.4.2</pagehelper.version>
<jsqlparser.version>0.9.1</jsqlparser.version>
<slf4j.version>1.6.4</slf4j.version>
<jstl.version>1.2</jstl.version>
<servlet-api.version>2.5</servlet-api.version>
<jsp-api.version>2.0</jsp-api.version>
<joda-time.version>2.5</joda-time.version>
<commons-lang3.version>3.3.2</commons-lang3.version>
<commons-fileupload.version>1.3.1</commons-fileupload.version>
<jackson.version>2.4.2</jackson.version>
<httpclient.version>4.3.5</httpclient.version>
<jedis.version>2.6.2</jedis.version>
</properties>
<dependencies>
<!-- 单元测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</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-aspects</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- Mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>${mybatis.spring.version}</version>
</dependency>
<dependency>
<groupId>com.github.miemiedev</groupId>
<artifactId>mybatis-paginator</artifactId>
<version>${mybatis.paginator.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>
<!-- 通用Mapper -->
<dependency>
<groupId>com.github.abel533</groupId>
<artifactId>mapper</artifactId>
<version>${mapper.version}</version>
</dependency>
<!-- 分页插件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>${pagehelper.version}</version>
</dependency>
<dependency>
<groupId>com.github.jsqlparser</groupId>
<artifactId>jsqlparser</artifactId>
<version>${jsqlparser.version}</version>
</dependency>
<!-- 连接池 -->
<dependency>
<groupId>com.jolbox</groupId>
<artifactId>bonecp-spring</artifactId>
<version>${bonecp-spring.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
</dependency>
<!-- Jackson Json处理工具包 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
<!-- httpclient -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>${httpclient.version}</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.3.1</version>
</dependency>
<!-- 消息队列 -->
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit</artifactId>
<version>1.4.0.RELEASE</version>
</dependency>
<!-- JSP相关 -->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>${jstl.version}</version>
</dependency>
<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>
<!-- 时间操作组件 -->
<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>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>${commons-fileupload.version}</version>
</dependency>
<!-- jedis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>${jedis.version}</version>
</dependency>
<!--添加spring-datajar包 -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>1.4.1.RELEASE</version>
</dependency>
<!-- 字符加密、解密 -->
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.9</version>
</dependency>
<!-- 数据校验 -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.1.3.Final</version>
</dependency>
</dependencies>
6. 构建工具类项目
6.1 创建项目
6.2 添加继承
说明:jt-parent必须是pom类型
6.3 导入工具类
说明:将课前资料中的工具类项目中src文件导入项目中
说明:编辑完工具类后,分别将jt-parent和jt-common打包
7. 构建jt-manage
7.1 创建项目
1.选择骨架
2.编辑项目
3.补全项目文件路径
7.2 添加继承和依赖
1. 继承
2. 依赖
继承和依赖的关系:
继承:获取父级项目全部的jar包(多)
依赖:某些项目中需要引入额外的jar包 所以采用依赖的方式.(单个)
8. tomcat插件
8.1 传统tomcat服务器弊端
1. eclipse中整合tomcat时,配置繁琐.
2. tomcat使用一段时间后,tomcat启动时间越来越长.
因为里边的项目变多了,生成了大量的临时文件.造成启动慢
3. 搭建tomcat集群时,必须修改端口 8005/8080/8009
8.2 Tomcat插件介绍
说明:tomcat插件在程序启动时,会开启单独的线程加载tomcat,在tomcat中部署的项目,只有在线程工作时才能正常访问.即使生成了大量的临时文件则也在内存中.当线程关闭(tomcat服务).
搭建tomcat集群时只需要修改8080端口即可.
8.3 Tomcat插件配置
1.添加插件
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>8091</port>
<path>/</path>
</configuration>
</plugin>
</plugins>
</build>
2.配置启动项
3.添加源码
4.tomcat启动报错
图中表示tomcat端口被占用.关闭服务即可.
5.打包报错
如果出现上述报错,则按照顺序jt-parent/jt-common/jt-manage
9. 项目水平拆分
9.1 概念描述
说明:按照程序的层级进行拆分(聚合项目)
View层----Controller----Service------dao-------pojo
9.2 项目创建
1. 创建项目jt-aa
2. 项目类型划分
Jt-aa-controller war包
Jt-aa-service jar包
Jt-aa-dao jar包
Jt-aa-pojo jar包
9.3 水平拆分项目创建规则
1. 选择模块类型
2. 创建子模块
3. 根据规则创建模块项目
9.4 水平拆分后项目依赖关系
依赖顺序:
Controller----Service------dao-------pojo
添加继承和依赖
1.父级项目继承
2.aa中的依赖
3.聚合项目详情
打包: