我们在上一节介绍了Dubbo的基础知识,但是对于开发者来说,不进行实践只讲解理论,是不可能完全理解某门技术的。这里我们就以一个项目的改造为驱动,来给大家展现一下传统Web工程,与使用Dubbo应用的工程的区别。通过动手改变项目的架构,开让大家初步理解Dubbo在开发和使用中扮演的角色,为Dubbo的深入学习打下基础。

我们在这里先编写一个Maven结构的WebProject工程,用于后期的改造。

工程需求:
对仓库货物信息进行增删改查的简单工程

工程架构:
SpringMVC框架以及MyBatis框架

数据库:
MySQL

开发工具:
MyEclipse2014

表结构:
只有一张表,commodity

Java环境:
JDK1.8 

(1)安装以及配置Maven
由于我们这个工程是Maven工程,所以首先我们要先下载Maven:
下载地址 http://maven.apache.org/download.cgi
我们这里下载3.5.0的版本:


然后将其解压至D盘:


然后在环境变量中添加Maven的Home:

设置为Maven的文件夹所在目录即可。

然后在Path中添加bin所在目录:


之后在在Windows命令提示符下,输入mvn -v,出现以下结果证明
Maven安装成功:


然后在MyEclipse中配置我们的Maven插件重新定位到我们刚刚安装的目录:



(2)在MyEclipse中创建Maven工程
我们要创建两个工程,一个是包含所有依赖的Maven工程web-parent,另外一个就是我们的应用工程web-commodity。这里web-parent主要提供Web工程所需要的依赖jar包,它是为了让其它应用去引用它,使得其它应用的依赖清晰化,之和核心业务的依赖有关。

首先我们创建web-parent工程;

我们选择Maven工程进行创建:

这里我们勾选上Create a simple project (不使用骨架)

这里的Packing我们选择jar的形式,因为我们只需要它提供主要依赖服务即可。
然后我们创建完成的工程结构如下:

为了方便以后的Dubbo整合,我们将工程的jre更换为1.8的:

更换后:



接下来我们编写POM文件,将SpringMVC与MyBatis的常用依赖引入,编写之后的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.com.commoditySystem</groupId>
  <artifactId>web-parent</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <properties>  
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>  
  
    <!-- spring版本号 -->  
    <spring.version>4.2.5.RELEASE</spring.version>  
  
    <!-- mybatis版本号 -->  
    <mybatis.version>3.2.8</mybatis.version>  
  
    <!-- mysql驱动版本号 -->  
    <mysql-driver.version>5.1.29</mysql-driver.version>  
  
    <!-- log4j日志包版本号 -->  
    <slf4j.version>1.7.18</slf4j.version>  
    <log4j.version>1.2.17</log4j.version>  
  
  </properties> 
  
  <dependencies>  
    <!-- 添加jstl依赖 -->  
    <dependency>  
      <groupId>jstl</groupId>  
      <artifactId>jstl</artifactId>  
      <version>1.2</version>  
    </dependency>  
  
    <dependency>  
      <groupId>javax</groupId>  
      <artifactId>javaee-api</artifactId>  
      <version>7.0</version>  
    </dependency>  
  
    <!-- 添加junit4依赖 -->  
    <dependency>  
      <groupId>junit</groupId>  
      <artifactId>junit</artifactId>  
      <version>4.11</version>  
      <!-- 指定范围,在测试时才会加载 -->  
      <scope>test</scope>  
    </dependency>  
  
    <!-- 添加spring核心依赖 -->  
    <dependency>  
      <groupId>org.springframework</groupId>  
      <artifactId>spring-core</artifactId>  
      <version>${spring.version}</version>  
    </dependency>  
    <dependency>  
      <groupId>org.springframework</groupId>  
      <artifactId>spring-web</artifactId>  
      <version>${spring.version}</version>  
    </dependency>  
    <dependency>  
      <groupId>org.springframework</groupId>  
      <artifactId>spring-oxm</artifactId>  
      <version>${spring.version}</version>  
    </dependency>  
    <dependency>  
      <groupId>org.springframework</groupId>  
      <artifactId>spring-tx</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-context</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-aop</artifactId>  
      <version>${spring.version}</version>  
    </dependency>  
  
    <dependency>  
      <groupId>org.springframework</groupId>  
      <artifactId>spring-test</artifactId>  
      <version>${spring.version}</version>  
    </dependency>  
  
    <!-- 添加mybatis依赖 -->  
    <dependency>  
      <groupId>org.mybatis</groupId>  
      <artifactId>mybatis</artifactId>  
      <version>${mybatis.version}</version>  
    </dependency>  
  
    <!-- 添加mybatis/spring整合包依赖 -->  
    <dependency>  
      <groupId>org.mybatis</groupId>  
      <artifactId>mybatis-spring</artifactId>  
      <version>1.2.2</version>  
    </dependency>  
  
    <!-- 添加mysql驱动依赖 -->  
    <dependency>  
      <groupId>mysql</groupId>  
      <artifactId>mysql-connector-java</artifactId>  
      <version>${mysql-driver.version}</version>  
    </dependency>  
    <!-- 添加数据库连接池依赖 -->  
    <dependency>  
      <groupId>commons-dbcp</groupId>  
      <artifactId>commons-dbcp</artifactId>  
      <version>1.2.2</version>  
    </dependency>  
  
    <!-- 添加fastjson -->  
    <dependency>  
      <groupId>com.alibaba</groupId>  
      <artifactId>fastjson</artifactId>  
      <version>1.1.41</version>  
    </dependency>  
  
    <!-- 添加日志相关jar包 -->  
    <dependency>  
      <groupId>log4j</groupId>  
      <artifactId>log4j</artifactId>  
      <version>${log4j.version}</version>  
    </dependency>  
    <dependency>  
      <groupId>org.slf4j</groupId>  
      <artifactId>slf4j-api</artifactId>  
      <version>${slf4j.version}</version>  
    </dependency>  
    <dependency>  
      <groupId>org.slf4j</groupId>  
      <artifactId>slf4j-log4j12</artifactId>  
      <version>${slf4j.version}</version>  
    </dependency>  
  
    <!-- log end -->  
    <!-- 映入JSON -->  
    <dependency>  
      <groupId>org.codehaus.jackson</groupId>  
      <artifactId>jackson-mapper-asl</artifactId>  
      <version>1.9.13</version>  
    </dependency>  
    <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->  
    <dependency>  
      <groupId>com.fasterxml.jackson.core</groupId>  
      <artifactId>jackson-core</artifactId>  
      <version>2.8.0</version>  
    </dependency>  
    <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->  
    <dependency>  
      <groupId>com.fasterxml.jackson.core</groupId>  
      <artifactId>jackson-databind</artifactId>  
      <version>2.8.0</version>  
    </dependency>  
  
    <!-- 文件上传相关依赖 -->
    <dependency>  
      <groupId>commons-fileupload</groupId>  
      <artifactId>commons-fileupload</artifactId>  
      <version>1.3.1</version>  
    </dependency>  
  
    <dependency>  
      <groupId>commons-io</groupId>  
      <artifactId>commons-io</artifactId>  
      <version>2.4</version>  
    </dependency>  
  
    <dependency>  
      <groupId>commons-codec</groupId>  
      <artifactId>commons-codec</artifactId>  
      <version>1.9</version>  
    </dependency>  
  
    <!-- https://mvnrepository.com/artifact/com.github.abel533/ECharts -->  
    <dependency>  
      <groupId>com.github.abel533</groupId>  
      <artifactId>ECharts</artifactId>  
      <version>3.0.0</version>  
    </dependency>  
  
    <dependency>  
      <groupId>com.google.code.gson</groupId>  
      <artifactId>gson</artifactId>  
      <version>2.5</version>  
      <scope>compile</scope>  
      <optional>true</optional>  
    </dependency>  
  
    <dependency>  
      <groupId>net.sf.jxls</groupId>  
      <artifactId>jxls-core</artifactId>  
      <version>1.0.5</version>  
    </dependency>  
  </dependencies>  
  
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
    </plugins>
  </build>
  
