【Java Web编程 二】第一个Java Web项目(Idea2021+Maven3+Tomcat8+JDK8)

简介: 【Java Web编程 二】第一个Java Web项目(Idea2021+Maven3+Tomcat8+JDK8)

接下来我们基于这样的组合工具来创作第一个Java Web项目,在这个过程中由于不熟悉Idea和Maven自身的强大功能,走了很多弯路,这里把这些弯路都总结一下,输出一篇较为正确的第一个项目:

安装与配置

首先需要进行组合套件的安装与配置,因为我之前写过类似的文章,这里就不再重复了,针对当前的组合套件来进行一个介绍:(Idea2021+Maven3+Tomcat8+JDK8)

好的,所有的套件组装完毕了,让我们接下来创建第一个Java Web项目并且明确一些注意事项

Java Web创建

包括创建新项目,Tomcat的一些配置疑惑,以及Maven去哪里了?

创建新项目

点击新建项目创建一个新的project,点击【New Project】开始创建第一个项目,并且为这个项目的组成方式选择配置:

选择要构建的项目的一些必须属性,例如我们通过Maven来构建这个Java Web项目,就按照如下的方式去选择,当然你也可以通过Gradle去构建,这里我们选择Maven;同时这里的服务器是我们本地安装好的,选中即可。

接下来是我们项目可以选择的额外装配内容,这里我们暂时都不选择,需要的时候再通过Maven引入即可:

这样一个项目已经构建完了,构建完成的目录如下:

项目目录结构

因为是依据Maven构建的,所以也是用的Maven的经典目录结构,详细我会在Maven的一篇专题Blog中具体介绍,敬请期待,这里简单的说明下:

再来看看部署后的文件:

而WEB-INF下存放编译后的Servlet文件和web配置文件:

配置Tomcat服务器

我们需要调整一下Tomcat的默认配置来让我们的项目运转的更舒服,让我们解决以下几个问题:

解决URL路径和项目名称不符问题

首先我们需要调整一下请求的URL路径名称,这样我们在浏览器里就不必输入较为长的Tomcat默认附加的奇怪地址:

解决JSP修改后需要重启服务器问题

接下来我们打开Tomcat热部署,这样每次JSP的调整都不需要重启服务器了,会自动的生效。同时我们还需要设置Tomcat所有项目部署,这样的好处是所有部署在Tomcat上的项目启动时都可以同时使用了

这里顺便提一下两种部署模式:

  • war模式这种可以称之为是发布模式,就是先将WEB工程打成war包,然后再将其上传到服务器进行发布
  • war exploded模式是将WEB工程以当前文件夹的位置关系上传到服务器,即直接把文件夹、jsp页面 、classes等等移到Tomcat 部署文件夹里面,进行加载部署。因此这种方式支持热部署,一般在开发的时候也是用这种方式。

在平时开发的时候,使用热部署的话,应该对Tomcat进行相应的设置,这样的话修改的jsp界面什么的东西才可以及时的显示出来.

同时需要注意需要设置Tomcat所有项目部署,这里的勾选指的是会连同:TOMCAT_HOME\webapps下的项目一起部署。如果不勾选,那么甚至连localhost的主页都不会显示,因为它会遵循配置寻找自己要部署的项目,下面将会聊到:

解决tomcat的webapps目录下找不到项目的问题

最后我们要设置Web部署包的输出目录,Idea对tomcat的操作是这样的,默认设置输出的部署地址:

每次在IDEA启动Tomcat的时候Idea会在一个默认的地址为我们生成一个包含Tomcat全部配置拷贝的Tocat副本:

C:\Users\13304\AppData\Local\JetBrains\IntelliJIdea2021.1\tomcat

在这个拷贝下我们可以找到当前项目的配置文件,该配置文件描述了tomcat该如何找到当前的部署地址:

\522868f8-acc6-45a8-8ea9-753cc1111423\conf\Catalina\localhost

这样当tomcat启动时通过配置文件找到真实的项目输出位置,启动项目,为了解决这个问题,让我们所有的项目不必依赖idea而启动我们需要修改项目地址,修改为安装的tomcat的webapps下:

这样当我们运行项目后就能找到了:

当然这个属于历史服务器默认配置tomcat没有办法的办法,如果我们依然想使用idea默认的方式也可以,但是其中的原理还是要理解一下的,即tomcat依据配置路径去寻找部署包并运行。

WEB-INF下的lib目录去哪了

我们知道标准的Java EE构建在web-inf下会有lib,文件夹里会存放我们的包依赖,但是从这里我们却没有找到lib,这是因为Maven已经接管了我们的包管理,无需自己再进行手动装配和引入依赖了,这就是Maven最大的优势啊,还搞神秘lib目录?

配置Maven包管理器

我们先来找到Maven并修改一些配置,保证项目可用。关于Maven的详细介绍,可以看我的这个目录:Maven的基本概念和基本功能

Maven安装在哪

我们可以看到,到现在为止并没有安装任何的Maven,那是因为Idea依据帮我们集成了,版本默认是3.6.3,本地仓库默认放到了用户文件夹下。

添加Maven的依赖

为了能让JSP能正常运行,我们后续能够引入Java代码使用,我们需要修改Maven的pom.xml文件引入相关依赖:

<dependencies>
        <!--引入servlet相关依赖,https://repo.maven.apache.org/maven2/javax/servlet/servlet-api/-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
            <scope>provided</scope>
        </dependency>
        <!--引入jsp相关依赖,https://repo.maven.apache.org/maven2/javax/servlet/jsp/jsp-api/-->
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>javax.servlet.jsp-api</artifactId>
            <version>2.2.1</version>
            <scope>provided</scope>
        </dependency>
        <!--引入junit测试引擎相关依赖-->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

