Skip to content

23. 附录

本文将说明如何在 Windows 7 或 8 系统上安装本文档中使用的工具。截图通常展示的是 64 位版本的数据库管理系统(DBMS)和已安装工具。读者应根据自身环境进行调整。

23.1. 安装 JDK

最新版本的 JDK 可通过 URL [http://www.oracle.com/technetwork/java/javase/downloads/index.html] 获取(2014 年 10 月)。下文将把 JDK 安装目录简称为 <jdk-install>。

 

23.2. 安装 Maven

Maven 是一款用于管理 Java 项目依赖关系及其他功能的工具。截至 2014 年 10 月,可通过 URL [http://maven.apache.org/download.cgi] 获取。

 

下载并解压压缩包。我们将 Maven 安装目录称为 <maven-install>。

  • 在 [1] 中,[conf/settings.xml] 文件用于配置 Maven;

其中包含以下内容:


  <!-- localRepository
   | The path to the local repository maven will use to store artifacts.
   |
   | Default: ${user.home}/.m2/repository
  <localRepository>/path/to/local/repo</localRepository>
-->

如果像我一样,你的 {user.home} 路径中包含空格(例如 [C:\Users\Serge Tahé]),第 4 行中的默认值可能会导致某些使用 Maven 的软件出现问题。我们将指定(第 7 行)一个不同的文件夹作为本地 Maven 仓库:


  <!-- localRepository
   | The path to the local repository maven will use to store artifacts.
   |
   | Default: ${user.home}/.m2/repository
  <localRepository>/path/to/local/repo</localRepository>
  -->
<localRepository>D:\Programs\devjava\maven\.m2\repository</localRepository>

在第 7 行,请避免使用包含空格的路径。

23.3. 安装 STS(Spring Tool Suite)

我们将安装 SpringSource Tool Suite [http://www.springsource.com/developer/sts](2014 年 10 月版),这是一个预配置了大量与 Spring 框架相关插件的 Eclipse 环境,并且已预装了 Maven 配置。

  • 请访问 SpringSource Tool Suite (STS) 网站 [1] 下载 STS 的最新版本 [2A] [2B]。
  • 下载的文件是一个安装程序,它会创建文件目录结构 [3A] [3B]。在 [4] 中,我们启动可执行文件,
  • 在[5]中,关闭欢迎窗口后显示的IDE工作区窗口。在[6]中,显示应用服务器窗口,
  • 在 [7] 中,即“服务器”窗口。已注册一台服务器。这是一台兼容 Tomcat 的 VMware 服务器。

您必须向 STS 指定 Maven 的安装目录:

  • 在 [1-2] 中,配置 STS;
  • 在 [3-4] 中,添加一个新的 Maven 安装;
  • 在 [5] 中,指定 Maven 安装目录;
  • 在 [6] 中,完成向导;
  • 在 [7] 中,将新安装的 Maven 设为默认;
  • 在 [8-9] 中,验证本地 Maven 仓库——即用于存储下载的依赖项以及 STS 放置构建成果的文件夹;

您还必须选择一个 JDK(Java 开发工具包),用于运行带 Maven 和不带 Maven 的 Eclipse 项目 [1-5]。

通过 [4],您可以添加 JDK(Java 开发工具包)或 JRE(Java 运行时环境)。后者可以运行 .class 文件,但无法编译 .java 文件来生成它们。而 JDK 则可以同时完成这两项任务。您应选择 JDK,因为某些 Maven 操作需要它。

要创建一个 Eclipse 项目,请按以下步骤操作:

  • 在 [3] 中,为项目命名;
  • 在 [4] 中,选择一个现有的空文件夹;
  • 在 [5] 中,项目创建完成;
  • 在 [5-8] 中,创建一个包。包是一个包含 Java 代码的文件夹。如果两个类属于不同的包,它们可以具有相同的名称。在一个项目中,不能存在两个同名的包。因此,您不能使用项目依赖项中已存在的包名。公司通常会使用一个能明确标识公司、项目及其各个分支的包名;
  • 在 [9] 中,为包命名;
  • 在 [10] 中,显示已创建的包;
  • 在 [11-13] 中,在已创建的包内创建一个类;
  • 在 [14] 中,为该类命名(必须遵循驼峰命名法——名称中的每个单词首字母必须大写,随后为小写字母);
  • 在 [15] 中,确认该包;
  • 在 [16] 中,勾选复选框。这将请求生成静态方法 [main]。该方法使类可执行,即成为项目中第一个被执行的类;
  • 在 [17] 中,即由此创建的类;

在 [main] 方法中输入以下代码,该代码将在控制台显示文本:


package st.istia;
 
public class Test01 {
 
    public static void main(String[] args) {
        System.out.println("test01");
    }
 
}
  • 在 [18-20] 中,运行该类。随后其 [main] 方法将被执行;
  • 在 [21-22] 中,应用的结果;

如果未显示 [Console] 视图,请按以下步骤操作 [1-4]:

导入 Eclipse 项目时,项目中可能包含错误。这可能是由于项目配置不正确所致。若存在错误,请按以下步骤进行修正:

  • 在 [1] 中,修改项目的 [构建路径];
  • 在 [2] 中,该项目配置为使用 JVM 1.5;
  • 在 [3] 中,移除此依赖项;
  • 在 [4] 中,添加一个新的依赖项;
  • 在 [5] 中,添加一个 JVM;
  • 在 [6] 中,为该机器选择 JVM;

完成上述操作后,验证所有设置,然后转到项目的 [Java 编译器] 属性 [7]:

  • 在 [8] 中,指示编译器支持所有截至并包含 1.7 版(或 1.8 版)的 Java 语言特性;
  • 在[9]处,进行验证;
  • 在[10]中,重新配置后的项目不应再包含任何错误;

此外,导入的项目可能使用 UTF-8 字符编码。请按照以下步骤在导入的项目中设置此编码 [1-4]:

此外,禁用项目中的拼写检查可能会有所帮助,以防止法语注释被标记为错误。请按照以下步骤 [1-4] 操作:

23.4. 安装 MySQL 5 社区版数据库管理系统

MySQL 5 社区版数据库管理系统(截至 2015 年 6 月)可通过以下网址获取:[https://dev.mysql.com/downloads/mysql/]:

 

安装步骤如下:

  • 在[8]中,使用了密码[root]。在本文档中,MySQL数据库管理系统的管理员凭据为[root / root];

安装完 MySQL 5 后,打开 Windows 服务管理页面:

  • [1]:左下角的 Windows 图标;
  • 在 [8] 中,将 [MySQL56] 服务设置为手动启动,以免其不必要地消耗资源。您可以在需要时通过“服务”页面启动它;

23.5. 安装 EMS MyManager

网站 [http://www.sqlmanager.net/en/] 提供免费客户端,用于管理六种类型的数据库管理系统:

 

其优势在于,它们都采用了统一的界面来管理数据库管理系统(DBMS)。这对于本文而言再合适不过,因为我们需要管理全部六种数据库管理系统。在不同数据库管理系统之间切换时,无需学习新的客户端。所有这些工具均可通过以下网址获取:[http://www.sqlmanager.net/download/]。请下载免费的“精简版”:

 
 

目前(2015年5月)的下载链接如下:

MySQL5
IBM DB2
Firebird / Interbase
Oracle
Microsoft SQL Server
PostgreSQL

例如,在安装 MySQL5 MyManager 客户端时,你会得到以下目录结构:

  • 可执行文件位于 [2];
  • 步骤 [3-8] 演示了如何将 [MyManager] 连接到其中一个 MySQL 数据库;
  • 在 [4] 中,密码是 [root];

23.6. Oracle Database Express Edition 11g Release 2 的安装

Oracle Database Express Edition 11g Release 2 数据库管理系统可通过以下网址获取(2015年6月):[http://www.oracle.com/technetwork/database/database-techno logies/express-edition/downloads/index.html]:

 

安装步骤如下:

  • 在 [6] 中,输入密码 [system]。在本文档中,Oracle 管理员的凭据为 [system / system];

安装过程会将 Oracle 配置为 Windows 服务。系统将安装多个服务,默认情况下这些服务均设置为自动启动。第一步是将它们切换为手动模式:

必须启动两个服务:

  • [OracleXETNSListener],该服务监听端口 1521 以接收发往 DBMS 的请求;
  • [OracleServiceXE],即数据库管理系统(DBMS);

为了管理 Oracle,我们将使用 [OraManager] 客户端(第 23.5 节)。要使用它,您必须首先安装 [Oracle Database Express Edition 11g Release 2 Client] 套件,该套件可通过以下网址获取(2015 年 6 月): [http://www.oracle.com/technetwork/database/enterprise-edition/downloads/112010-win32soft-098987.html]。由于 [OraManager] 是 32 位客户端,因此必须下载 32 位版本:

 

请按以下步骤安装此套件:

  • 在 [3] 中,指定文件夹 <oracleXE-install>\app\oracle\product\11.2.0\client_1,其中 <oracleXE-install> 是您安装 Oracle Express 的文件夹;

现在,让我们将 [OraManager] 客户端连接到 Oracle DBMS:

  • 在[2]中,组名由您自行决定;
  • 在[4]中,必须输入XE;
  • 在 [5] 中,别名可以是任意内容;
  • 在 [6] 中,凭据为 [system / system];

23.7. 安装 PostgreSQL 9.4 数据库管理系统

PostgreSQL 9.4 数据库管理系统可通过以下网址获取(2015年6月):[http://www.enterprisedb.com/products-services-training/pgdownload#windows]:

 

安装步骤如下:

  • 在[4]中,密码是postgres。在本文档中,PostgreSQL数据库管理系统的管理员凭据是[postgres / postgres];

该安装程序将 PostgreSQL 配置为 Windows 服务并设置为自动启动。首先需要将其切换为手动模式:

现在,让我们将 [PgManager] 客户端(参见第 23.5 节)连接到 PostgreSQL 数据库管理系统:

  • 在[2]中,凭据为[postgres / postgres];
  • 在[3]中,我们连接到[postgres]数据库;

23.8. 安装 DB2 Express 数据库管理系统

DB2 Express 数据库管理系统可通过以下网址获取(2015年6月):[http://www-01.ibm.com/software/data/db2/express-c/download.html]:

 

安装步骤如下:

  • 在[9]中,密码是[db2admin]。在本文档中,DBMS管理员的凭据是[db2admin / db2admin];
 

注意:您可能会想跳过此步骤。请不要这样做。此步骤将创建一个文件夹,用于存储我们即将创建的 DB2 数据库。

  • 已创建文件夹 [d:\DB2] [1];
  • 已在文件夹 [d:\db2\node0000] 中创建了数据库 [SAMPLE];

安装程序将 DB2 配置为 Windows 服务并设置为自动启动。第一步是将其切换为手动模式:

请对上述所有 [DB2*] 服务执行此操作。仅需启动 [DB2 - DB2COPY1] 服务以满足本文档的要求。

现在,让我们将 [Db2Manager] 客户端(参见第 23.5 节)连接到 DB2 数据库管理系统:

  • 在[1]中,请使用凭据 [db2admin / db2admin];

23.9. 安装 SQL Server 2014 Express 数据库管理系统

SQL Server 2014 Express 数据库管理系统可通过以下网址获取(2015年6月):[http://www.microsoft.com/fr-fr/server-cloud/products/sql-server/]:

 

安装步骤如下:

 
 
 
 
 
  • 在 [1] 中输入任意密码。我们稍后会更改它;
 
 

接下来,启动 SQL Server 服务:

完成上述操作后,启动随数据库管理系统(DBMS)一同安装的 [Microsoft SQL Server Management Studio] 客户端(参见“开始”菜单):

我们可以使用此客户端来管理 SQL Server。但是,为了与其他数据库管理系统(DBMS)的客户端保持一致,我们将使用 [MsManager] 客户端(参见第 23.5 节)。

  • 在[1]中,请注意数据库管理系统(DBMS)的名称;
  • 在[2]中,我们输入了密码 msde。在本文档中,DBMS 管理员的凭据为 [sa / msde];

完成上述操作后,启动随 DBMS 一起安装的 [SQL Server 配置管理器] 工具(参见“开始”菜单):

  • 默认情况下,在 [2] 中,TCP/IP 通信未启用。在本文档中,您必须启用它 [3];
  • 在 [4] 中,同样出于本文档的目的,您必须指定 DBMS 在 1433 端口上等待客户端请求。[动态 TCP 端口] 的值必须留空;

完成此设置后,启动客户端 [MsManager](参见第23.5节):

  • 在 [3] 中,输入 [1] 中记录的名称;
  • 在 [4] 中,凭据为 [sa / msde];
 

23.10. 安装 Firebird 数据库管理系统

Firebird 2.5.4 数据库管理系统可从以下网址获取(2015年6月):[http://www.firebirdsql.org/en/firebird-2-5-4/]:

 

安装步骤如下:

 

完成上述操作后,让我们检查一下所创建的 Windows 服务的启动模式:

现在,让我们将 [IBManager] 客户端(参见第 23.5 节)连接到已安装的 Firebird 数据库管理系统:

  • 在 [1] 中,密码为 masterkey

23.11. 安装 [Advanced Rest Client] Chrome 插件

本文使用的是 Google 的 Chrome 浏览器(http://www.google.fr/intl/fr/chrome/browser/)。我们将向其中添加 [Advanced Rest Client] 扩展程序。具体操作如下:

 
  • 随后即可下载该应用:
  • 要获取该应用,您需要创建一个 Google 账户。随后 [Google 应用商店] 会要求您进行确认 [1]:
  • 在 [2] 中,已添加的扩展程序可在 [应用] 选项 [3] 中找到。该选项会显示在您通过浏览器创建的每个新标签页(CTRL-T)上。

23.12. Java 中的 JSON 处理

[Spring MVC] 框架以对开发者透明的方式,内部使用了 [Jackson] JSON 库。为说明 JSON(JavaScript 对象表示法)的含义,我们在此展示一个程序:该程序将对象序列化为 JSON,并通过反序列化生成的 JSON 字符串来重建原始对象。

'Jackson' 库允许您构建:

  • 对象的 JSON 字符串:new ObjectMapper().writeValueAsString(object);
  • 从 JSON 字符串构建对象:new ObjectMapper().readValue(jsonString, Object.class).

这两种方法都可能抛出异常。以下是一个示例。

  

上述项目是一个 Maven 项目,其 [pom.xml] 文件如下:


<?xml version="1.0" encoding="UTF-8"?>
<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>istia.st.pam</groupId>
  <artifactId>json</artifactId>
  <version>1.0-SNAPSHOT</version>
 
  <dependencies>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.3.3</version>
    </dependency>
  </dependencies>
</project>
  • 第 12–16 行:引入 'Jackson' 库的依赖项;

[Person] 类如下所示:


package istia.st.json;
 
public class Personne {
    // data
    private String nom;
    private String prenom;
    private int age;
 
    // manufacturers
    public Personne() {
 
    }
 
    public Personne(String nom, String prénom, int âge) {
        this.nom = nom;
        this.prenom = prénom;
        this.age = âge;
    }
 
    // signature
    public String toString() {
        return String.format("Personne[%s, %s, %d]", nom, prenom, age);
    }
 
    // getters and setters
...
}

[Main] 类如下所示:


package istia.st.json;
 
import com.fasterxml.jackson.databind.ObjectMapper;
 
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
 
public class Main {
  // the serialization / deserialization tool
  static ObjectMapper mapper = new ObjectMapper();
 
  public static void main(String[] args) throws IOException {
    // creation of a person
    Personne paul = new Personne("Denis", "Paul", 40);
    // display jSON
    String json = mapper.writeValueAsString(paul);
    System.out.println("Json=" + json);
    // person instantiation from Json
    Personne p = mapper.readValue(json, Personne.class);
    // person display
    System.out.println("Personne=" + p);
    // a picture
    Personne virginie = new Personne("Radot", "Virginie", 20);
    Personne[] personnes = new Personne[]{paul, virginie};
    // json display
    json = mapper.writeValueAsString(personnes);
    System.out.println("Json personnes=" + json);
    // dictionary
    Map<String, Personne> hpersonnes = new HashMap<String, Personne>();
    hpersonnes.put("1", paul);
    hpersonnes.put("2", virginie);
    // json display
    json = mapper.writeValueAsString(hpersonnes);
    System.out.println("Json hpersonnes=" + json);
  }
}

执行此类将产生以下屏幕输出:

1
2
3
4
Json={"nom":"Denis","prenom":"Paul","age":40}
Personne=Personne[Denis, Paul, 40]
Json personnes=[{"nom":"Denis","prenom":"Paul","age":40},{"nom":"Radot","prenom":"Virginie","age":20}]
Json hpersonnes={"2":{"nom":"Radot","prenom":"Virginie","age":20},"1":{"nom":"Denis","prenom":"Paul","age":40}}

示例要点:

  • 用于 JSON/对象转换所需的 [ObjectMapper] 对象:第 11 行;
  • [Person] 到 JSON 的转换:第 17 行;
  • JSON 转 [Person] 的转换:第 20 行;
  • 两个方法均抛出的 [IOException]:第 13 行。