23. 附录
本文介绍如何在 Windows 7 或 8 系统上安装本文档中使用的工具。屏幕截图通常展示的是已安装的 SGBD 及工具的 64 位版本。读者可根据自身环境进行调整。
23.1. 安装 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>
-->
第 4 行的默认值可能会给某些使用 Maven 的软件带来问题,如果像我一样,您的 {user.home} 路径中包含空格(例如 [C:\Users\Serge Tahé])。我们将指定(第 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 行使用包含空格的路径。
我们将安装 SpringSource Tool Suite [http://www.springsource.com/developer/sts](2014年10月版),这是一个预装了大量与 Spring 框架相关插件的 Eclipse 环境,同时还预装了 Maven 配置。
- 访问 SpringSource 工具套件 (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 操作需要 JDK。
创建 Eclipse 项目时,请按以下步骤操作:
- 在 [3] 中,为项目命名;
- 在 [4] 步骤中,指定一个现有的空文件夹;
- 在 [5] 步骤中,选择已创建的项目;
- 在 [5-8] 中,创建一个包。包是一个包含 Java 代码的文件夹。如果两个类属于不同的包,它们可以具有相同的名称。在一个项目中,不能存在两个同名的包。因此,不能使用在项目依赖项中已存在的包名。 企业通常会采用包含企业名称、项目名称及其不同分支的命名规则作为包名;
- 在 [9] 中,为包命名;
- 在 [10] 中,创建的包;
- 在 [11-13] 中,在已创建的包内创建一个类;
- 在 [14] 中,为类命名(必须符合 CamelCase 规范——名称中的每个单词首字母大写,其余小写);
- 在 [15] 中,检查包;
- 在 [16] 中,勾选复选框。此操作将生成静态方法 [main]。该方法使类可执行,即该项目中第一个要执行的类;
- 在 [17] 中,即这样创建的类;
在方法 [main] 中输入以下代码,该代码将在控制台显示文本:
package st.istia;
public class Test01 {
public static void main(String[] args) {
System.out.println("test01");
}
}
- 在 [18-20] 中,执行该类。其方法 [main] 随即被执行;
如果视图 [Console] 不存在,请按以下步骤操作 [1-4]:
导入 Eclipse 项目时,可能会出现错误。这可能是由于项目配置不正确所致。若要修复错误(如有),请按以下步骤操作:
- 在 [1] 中,修改项目的 [Build Path];
- 更改为 [2],该项目已配置为使用 JVM 1.5;
- 为 [3],删除此依赖项;
- 在 [4] 中,添加一个新的依赖项;
- 在 [5] 中,添加 JVM;
- 在 [6] 中,选择该条目的 JVM;
完成上述操作后,确认所有设置,然后转到项目 [7] 的属性 [Java compiler]:
- 在 [8] 中,要求编译器支持 Java 语言的所有特性,直至 1.7(或 1.8)版本(含);
- 在 [9] 中,进行验证;
- 在 [10] 中,重新配置后的项目不应再出现错误;
此外,导入的项目可以使用 UTF-8 字符编码。请按以下步骤在导入的项目 [1-4] 中设置此编码:
此外,建议在项目中禁用拼写检查功能,以免法语注释被标记为错误。请按照以下步骤操作:
23.4. 安装 SGBD MySQL5 社区版
SGBD MySQL5 Community Edition(2015年6月版)可在 URL [https://dev.mysql.com/downloads/mysql/] 中找到:
安装步骤如下:
- 在 [8] 中,使用了密码 [root]。 在该文档中,SGBD和MySQL的管理员标识为[root / root];
安装 MySQL 5 后,请打开 Windows 服务管理页面:
- 在 [8] 中,将 [MySQL56] 服务设置为手动启动,以免其无谓地消耗系统资源。您可在需要时通过服务页面手动启动该服务;
23.5. 安装 EMS MyManager
[http://www.sqlmanager.net/en/] 网站提供免费客户端,用于管理六种类型的 SGBD:
其优势在于,这些客户端均采用统一的界面来管理SGBD。这对于本文件中需要管理六种SGBD的情况而言非常理想。当切换SGBD时,无需重新学习新的客户端。 所有这些文件都可以在URL和[http://www.sqlmanager.net/download/]中找到。我们将下载所谓的免费版本lite:
目前(2015年5月)可下载的URL版本如下:
例如,当安装 MySQL5 的客户端 MyManager 时,将得到以下目录结构:
- 可执行文件位于 [2] 中;
- [3-8]步骤演示了如何将[MyManager]连接到MySQL的数据库之一;
- 在 [4] 中,密码是 [root];
23.6. 安装 SGBD Oracle Database Express Edition 11g Release 2
SGBD Oracle Database Express Edition 11g Release 2 已于 URL(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 端口,接收发往 SGBD 的请求;
- [OracleServiceXE],即 SGBD;
要管理 Oracle,我们将使用客户端 [OraManager](参见第 23.5 节)。 为使其可用,需先安装URL(2015年6月)中提供的[Oracle Database Express Edition 11g Release 2 Client]套件:[http://www.oracle.com/technetwork/database/enterprise-edition/downloads/112010-win32soft-098987.html]。 请下载 32 位版本,因为 [OraManager] 是一个 32 位客户端:
该套件的安装步骤如下:
- 在 [3] 中,请指定文件夹 <oracleXE-install>\app\oracle\product\11.2.0\client_1,其中 <oracleXE-install> 是您安装 Oracle Express 的文件夹;
现在,将客户端 [OraManager] 连接到 Oracle SGBD:
- 映射至 [4],必须设置为 XE;
- 在 [5] 中,别名可自由设定;
- 在 [6] 中,标识符为 [system / system];
23.7. 安装 SGBD PostgreSQL 9.4
SGBD PostgreSQL 9.4 已发布,可在 URL(2015年6月)中获取:[http://www.enterprisedb.com/products-services-training/pgdownload#windows]:
安装过程如下:
- 在 [4] 中,密码为 postgres。 在本文档中,SGBD PostgreSQL 的管理员凭据为 [postgres / postgres];
安装程序将 PostgreSQL 安装为 Windows 服务并设置为自动启动。首先需要将其切换为手动模式:
现在将客户端 [PgManager](参见第 23.5 节)连接到 SGBD PostgreSQL:
- 在 [2] 中,标识符为 [postgres / postgres];
- 在 [3] 中,连接到数据库 [postgres];
23.8. 安装 SGBD DB2 Express
SGBD DB2 Express 可在 URL(2015年6月)中使用:[http://www-01.ibm.com/software/data/db2/express-c/download.html]:
安装步骤如下:
- 在 [9] 中,密码是 [db2admin]。在此文档中,SGBD 的管理员凭据是 [db2admin / db2admin];
注意:您可能会想跳过此步骤,但请不要这样做。此步骤将创建用于存储我们即将创建的 DB2 数据库的文件夹。
- 已创建文件夹 [d:\DB2] [1];
- 已在文件夹 [d:\db2\node0000] 中创建了数据库 [SAMPLE];
安装程序将 DB2 安装为 Windows 服务并设置为自动启动。首先需要将其切换为手动模式:
对上述所有 [DB2*] 服务均需执行此操作。仅需启动 [DB2 - DB2COPY1] 服务以满足本文档需求。
现在将客户端 [Db2Manager](参见第 23.5 节)连接到 SGBD 和 DB2:
- 在 [1] 中,使用标识符 [db2admin / db2admin];
23.9. 安装 SGBD SQL Server 2014 Express
SGBD SQL Server 2014 Express 可在 URL(2015年6月)中获取:[http://www.microsoft.com/fr-fr/server-cloud/products/sql-server/]:
安装过程如下:
接下来,我们启动 SQL 服务器服务:
完成上述操作后,启动与 SGBD 同时安装的 [Microsoft SQL Server Management Studio] 客户端(参见“开始”菜单):
虽然可以使用此客户端来管理 SQL 服务器,但为了与其他 SGBD 客户端保持一致,我们将使用 [MsManager] 客户端(参见第 23.5 节)。
- 在 [1] 中,请记下 SGBD 的名称;
- 在 [2] 中,已设置密码为 msde。在本文档中,SGBD 的管理员凭据为 [sa / msde];
完成上述操作后,启动与 SGBD 同时安装的工具 [Gestionaire de configuration SQL Server](参见“开始”菜单):
- 默认情况下,在 [2] 中,TCP/IP 的通信功能未启用。对于此文档,需启用 [3];
- 在 [4] 中,同样针对本文档的需求,需指定 SGBD 在 1433 端口等待客户端请求。[Ports TCP dynamiques] 的值应为空;
完成上述设置后,启动客户端 [MsManager](参见第 23.5 节):
- 在 [3] 中,填入 [1] 中记录的名称;
- 在 [4] 中,标识符为 [sa / msde];
23.10. 安装 SGBD Firebird
SGBD Firebird 2.5.4 已发布,可从 URL(2015年6月)获取:[http://www.firebirdsql.org/en/firebird-2-5-4/]:
安装过程如下:
完成上述操作后,让我们检查一下所创建的 Windows 服务的启动模式:
现在将客户端 [IBManager](参见第 23.5 节)连接到已安装的 SGBD Firebird:
23.11. 安装 Chrome 插件 [Advanced Rest Client]
本文使用谷歌Chrome浏览器(http://www.google.fr/intl/fr/chrome/browser/)。我们将为其安装[Advanced Rest Client]扩展程序。操作步骤如下:
- 要获取该应用,您需要创建一个 Google 账户。随后 [Google Web Store] 会要求确认 [1]:
- 在 [2] 中,已添加的扩展程序可在 [Applications] [3] 选项中找到。该选项会显示在您在浏览器中创建的每个新标签页(CTRL-T)上。
23.12. Java中的jSON管理
[Spring MVC]框架以对开发者完全透明的方式 ,使用jSON和[Jackson]库。为说明什么是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' 库的依赖项;
[Personne] 类如下:
package istia.st.json;
public class Personne {
// 数据
private String nom;
private String prenom;
private int age;
// 制造商
public Personne() {
}
public Personne(String nom, String prénom, int âge) {
this.nom = nom;
this.prenom = prénom;
this.age = âge;
}
// 签名
public String toString() {
return String.format("Personne[%s, %s, %d]", nom, prenom, age);
}
// 获取器和设置器
...
}
类 [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 {
// 序列化/反序列化工具
static ObjectMapper mapper = new ObjectMapper();
public static void main(String[] args) throws IOException {
// 创建人员
Personne paul = new Personne("Denis", "Paul", 40);
// 显示jSON
String json = mapper.writeValueAsString(paul);
System.out.println("Json=" + json);
// 基于JSON实例化Personne
Personne p = mapper.readValue(json, Personne.class);
// 显示人员
System.out.println("Personne=" + p);
// 一个数组
Personne virginie = new Personne("Radot", "Virginie", 20);
Personne[] personnes = new Personne[]{paul, virginie};
// JSON 显示
json = mapper.writeValueAsString(personnes);
System.out.println("Json personnes=" + json);
// 字典
Map<String, Personne> hpersonnes = new HashMap<String, Personne>();
hpersonnes.put("1", paul);
hpersonnes.put("2", virginie);
// 显示 JSON
json = mapper.writeValueAsString(hpersonnes);
System.out.println("Json hpersonnes=" + json);
}
}
执行该类将显示以下屏幕内容:
| 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}}
|
从该示例中需注意:
- 对象 [ObjectMapper] 是转换 jSON / Object 所必需的:第 11 行;
- 转换 [Personne] --> jSON:第 17 行;
- 转换 jSON --> [Personne]:第 20 行;
- 由这两个方法触发的异常 [IOException]:第 13 行。