当前位置: 首页 > news >正文

关于idea-Java-servlet-Tomcat-Web开发中出现404NOT FOUND问题的解决

在做web项目时,第一次使用servlet开发链接前端和后端的操作,果不其然,遇到了诸多问题,而遇到最多的就是运行项目打开页面时出现404NOT FOUND的情况。因为这个问题我也是鼓捣了好久,上网查了许多资料才最终解决,因此在这里做一个总结,也方便后面的小伙伴能快速解决问题

1. 点击添/登录加按钮后报404

1.1 问题发现

首先是当刚开始运行项目时能正常找到所写的前端页面,但当点击登录/提交后出现404NotFound,且后台获取不到输入的信息,如下:

我遇到了两种情况 按顺序分别为情况一和情况二:

1.2 原因分析

首先先要知道404报错的意思:

简而言之,404报错就是找不到对应资源,这可能是由多方面引起的,一下我总结了两个个常见的会引起404报错的情况。

  1. tomcat没有配置或配置上出问题
  2. 映射关系中表单action和url-pattern不对应

1.3 解决方法

1.3.1 情况1

首先,一开始时我认为只要将tomcat中所需要的servlet开发包加到项目的依赖(dependence)中就算是在项目中配置完了tomcat但其实这还远远不够或者说更本就没有配置tomcat。因此接下来介绍一下tomcat在项目中的配置,在介绍时就把所有细节都说了,所以在检查时可以一步一步的去检查,看是不是哪里遗漏了

首先找到idea中的 file->project structure->artifacts (不同版本可能寻找的方法不一样,如果实在找不到可以到可以去Help->Find Action 让后输入要找的内容名称即可直接跳转到指定页面)

当找到后要,部署artifacts中的内容,点击±>Web Appleication Exploded->From Modules:

然后我们部署tomcat找到Edit Configurations(找不到也可以用上面方法搜索)

点击+找到Tomcat Serve—>Local

双击后来到这个页面,我们可以看到页面下方又报错提示,我们可以直接点击Fix来解决。或者点击Deployment

点击Artifact… (注!!如果你之前已经在tomcat部署了artifact,但是部署完后,你对上面所提到的project structure中的artifact做了修改的话,tomcat中的artifact一定要删除然后重新部署,不然会出现问题)

添加完Artifact后一定要修改Application context

如果不想麻烦直接只保留一个/即可,然后点击apply就完成了配置 ,这里不改的话可能也会出现404报错。

此时再运行就不会出现问题了

1.3.2 情况2

首先我们来思考一个问题,网页发送的请求能准确发送给项目中所写的后台吗,或者说后台怎么知道使用request读取的数据就是来自我们所创建的页面,这就需要我们建设后台和网页间的一个映射关系,使他们能找到对方,而问题也往往出现在这里。最常见的问题就是form表单的action值与我们所配置的映射关系没对应上,这里我的form表单action的值时/add。

在建立映射时一定要保证action的值没有写错,特别是留意/及其容易漏掉,而且为了保险起见最好使用/而不是,虽然二者都可表示路径,但常常会与其他字符会组成转义字符而导致报错

如果你是这么建立映射的,只要看传入的参数是不是和action值一样就行

如果是这么建立映射的就要注意:

  1. url-pattern中,不论action中有无/,在url-pattern中都要加上
  2. servlet-name 起名可随意起但是上下一定要一样
  3. servlet-class名字一定要是我们创建的java类的名字,这样才能找到所写的后端

所以我们要一个个检查看是否是哪里出现了问题

2. 开始运行时报404

2.1 问题发现

有时我们可能一开时启动项目时,就会出现404报错,找不到我们所写的前端页面,这是为什么呢?

2.2 原因分析

其实这要从tomcat的默认配置去说,当我们在部署tomcat时,会发现有一个url,如果我们不修改url的话,也就是默认情况下,启动后会打开index.html!至于为什么会打开一个莫名其妙的index.html我们要从tomcat中去找答案。

找到tomcat所在路径点击conf->web.xml,打开web.xml文件

进入web.xml后,按ctrl+F查找welcome-file-list

找到后就会发现原因在这里,这里的意思就是默认情况下运行后是去访问index.html,当index.html访问不到时再去访问index.htm,当这个也访问不到时最后去访问index.jsp当这个也访问不到时就会报404错误。

3.3 解决方法

当了解原因后,这时我们可以去看看我们所写的网页名称,我这里是add.html