</project>
上面分别包含了jstl依赖 、junit4依赖、spring核心依赖、mybatis依赖、mybatis/spring整合包依赖、mysql驱动依赖、数据库连接池依赖、日志相关依赖、JSON相关依赖(fastjson)、文件上传相关依赖等。
保存pom文件后,我们的依赖被加入classpath下:



因为我们这个工程是用来做核心依赖的,所以我们这里添加一些常用的工具类:

里面包含了Base64工具类,字节处理工具类,日期处理工具类,日志工具类,Md5加密工具类,文件处理工具类,字符串处理工具类,上传工具类等。
常用工具类下载链接: http://pan.baidu.com/s/1pJLSczD


然后我们创建我们的Maven的Web工程,该工程就是我们的商品管理的项目工程web-commodity了,会以web-project工程为核心依赖。
同样是创建Maven工程,但是我们是Web工程,所以选择打包方式为war的形式:

刚创建时pom文件可能会报错,那是因为我们选择了war的打包形式,但是没有添加war的配置maven-war-plugin,我们添加后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.com.commoditySystem</groupId>
  <artifactId>web-commodity</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
      <plugin>
      	<artifactId>maven-war-plugin</artifactId>
      	<configuration>
      		<version>3.1</version>
      	</configuration>
      </plugin>
    </plugins>
  </build>
</project>
同样我们把jre的版本改为1.8,为后续Dubbo改造做准备。
然后我们在POM文件中添加刚才的核心依赖工程web-project:
<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.com.commoditySystem</groupId>
  <artifactId>web-commodity</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  
  <dependencies> 
  	<dependency>  
      <groupId>cn.com.commoditySystem</groupId>  
      <artifactId>web-parent</artifactId>  
      <version>0.0.1-SNAPSHOT</version>  
    </dependency>
  </dependencies>
  
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
      <plugin>
      	<artifactId>maven-war-plugin</artifactId>
      	<configuration>
      		<version>3.1</version>
      	</configuration>
      </plugin>
    </plugins>
  </build>
</project>

这时我们不仅获得了SpringMVC与MyBatis工程需要的所有依赖,而且获取了web-parent工程的依赖:


由于我们的项目要使用MyEclipse发布到tomcat下面,这里我们需要先把项目转成dynamic web project。我们在项目上点击右键,选择properties并找到Project Facets:

然后勾选Dynamic Web Module 并点击ok:


然后我们的Maven工程结构就变成dynamic web project了:


我们在WEB-INF下添加web.xml配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
	xmlns="http://java.sun.com/xml/ns/j2ee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
	http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

然后改写以下Web工程默认的index.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    <title>Home</title>
  </head>
  
  <body>
    这里是web-commodity的首页<br>
  </body>
</html>

我们将该工程发布到tomcat中试验一下:



在浏览器访问工程获得结果页面:


说明我们的核心依赖工程web-parent和Web工程web-commodity创建成功,并且成功发布到tomcat中加载。

下一篇我们将在Web工程上构建SpringMVC和MyBtais的开发环境。

转载请注明出处:http://blog.csdn.net/acmman/article/details/74780968

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