如果没有引用,很有可能报如下错误:

编辑项目并启动

查看和编辑下JSP和Servlet文件,启动查看显示。

编辑JSP&Servlet文件

首先我们看到有个入口的index.jsp程序,这个文件是我们的首页文件,在首页文件我们能调整页面显示的文字等:

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
    <title>JSP - Hello World</title>
</head>
<body>
<h1><%= "Hello World!" %>
</h1>
<br/>
<a href="hello-servlet">我的第一个JavaWeb项目</a>
</body>
</html>

然后我们可以看到一个默认的Servlet文件,可以看到接收的是一个Get请求

package com.example.FirstJavaWeb;
import java.io.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
@WebServlet(name = "helloServlet", value = "/hello-servlet")
public class HelloServlet extends HttpServlet {
    private String message;
    public void init() {
        message = "Hello World!";
    }
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
        response.setContentType("text/html");
        // Hello
        PrintWriter out = response.getWriter();
        out.println("<html><body>");
        out.println("<h1>" + message + "</h1>");
        out.println("</body></html>");
    }
    public void destroy() {
    }
}

关于JSP和Servlet,之后的文章里详细介绍,这里有个概念即可。

启动服务器并在浏览器查看

然后我们启动服务器,访问我们的URL路径来查看启动的JSP:

总结一下

这是我这几天实践的一点感悟,工具更新了,时代变了,最好的方式就是拥抱变化,不要再停留在MyEclipse时代,不要再停留在固有的历史的web结构和古早的实现方式,技术变化太快了,idea真是yyds,可以让我们专注业务开发,组件全部集成,看来还是要不断学习才能赶上技术的变化,至于为什么还是用tomcat8和JDK8,是因为生产环境目前还是jdk8,tomcat8也比较适配,真的要快速追赶式学习,在迎接最新的框架和技术时又要做好原理的沉淀,凡事多问几个为什么。

相关文章
|
12天前
|
Java 应用服务中间件 Maven
在IntelliJ IDEA中如何配置使用Maven以创建Tomcat环境
所以,别担心这些工具看起来有些吓人,实际上这些都是为了帮助你更好的完成工作的工具,就像超市里的各种烹饪工具一样,尽管它们看起来可能很复杂,但只要你学会用,它们会为你烹饪出一道道美妙的食物。这就是学习新技能的乐趣,让我们一起享受这个过程,攀登知识的高峰!
77 27
|
8天前
|
Java 应用服务中间件 Apache
在IntelliJ IDEA中使用Maven配置Tomcat环境
此配置方法具有较高的实用性,简单易懂。遵循以上步骤,您将能顺利在IntelliJ IDEA中使用Maven配置Tomcat环境,从而进行Web项目的开发和调试。
67 18
|
2月前
|
Java 应用服务中间件 API
Servlet开发流程 (里面有Idea项目添加Tomcat依赖详细教程)
本文详细介绍了Servlet的开发流程,包括在IntelliJ IDEA中添加Tomcat依赖的详细教程。通过上述步骤,开发者可以快速搭建并运行一个基本的Servlet应用,理解并掌握Servlet的开发流程对于Java Web开发至关重要。希望本文能够帮助开发者顺利进行Servlet开发,提高工作效率。
253 78
|
15天前
|
人工智能 安全 程序员
用 Colab 和 ngrok 免费部署你的 Web UI 项目,随时随地访问!
用 Colab 和 ngrok 免费部署你的 Web UI 项目,随时随地访问!
|
3月前
|
Java Maven
Idea配置项目的热启动
Idea配置项目的热启动
180 5
Idea配置项目的热启动
|
3月前
|
网络协议 Java Shell
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
159 7
|
3月前
|
安全 Linux 开发工具
零基础构建开源项目OpenIM桌面应用和pc web- Electron篇
OpenIM 为开发者提供开源即时通讯 SDK,作为 Twilio、Sendbird 等云服务的替代方案。借助 OpenIM,开发者可以构建安全可靠的即时通讯应用,如 WeChat、Zoom、Slack 等。 本仓库基于开源版 OpenIM SDK 开发,提供了一款基于 Electron 的即时通讯应用。您可以使用此应用程序作为 OpenIM SDK 的参考实现。本项目同时引用了 @openim/electron-client-sdk 和 @openim/wasm-client-sdk,分别为 Electron 版本和 Web 版本的 SDK,可以同时构建 PC Web 程序和桌面应用(Wi
197 2
|
2月前
|
关系型数据库 MySQL 数据库
基于Flink CDC 开发,支持Web-UI的实时KingBase 连接器,三大模式无缝切换,效率翻倍!
TIS 是一款基于Web-UI的开源大数据集成工具,通过与人大金仓Kingbase的深度整合,提供高效、灵活的实时数据集成方案。它支持增量数据监听和实时写入,兼容MySQL、PostgreSQL和Oracle模式,无需编写复杂脚本,操作简单直观,特别适合非专业开发人员使用。TIS率先实现了Kingbase CDC连接器的整合,成为业界首个开箱即用的Kingbase CDC数据同步解决方案,助力企业数字化转型。
371 5
基于Flink CDC 开发,支持Web-UI的实时KingBase 连接器,三大模式无缝切换,效率翻倍!
|
7月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
416 3
|
2月前
|
机器学习/深度学习 开发框架 API
Python 高级编程与实战:深入理解 Web 开发与 API 设计
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化、调试技巧以及数据科学和机器学习。本文将深入探讨 Python 在 Web 开发和 API 设计中的应用,并通过实战项目帮助你掌握这些技术。

热门文章

最新文章