很显然在这个项目里没有index.html index.htm index.jsp所以会报404错误,此时解决方法又三个:

  1. 最简单粗暴的就是直接把我们的网页名称改为index.html就行

  2. 找到Edit Configurations中我们配置的tomcat,在url后面加上我们的网页名称

  3. 将在web.xml中找到的welcom-file-list中的内容复制到项目中的web.xml中并修改成我们的网页名字,注意最好不要在tomcat中的web.xml文件中修改不然下一次另一个项目中默认访问的网页就不再是index.html了,到时候你可能忘了这次的修改然后怎么也找不到哪里出问题

相关文章:

关于idea-Java-servlet-Tomcat-Web开发中出现404NOT FOUND问题的解决

在做web项目时,第一次使用servlet开发链接前端和后端的操作,果不其然,遇到了诸多问题,而遇到最多的就是运行项目打开页面时出现404NOT FOUND的情况。因为这个问题我也是鼓捣了好久,上网查了许多资料才最终解决&#xf…...

SCRM私域流量管理工具助力企业微信电商转型升级

内容概要 在当今数字化时代,SCRM(社交客户关系管理)私域流量管理工具正逐渐成为企业转型的重要助力。尤其是在电商领域,企业微信的兴起为许多公司打开了新的销售渠道,通过SCRM系统的高效整合,企业能够更加…...

三相异步电动机为什么能够旋转?

三相异步电动机,作为一种广泛应用于工业、农业及其他领域的电动机,其工作原理的理解对于工程技术人员以及相关从业者来说至关重要。 一、三相异步电动机的基本结构 三相异步电动机主要由定子、转子和机壳组成。定子是电动机的静止部分,包含…...

优化移动端H5:常见问题与解决方案

移动端H5开发中的“坑”与解决方案 本文介绍了开发中遇到的几个关于移动端H5开发中的小问题,以及解决的方法。 一、iOS滑动不流畅问题 在iOS设备上,H5页面的滑动效果有时会出现不流畅的情况,特别是在页面高度超过一屏时。这通常是由于iOS的…...

TM1不藏私系列——#10. TM1快速运算的秘密武器-Feeder

与其他BI产品对比,TM1的快速运算能力一骑绝尘。 但是在多维度的数据组合下,TM1是依据什么进行运算的呢? 今天将和大家一同了解TM1快速运算的秘密武器-Feeder。 上期我们提到通过配置维度中的元素权重,可以在合并层级加总计算。除…...

【Python】【Conda 】Conda vs venv:Python开发者的虚拟环境选择指南

目录 引言一、概述1.1 Conda 虚拟环境1.2 Python venv 虚拟环境 二、安装与设置2.1 安装 Conda 虚拟环境2.2 安装 Python venv 虚拟环境 三、依赖管理3.1 Conda 依赖管理3.2 Python venv 依赖管理 四、适用场景五、性能与资源占用5.1 Conda 性能与资源占用5.2 Python venv 性能…...

【从0学英语】06.时态 - 一般过去时

一般过去时(Past Simple Tense)是表达过去发生的动作、状态或事实的核心时态。这一时态都扮演着不可或缺的角色,本篇文章将全面讲解一般过去时的定义、结构、用法以及常见的动词变化,通过例句和详细的解释帮你理解这一时态。 文章…...

获取cpu序列号-python实现

DataBall 助力快速掌握数据集的信息和使用方式,会员享有 百种数据集,持续增加中。 需要更多数据资源和技术解决方案,知识星球: “DataBall - X 数据球(free)” -------------------------------------------------------------…...

文献分享: PLAID——为ColBERT架构设计的后期交互驱动器

