关于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了,到时候你可能忘了这次的修改然后怎么也找不到哪里出问题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/488294.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开发一套SDK 第一弹

自动安装依赖包 添加条件使能 #ex: filetypesh bash_ls 识别 达到预期,多个硬件环境 等待文件文件系统挂在完成 或者创建 /sys/class/ 属性文件灌入配置操作 AI 提供的 netlink 调试方法,也是目前主流调用方法,socket yyds #include <linux/module.h> #include <linux…

深入理解 Apache Shiro:安全框架全解析

亲爱的小伙伴们&#x1f618;&#xff0c;在求知的漫漫旅途中&#xff0c;若你对深度学习的奥秘、JAVA 、PYTHON与SAP 的奇妙世界&#xff0c;亦或是读研论文的撰写攻略有所探寻&#x1f9d0;&#xff0c;那不妨给我一个小小的关注吧&#x1f970;。我会精心筹备&#xff0c;在…

【PlantUML系列】流程图(四)

目录 目录 一、基础用法 1.1 开始和结束 1.2 操作步骤 1.3 条件判断 1.4 并行处理 1.5 循环 1.6 分区 1.7 泳道 一、基础用法 1.1 开始和结束 开始一般使用start关键字&#xff1b;结束一般使用stop/end关键字。基础用法包括&#xff1a; start ... stopstart ...…

Mac 录制电脑系统内的声音的具体方法?

1.第一步&#xff1a;下载BlackHole 软件 方式1&#xff1a;BlackHole官方下载地址 方式2&#xff1a; 百度云下载 提取码: n5dp 2.第二步&#xff1a;安装BlackHole 双击下载好的BlackHole安装包&#xff0c;安装默认提示安装。 3.第三步&#xff1a;在应用程序中找到音频…

Unity简单操作及使用教程

Unity 是一款强大的跨平台游戏引擎&#xff0c;它不仅支持 2D 和 3D 游戏的开发&#xff0c;还可以用于虚拟现实 (VR)、增强现实 (AR)、动画、建筑可视化等多个领域。Unity 提供了完整的开发环境&#xff0c;具有丰富的功能、工具和资源&#xff0c;可以帮助开发者快速实现创意…

一个简单带颜色的Map

越简单 越实用。越少设计&#xff0c;越易懂。 需求背景&#xff1a; 创建方法&#xff0c;声明一个hashset&#xff0c; 元素为 {“#DE3200”, “#FA8C00”, “#027B00”, “#27B600”, “#5EB600”} 。 对应的key为 key1 、key2、key3、key4、key5。 封装该方法&#xff0c…

Go快速开发框架集成Vue3漂亮的动态流程图编辑和动态流程展示插件

温馨提示&#xff1a;我们分享的文章是给需要的人&#xff0c;不需要的人请绕过&#xff0c;文明浏览&#xff0c;误恶语伤人&#xff01; 前言 为大家在开发流程相关业务时有个漂亮流程图展示&#xff0c;我们集成一个实用的流程图编辑器&#xff0c;让流程开发变得简单&…

论文阅读:Statistical Comparisons of Classifiers over Multiple Data Sets

论文地址&#xff1a;Statistical Comparisons of Classifiers over Multiple Data Sets (acm.org) 前面在机器学习之Friedman检验-CSDN博客 中提到了Friedman检验&#xff0c;这里将对这个方法的论文进行详细的阅读&#xff0c;以了解其原理。 摘要 尽管用于在单个数据集上比…

【数字信号处理】期末综合实验,离散时间信号与系统的时域分析,离散信号 Z 变换,IIR 滤波器的设计与信号滤波,用窗函数法设计 FIR 数字滤波器

关注作者了解更多 我的其他CSDN专栏 过程控制系统 工程测试技术 虚拟仪器技术 可编程控制器 工业现场总线 数字图像处理 智能控制 传感器技术 嵌入式系统 复变函数与积分变换 单片机原理 线性代数 大学物理 热工与工程流体力学 数字信号处理 光电融合集成电路…

人工智能导论学习笔记

目录 一、概要 二、人工智能基础知识 智能 人工智能 人工智能三要素 人工智能发展历程 人工智能的三次浪潮 人工智能行业发展现状 人工智能技术水平现状 人工智能技术层级 人工智能应用开发周期 机器学习的流程 一、概要 《人工智能导论(通识版)》张大斌 田恒义 许…

