步骤 2 : 正确的端口号 步骤 3 : 环境变量 步骤 4 : 确定Web应用是否成功启动 步骤 5 : webapps下的ROOT目录 步骤 6 : 访问地址的时候是否加了web应用的名称 步骤 7 : 是否访问对资源了 步骤 8 : 不能访问WEB-INF目录下的资源 步骤 9 : 访问地址后面多加了一个斜杠
404表示File Not Found, 文件不存在错误。
通过学员反映,出现比较多的问题是页面报404错误,因此除了前面的 Tomcat 问题排查 之外,又专门做了这么一个404问题排查的文章,提供问题分析的思路和对策。
出现404错误证明,TOMCAT是启动成功了的。 但是在一台计算机上,可以启动多个端口号不一样的TOMCAT, 所以请确保自己访问的是正确的那个端口号,别自己启动的是8080端口号的TOMCAT,但是访问的地址却用的是80端口(默认),这样肯定会出现404错误的。
假设有两个Tomcat A和 B,自己分明运行的是B 下的startup.bat, 但是启动的却是A,为什么会这样呢? 这就是环境变量在作祟了。
在环境变量中有两个属性:分别是CATALINA_HOME和CATALNIA_BASE,如果这个值指向的是A,那么即便运行的是B下的startup.bat, 真正启动的还会是A。 解决办法: 删除掉这个环境变量,或者使用移除了环境变量影响的纯净版 Tomcat。
虽然Tomcat启动成功了,但是对应的Web应用启动失败,依然会导致404错误。
怎么判断Web应用成功与失败呢? 倘若Web引用启动失败,那么就一定会在Tomcat的logs目录下的 localhost.当前日期.log 里留下错误信息。 打开这个文件,检查对应的Web应用是否启动过程中报错了。 也许是web.xml多写了一个标签结束,也许是对应的servlet类找不到。
有的时候,在server.xml 中配置的<context 是以“/"为开始路径的,与此同时,在webapps目录下还存在一个ROOT目录,这个ROOT目录其实也是告诉tomcat,以“/” 为开始路径,那么这样就发生冲突了,Tomcat只能二选一,通常情况下都会选择ROOT目录,那么在server.xml中配置的<context 就无法启动了,导致访问对应的资源提示404错误。
解决办法就是删除掉ROOT目录,或者把ROOT目录重命名
这个也是常犯的错误,加入部署的时候,指定了路径,比如:
<Context path="/j2ee" docBase="e:\\project\\j2ee\\web" debug="0" reloadable="false" /> 那么访问的时候,要记得加上j2ee,像这样: http://127.0.0.1:8080/j2ee/hello
。。。 这种错误也常见,你写的文件是 hello.html, 但是访问的是 holle.html,自然会提示404啦
从安全角度出发,TOMCAT不允许访问WEB-INF目录下的HTML,JSP文件。 所以如果你的资源文件放在WEB-INF下,也会提示404错误
访问地址后面多加了一个斜杠
如图,本来应该访问 http://127.0.0.1:8080/j2ee/login.html 但是却访问了地址: http://127.0.0.1:8080/j2ee/login.html/
HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。
问答区域
2021-08-24
web工程打开HTML页面后正常,但一切点击404,比如submit,超链跳转等都报404站长帮忙想想最有可能的原因是什么,谢谢啦
回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
2020-04-08
404
2020-03-24
别人电脑可以访问吗?
2020-02-24
404问题,虽然我自己更改了8080端口解决了,但是想问问各位元芳
提问太多,页面渲染太慢,为了加快渲染速度,本页最多只显示几条提问。还有 10 条以前的提问,请 点击查看
提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
|