理解本文所需的知识:您已经或多或少地了解了
Java Core,并希望了解
JavaEE 技术和
Web 编程。对您来说,目前正在研究 Java Collections 任务是最有意义的,它处理的主题与本文很接近。
目前,我使用的是
IntelliJ IDEA 企业版(
编者注:这是 IDE 的付费扩展版,通常用于专业开发)。在其中处理 Web 项目比在免费的
社区版中容易得多。在
Enterprise Edition中,只需单击鼠标即可构建项目,将其放入 servlet 容器中,启动服务器,甚至在浏览器中打开该项目的网页。在 IDEA 的免费版本中,您必须自己完成大部分工作,即“手动”。我使用
Apache Maven构建项目并管理其生命周期。我在这个项目中只使用了它的一小部分能力(包/依赖管理)。作为 servlet 容器/应用程序服务器,我选择了 Apache Tomcat 版本 9.0.12。
让我们开始吧
首先,打开
IntelliJ IDEA并创建一个空的
Maven 项目。
在左侧,选择
Maven,并检查上面是否选择了
项目的 JDK。如果不存在,请从列表中选择一个,或单击“
新建...”并从计算机中选择一个。
在此窗口中,您需要指定
GroupId 和 ArtifactId。GroupId是指发布项目
的公司的唯一标识符。通常的做法是使用公司的域名,但顺序相反。虽然不像镜子。例如,如果公司的域名是
maven.apache.org,那么它的 GroupId 就是
org.apache.maven. 也就是说,我们先写顶级域名,加一个点,然后是二级域名,依此类推。这是普遍接受的方法。如果您是自己“研究”该项目(而不是作为公司的一部分),那么您可以将您的个人域名放在这里(也以相反的顺序!)。当然,如果你有的话。:) 如果没有,请不要担心。你实际上可以
在这里写任何东西。
对于域名为 john.doe.org 的公司,GroupId 将为 org.doe.john。需要此命名约定来分隔不同公司生产的同名项目。 |
在此示例中,我将使用一个虚构的域:
fatlady.info.codegym.cc。因此,我在
GroupId字段中输入
cc.codergym.info.fatlady。
ArtifactId只是我们项目的名称。您可以使用字母和某些符号(例如连字符)来分隔单词。我们的“工件”将完全按照我们在这里写的命名。在这个例子中,我将使用
my-super-project。暂时不要触及版本字段——保持原样即可。 这是创建新项目时的标准
IDEA 窗口。按照传统,我们称它为
my-super-project。
项目已创建!
Pom.xml 立即打开。这是一个包含 Maven 设置的文件。如果我们想告诉 Maven 做什么或在哪里找到某些东西,我们将在这个 pom.xml 文件中描述所有这些。它位于项目的根目录中。 |
我们看到它现在包含我们在创建Maven 项目时输入的确切数据:
groupId、
artifactId和
版本(我们没有触及最后一个)。
我们项目的结构
这个
Maven 项目有一个特定的结构。
如您所见,根具有:
- 一个.idea目录,其中包含当前项目的 IDEA 设置;
- 一个src目录,我们在其中创建源代码;
- my-super-project.iml文件,是IDEA创建的工程文件;
- pom.xml文件(我之前提到的 Maven 项目文件),现在已打开。如果我在某处提到 pom.xml,这就是我正在谈论的文件。
在
src文件夹内,有两个子文件夹:
- main — 用于我们的代码;
- 测试——用于测试我们的代码。
在
main和
test中,有一个
java文件夹。
您可以将它们视为同一个文件夹,除了main中的那个用于源代码,而
test中的那个用于测试代码。目前,我们没有用到
资源文件夹。我们不会使用它。但是就把它放在那里。
将其转换为 Web 项目
现在是我们将
Maven 项目转换为 Web 项目的时候了。为此,请右键单击此树中的项目名称并选择
添加框架支持……
将打开一个窗口,我们可以在其中为我们的项目添加对各种框架的支持。但我们只需要一个:
Web Application。Ans 那是我们选择的那个。
确保选中
Web Application复选框,并且主窗口指示我们希望自动创建一个
web.xml文件(如果尚未选中,我建议选中该复选框)。然后我们看到
web文件夹已添加到我们的项目结构中。
这是我们的 web 项目的根地址
/
. 换句话说,如果我们在浏览器中输入“
localhost ”(当然是在项目运行时),那么它会在 Web 项目的根目录下查找。如果我们输入
localhost/addUser ,那么它将在
web文件夹中查找名为
addUser的资源。
主要你要明白的是,当我们把web文件夹放到Tomcat中时,它就是我们项目的根目录。我们现在有特定的文件夹结构,但在我们要创建的完成项目中,它会略有不同。具体来说,web 文件夹将是根目录。 |
在
web中,有一个名为
WEB-INF 的必需文件夹,其中包含
web.xml文件,即我们在上一步中要求程序创建的文件夹。让我们打开它。
你可以看到它里面没有任何有趣的东西,只有一个标题。顺便说一下,如果您没有请求创建文件,那么您将不得不手动创建它,即手动输入所有标题。或者,至少,在 Internet 上搜索现成的版本。我们需要
web.xml做什么?用于映射。
在这里,我们将为Tomcat阐明将哪些 URL 请求传递给哪些 servlet。但我们稍后再谈。现在,将其留空。web
文件夹还有一个
index.jsp 文件. 打开它。
这是默认情况下将执行的文件,可以这么说。换句话说,这正是我们开始项目时所看到的。基本上,
jsp是一个普通的
HTML 文件,只是您可以在其中执行 Java 代码。
关于静态和动态内容的一点点
静态内容是不随时间变化的内容。我们在
HTML 文件中写入的所有内容都按照写入时的原样显示。如果我们写“
hello world ”,这个文本将在我们打开页面时立即显示,5 分钟后,明天,一周后,一年后。它不会改变。但是如果我们想在页面上显示当前日期呢?如果我们只写“
2017 年 10 月 27 日”,那么明天我们会看到相同的日期,一周后,一年后。但我们希望日期是最新的。这就是在页面上执行代码的能力很有帮助的地方。我们可以得到一个date 对象,将其转换成需要的格式,显示在页面上。这样,每天打开页面时,日期将始终是当前日期。如果我们只需要静态内容,那么我们只需要一个常规的 web 服务器和HTML 文件。我们不需要 Java、Maven 或 Tomcat。但如果我们想使用动态内容,那么我们需要所有这些工具。但现在,让我们回到我们的
index.jsp。
让我们指明标准标题以外的内容,例如,“
我的超级网络应用程序! ”然后,在正文中,让我们写下“
我还活着! ”我们几乎准备好开始我们的项目了!不幸的是,通常用于启动程序的绿色三角形未激活。
单击它左侧的按钮(在屏幕上用红色箭头指示)并选择
编辑配置...这将打开一个窗口,我们将在其中单击绿色加号以添加一些配置。单击它(在窗口的左上角)。
选择
Tomcat 服务器>
本地。将打开一个包含许多选项的窗口,但默认设置几乎适合我们的所有内容。
我们可以给我们的配置一个漂亮的名字,而不是标准的
未命名(在最顶部)。我们还需要验证 IDEA 是否已在我们的系统上成功找到 Tomcat(您已经
下载并安装对的?)。如果未找到(不太可能),则按向下箭头并选择安装位置。或者,如果您安装了多个版本,则选择不同的版本。我只有一个,它已经安装好了。这就是它在我的屏幕上看起来的样子的原因。在窗口的最底部,我们看到一个警告,提醒我们到目前为止还没有任何工件被指示部署到服务器。此警告的右侧是一个按钮,建议我们修复此问题。我们点击它,可以看到 IDEA 能够自己找到所有东西,自己创建所有缺少的东西,并自己配置所有设置。
我们可以看到它把我们从
Server选项卡移到了
Deployment选项卡,在
Deploy at the server startup下面部分,我们现在有一个要部署的工件。
单击应用和确定。 我们首先看到,在窗口底部,出现了一个部分,其中包含我们的本地 Tomcat 服务器,我们的工件将放置在该部分中。通过单击窗口右侧的相应按钮来折叠此部分。
现在我们看到绿色启动三角形处于活动状态。对于那些喜欢仔细检查所有内容的人,您可以单击项目设置按钮(在启动按钮的右侧,用红色箭头指示),转到“工件”部分,并确保工件确实已
创建。它不存在,直到我们按下
修复按钮,但现在一切正常。这种配置非常适合我们。简而言之,
my-super-project:war和
my-super-project:war exploded的区别在于
my-super-project:war只包含一个
war文件(只是一个存档)和
exploded版本简直就是
“开箱即用”的战争。就个人而言,这是我觉得更方便的选项,因为它可以让您快速调试服务器上的小改动。从本质上讲,
工件是我们的项目,刚刚编译——文件夹结构已更改为允许 Tomcat 直接访问它。它看起来像这样:
现在一切准备就绪,可以启动我们的项目了。按下珍贵的绿色启动按钮,享受结果吧!:)
GO TO FULL VERSION