ZUC256 Go Go Go!!!

文章目录 背景运行效果代码 背景 因业务需要使用ZUC算法&#xff0c;GitHub上又没有对ZUC256相对应的Go语言的实现。 吃水不忘挖井人&#xff0c;在这里感谢GmSSL及BouncyCastle两个强大的密码学库&#xff01; 本ZUC256的编写&#xff0c;参考了这两个库及中科院软件院发布的…

JAVA |日常开发中连接Sqlite数据库详解

JAVA &#xff5c;日常开发中连接Sqlite数据库详解 前言一、SQLite 数据库概述1.1 定义与特点1.2 适用场景 二、Java 连接 SQLite 数据库的准备工作2.1 添加 SQLite JDBC 驱动依赖2.2 了解 JDBC 基础概念 三、建立数据库连接3.1 代码示例3.2 步骤解析 四、执行 SQL 语句4.1 创建…

Spring Cloud Alibaba:一站式微服务解决方案

一、简介 Spring Cloud Alibaba&#xff08;简称SCA&#xff09; 是一个基于 Spring Cloud 构建的开源微服务框架&#xff0c;专为解决分布式系统中的服务治理、配置管理、服务发现、消息总线等问题而设计。它集成了阿里巴巴开源的各种分布式服务技术&#xff0c;提供了一系列…

融云分享基于 Rust 的鸿蒙 SDK 开发实践

12 月 5 日&#xff0c;以“同心聚力&#xff0c;共建共享鸿蒙新生态”为主题的“鸿蒙生态伙伴 SDK 开发者论坛”在京举行。 融云凭借对鸿蒙生态的率先适配和创新贡献&#xff0c;荣获华为鸿蒙生态“HarmonyOS NEXT SDK 星河奖”。 本次论坛邀请了多位行业领导者参与&#xff…

C语言 位运算符 + 应用

常用的位运算符 按位与 快速判断整数的奇偶性 奇数的二进制表示的最低位为1&#xff0c;偶数的二进制表示的最低位为0。 int num 9; if (num & 1) {// num 是奇数 } else {// num 是偶数 }按位异或 交换两个变量的值 int a 5; int b 7; a a ^ b; b a ^ b; a a ^ …

JavaWeb学习(4)(四大域、HttpSession原理(面试)、SessionAPI、Session实现验证码功能)

目录 一、web四大域。 &#xff08;1&#xff09;基本介绍。 &#xff08;2&#xff09;RequestScope。(请求域) &#xff08;3&#xff09;SessionScope。(会话域) &#xff08;4&#xff09;ApplicationScope。(应用域) &#xff08;5&#xff09;PageScope。(页面域) 二、Ht…

C++ 菱形继承 +虚继承

菱形继承 两个派生类继承同一个基类而又有某个类同时继承者两个派生类&#xff0c;这种继承被称为菱形继承&#xff0c;或者钻石型继承。 菱形继承存在的问题 1&#xff09;羊继承了动物的数据和函数&#xff0c;鸵同样继承了动物的数据和函数&#xff0c;当草泥马调用函数或者…

LCR 103. 零钱兑换 (从dfs->记忆化搜索->动态规划)

给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额&#xff0c;返回 -1。 你可以认为每种硬币的数量是无限的。 示例 1&#xff1a; 输入&#xff1a;coins [1, 2, 5], amount …

密码学——密码学基础、散列函数与数字签名

1.密码学概述 是信息安全的基础和核心&#xff0c;是防范各种安全威胁的重要手段&#xff0c;信息安全的许多相关知识都与密码学相关。 密码学发展 密码学是一门古老而又年轻的学科 &#xff0c;几千年以前就存在&#xff0c;至今仍在发展演进。地位非常重要甚至起决定性作用…

JS API日期对象

目标&#xff1a;掌握日期对象&#xff0c;可以让网页显示日期 日期对象&#xff1a;用来表示时间的对象 作用&#xff1a;可以得到当前系统时间 实例化 目标&#xff1a;能够实现实例化日期对象 在代码中发现了new关键字时&#xff0c;一般将这个操作称为实例化 创建一个时…