创建基本的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 章的内容进行操作,直到添加完所有基础依赖后,再按照下面的步骤进行操作。

  1. 在 pom.xml 中添加 packaging 配置

    <!--其他配置-→

    <packaging>war</packaging>

    在 Maven 的 pom.xml 中,packaging 默认的打包方式为 jar,即普通的 Java 项目会被打包成 jar 文件。当我们将 packaging 设置为 war 时,就变成了一个 Web 项目,项目会被打包成 war 文件。

  2. 增加 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所示。

    image 2024 05 24 11 09 33 137
    Figure 1. 图9-1 目录结构图
    image 2024 05 24 11 09 57 239
    Figure 2. 图9-2 项目结构图
  3. 在 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 依赖。

  4. 添加一个简单页面 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所示。

image 2024 05 24 11 15 02 808
Figure 3. 图9-3 Servers

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

image 2024 05 24 11 15 43 418
Figure 4. 图9-4 Tomcat v8.0 Server

点击【Next】,然后从电脑中选择 Tomcat 8.0 目录,如果电脑中没有 Tomcat 8.0,可以从地址 http://tomcat.apache.org/download-80.cgi 中进行下载。从该页面的 Binary Distributions 里的 Core 中下载 zip 版本,然后解压即可。

下载完成后,可以继续进行上面的步骤,选择解压后的 Tomcat 8.0 目录,点击【Next】继续,此时新建服务向导如图9-5所示。

image 2024 05 24 11 17 09 953
Figure 5. 图9-5 Add and Remove

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

image 2024 05 24 11 17 52 255
Figure 6. 图9-6 Servers选项卡显示

选中 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

注意,上面的服务器时间是当前系统的时间,每个人在运行这个项目时看到的时间都不相同。