IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 【Java Web编程 二】第一个Java Web项目(Idea2021+Maven3+Tomcat8+JDK8) -> 正文阅读

[Java知识库]【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,那是因为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也比较适配,真的要快速追赶式学习,在迎接最新的框架和技术时又要做好原理的沉淀,凡事多问几个为什么。

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-07-17 11:46:11  更:2021-07-17 11:46:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/7 19:38:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码