👉前情提要: 神经网络自然语言模型概述 Transformer \text{Transformer} Transformer与注意力机制概述 📚相关论文: BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding \text{BERT: Pre-train…...

IMX6ULL开发板、PC机上的USB网卡、VMware中的Ubuntu的桥接网卡三者互Ping设置及设置

连上PC机上的USB网卡配置 首先打开Windows设备管理器,截图记录下当前的网络适配器,作为插上USB网卡后的对比: 然后打开“更改适配器选项”,也截张图,作为插上USB网卡后的对比: 插上USB网口&#xff0…...

孚盟云 MailAjax.ashx SQL漏洞复现

0x01 产品描述: ‌孚盟云‌是由...

前端 mp4 视频改成 m3u8 流模式

前端 mp4 视频改成 m3u8 流模式 mp4 视频的问题 1、mp4 视频通常对应一个文件,播放时需要加载全部文件,消耗网络资源。如果用户从中间某个时间访问,也会从头开始下载,浪费服务器性能。 2、mp4 视频文件容易被用户下载到本地。有…...

聚焦港口智能接处警,开启平安海运之门

一、概述 港口作为海运的关键枢纽,安全保障至关重要。港口智能接处警系统凭借智能化、数字化、信息化手段,融合 AI 与大数据等前沿技术,旨在实现对港口各类警情的快速、精准处理,有效提升港口应急响应能力,开启平安海…...

`yarn list --pattern element-ui` 是一个 Yarn 命令,用于列出项目中符合指定模式(`element-ui`)的依赖包信息

文章目录 命令解析:功能说明:示例输出:使用场景: yarn list --pattern element-ui 是一个 Yarn 命令,用于列出项目中符合指定模式( element-ui)的依赖包信息。 命令解析: yarn list…...

ElementEye,网页分析器

介绍 我们经常使用Python写爬虫,爬到网页数据之后,就需要用beautifulSoup进行解析。因为写爬虫并不是我的主营工作,大多数只是用来分析一下想要的数据而已,所以经常会忘记beautifulSoup的用法。 同时,我们总是分析页面…...

健康管理系统(Koa+Vue3)

系统界面(源码末尾获取) 系统技术 Vue3 Koa Nodejs Html Css Js ....... 系统介绍 系统比较简单,轻轻松松面对结业课堂作业.采用的是基于nodejs开发的Koa框架作为后端,采用Vue框架作为前端,完成快速开发和界面展示. 系统获取 啊啊啊宝/KoaVue3https://gitee.com/ah-ah-b…...

智创 AI 新视界 -- AI 助力金融风险管理的新策略(16 - 10)

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...

Linux内核 -- 字符设备之read write poll基本实现

Linux字符设备:read、write和poll函数实现及完整代码 1. read函数 原型 ssize_t read(struct file *file, char __user *buf, size_t count, loff_t *pos);实现步骤 检查用户缓冲区:使用copy_to_user将数据从内核空间复制到用户空间。返回已读取的字…...

腾讯微信C++面试题及参考答案

64 匹马 8 个赛道,找出前四名,最少赛多少场 为了找出64匹马中的前四名,我们可以按照以下步骤来组织比赛,尽量减少所需要的比赛次数: 初步分组: 将64匹马分成8组,每组8匹马。分别为A、B、C、D、E、F、G、H这8组。每组进行一次比赛来确定各组的速度排序。每个组比赛一次总…...

如何查看内网设备访问互联网时的出口 IP 地址?

在企业VPC中我们通常是一个机房公用一个公网IP,也就是所有的设备共用同一个出口IP。 那么如何查看如何查看内网设备访问互联网时的出口 IP 地址呢? 要查看一台 Linux 内网设备访问互联网时的出口 IP 地址,可以使用以下几种方法:…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息,对客户进行统一管理,可以把所有客户信息录入系统,进行维护和统计功能。可通过文件的方式保存相关录入数据,对…...

【笔记】WSL 中 Rust 安装与测试完整记录

#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统:Ubuntu 24.04 LTS (WSL2)架构:x86_64 (GNU/Linux)Rust 版本:rustc 1.87.0 (2025-05-09)Cargo 版本:cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...

如何更改默认 Crontab 编辑器 ?

在 Linux 领域中,crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用,用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益,允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

代码规范和架构【立芯理论一】(2025.06.08)

1、代码规范的目标 代码简洁精炼、美观,可持续性好高效率高复用,可移植性好高内聚,低耦合没有冗余规范性,代码有规可循,可以看出自己当时的思考过程特殊排版,特殊语法,特殊指令,必须…...

Ubuntu Cursor升级成v1.0

0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开,快捷键也不好用,当看到 Cursor 升级后,还是蛮高兴的 1. 下载 Cursor 下载地址:https://www.cursor.com/cn/downloads 点击下载 Linux (x64) ,…...

【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error

在前端开发中,JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作(如 Promise、async/await 等),开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝(r…...

mac:大模型系列测试

0 MAC 前几天经过学生优惠以及国补17K入手了mac studio,然后这两天亲自测试其模型行运用能力如何,是否支持微调、推理速度等能力。下面进入正文。 1 mac 与 unsloth 按照下面的进行安装以及测试,是可以跑通文章里面的代码。训练速度也是很快的。 注意…...