创建基本的Maven Web项目
本书开始的时候就通过 Maven 创建了一个基本的 Java 项目,与这一节要创建的 Web 项目和 Java 项目中的基本内容是相似的。Maven 主要可以帮助我们管理项目依赖。与前面创建的项目不同的地方是,这个项目结构有所增加,pom.xml 中的打包方式也不同。下面开始创建一个空的 Web 项目。
首先,按照第 1 章中的操作步骤创建一个基本的 Maven 项目,在创建步骤的第 4 步输入 Group Id(tk.mybatis)、Artifact Id(mybatis-spring)、Version(0.0.1-SNAPSHOT)。然后继续按照第 1 章的内容进行操作,直到添加完所有基础依赖后,再按照下面的步骤进行操作。
-
在 pom.xml 中添加 packaging 配置
<!--其他配置-→
<packaging>war</packaging>
在 Maven 的 pom.xml 中,packaging 默认的打包方式为 jar,即普通的 Java 项目会被打包成 jar 文件。当我们将 packaging 设置为 war 时,就变成了一个 Web 项目,项目会被打包成 war 文件。
-
增加 Web 基本目录和配置
完成上述配置后,Maven 项目就变成了 Web 项目,但是项目中还缺少 Web 项目必要的目录和配置文件。在 src/main 目录下新建 webapp 目录,然后在 webapp 目录中创建 WEB-INF 目录,最后在 WEB-INF 目录中添加 web.xml 配置文件,web.xml 配置文件如下。
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> </web-app>
此时,Web 项目就创建完成了,由于 Web 项目在 Eclipse 中显示时,Java 代码和 Web 代码会区分显示,因此先看一看图9-1所示的目录结构。
在 JavaEE 视图中,项目结构如图9-2所示。
Figure 1. 图9-1 目录结构图Figure 2. 图9-2 项目结构图 -
在 pom.xml 中添加 Web 相关依赖
<!--支持 Servlet--> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> <!--支持 JSP--> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.1</version> <scope>provided</scope> </dependency> <!--支持 JSTL--> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency>
上面这些依赖的作用已经在注释中进行了说明。由于代码中可能会直接用到 Filter 和 ServletRequest 等接口,所以在编译项目时,必须提供 servlet-api 和 jsp-api 依赖。通常 Web 容器都会自带 servlet-api 和 jsp-api 的 jar 包,为了避免 jar 包重复引起错误,需要将 servlet-api 和 jsp-api 的 scope 配置为 provided。配置为 provided 的 jar 包在项目打包时,不会将依赖的 jar 包打包到项目中,项目运行时这些 jar 包需要由容器提供,这样就避免了重复 jar 包引起的错误。
在一般的以 JSP 作为视图的项目中,jstl 是很常见的搭配,使用 jstl 可以在视图中处理复杂的逻辑,所以一般的项目中都会添加 jstl 依赖。
-
添加一个简单页面 index.jsp
下面这个简单页面中为了使用 jstl,专门增加了显示服务器时间的功能。在 webapp 中新建 JSP 页面,文件名为 index.jsp,文件内容如下。
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF8" pageEncoding="UTF8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!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=UTF8">
<title>Index</title>
</head>
<body>
<p>
Hello Spring MVC!
</p>
<p>
服务器时间:<fmt:formatDate value="${now}" pattern="yyyy-MM-dd HH:mm:ss"/>
</p>
</body>
</html>
完成上面 4 步后,一个基本的 Maven Web 项目就完成了。
接下来部署这个 Web 项目并查看效果。在 Eclipse 的 Servers 选项卡中,点击提示信息新建一个 Server,如图9-3所示。

打开 New Server 窗口后,选择 Apache 目录下的 Tomcat v8.0 Server,如图9-4所示。

点击【Next】,然后从电脑中选择 Tomcat 8.0 目录,如果电脑中没有 Tomcat 8.0,可以从地址 http://tomcat.apache.org/download-80.cgi 中进行下载。从该页面的 Binary Distributions 里的 Core 中下载 zip 版本,然后解压即可。
下载完成后,可以继续进行上面的步骤,选择解压后的 Tomcat 8.0 目录,点击【Next】继续,此时新建服务向导如图9-5所示。

双击左侧的 mybatis-spring(或选中后点击Add>),此时项目就出现在右侧了,然后点击【Finish】完成配置。新增 Tomcat 容器后,Servers 选项卡的显示如图9-6所示。

选中 Tomcat,点击选项卡右上角的绿色按钮启动,Tomcat 完全启动后,在 Console 选项卡中会输出如下所示的信息。
二月07,2017 10:40:29下午org.apache.coyote.AbstractProtocol start
信息:Starting ProtocolHandler ["http-nio-8080"]
二月07,2017 10:40:29下午org.apache.coyote.AbstractProtocol start
信息:Starting ProtocolHandler ["ajp-nio-8009"]
二月07,2017 10:40:29下午org.apache.catalina.startup.Catalina start
信息:Server startup in 8262 ms
打开浏览器,在地址栏中输入http://localhost:8080/mybatis-spring,浏览器会显示如下内容。
Hello Web!
服务器时间:2017-02-07 22:42:33
注意,上面的服务器时间是当前系统的时间,每个人在运行这个项目时看到的时间都不相同。