

统一声明:
1.本站联系方式QQ:709466365 TG:@UXWNET 官方TG频道:@UXW_NET 如果有其他人通过本站链接联系您导致被骗,本站一律不负责! 2.需要付费搭建请联系站长QQ:709466365 TG:@UXWNET 3.免实名域名注册购买- 游侠云域名 4.免实名国外服务器购买- 游侠网云服务
其实404的原因就藏在几个常见“陷阱”里:URL路径大小写错了、Tomcat部署没选对工程、web.xml的servlet映射漏了斜杠,甚至IDE缓存没清导致路径混乱。这篇把这些坑全扒透了——从最基础的“路径拼写检查”,到Tomcat部署的“工程上下文路径设置”,再到web.xml的“servlet-mapping配置”,每一步都给具体解决步骤,连“IDE缓存清理”这种容易忽略的小问题都没放过。
不管你是刚入门的新手(怕配置错),还是踩过坑的老开发(怕漏细节),照着这篇走,不用再瞎试乱改,5分钟就能定位问题。不用到处拼凑答案,一篇搞定Javaweb工程的404难题,赶紧往下看!
做Javaweb开发的朋友,肯定都遇过这种窒息时刻:代码写完点运行,浏览器唰地弹出HTTP Status 404——页面找不到。昨天还能正常访问的用户列表功能,今天改了行数据库配置就崩;刚搭的电商项目,第一次启动注册页面就报错,翻遍Stack Overflow找答案,要么说“检查URL路径”这种正确的废话,要么方法过时,越改越乱,最后差点把项目删了重写。
我太懂这种崩溃了——去年帮做教育系统的朋友调过一个404 bug,他折腾了3小时没搞定:本地Windows环境没问题,部署到Linux服务器就报错,最后发现是他写的URL是“/CourseDetail”,但实际文件夹叫“/coursedetail”,Linux区分大小写,Windows不区分,就这么个小细节,差点让他延迟上线。还有个刚入门的学弟,第一次用IDEA搭SSM框架,启动Tomcat后访问“/login”一直404,我一看,他的“Deployment”里选的是“war”包而不是“war exploded”,Tomcat没展开文件,当然找不到页面。
404最常见的3个“坑”,90%的人都踩过
很多人遇到404第一反应是“代码错了”,但其实80%的问题都出在配置或部署细节上——这些地方藏得深,却最容易被忽略。
URL路径是404的“重灾区”,尤其是这3个细节:
很多新手第一次用IDEA或Eclipse搭Tomcat时,都会犯这个错误:部署的Artifact类型不对。
比如你在IDEA的“Run/Debug Configurations”里,“Deployment”标签下选的是“xxx.war”(打包后的WAR文件),而不是“xxx:war exploded”(展开的目录)。WAR包是压缩文件,Tomcat需要先解压才能读取里面的JSP、Servlet和配置文件——如果选了WAR包,Tomcat没来得及解压,就会报404。
还有个容易忘的点:上下文路径(Context Path)。比如你把上下文路径设为“/myapp”,那访问时必须加这个路径,比如“http://localhost:8080/myapp/login”,如果直接访问“http://localhost:8080/login”,肯定找不到。我学弟之前就犯过这错,上下文路径设成了“/shop”,却一直访问“/login”,能不404吗?
不管是用传统的web.xml配置,还是用@WebServlet注解,url-pattern必须以斜杠开头——这是Tomcat的“死规定”。
比如你在web.xml里写:
UserServlet
user/list <!-
错误:没加斜杠 >
Tomcat会把这个“user/list”当成相对路径,而不是根路径下的资源,自然找不到对应的Servlet。正确的写法是加斜杠:“/user/list”。
还有注解的情况:如果用@WebServlet(“/user/list”),没问题;但如果写成@WebServlet(“user/list”),同样会报404——我见过好几个新手犯这个错,还问“为什么注解没用?”
排查404的“黄金步骤”,一步步帮你定位问题
遇到404别乱改代码,按这5步走,95%的问题都能快速解决:
把浏览器里的URL复制到记事本,和你代码里的路径逐字符对比——别信自己的眼睛,我就有次把“/order/query”写成“/order/quey”(少了个“r”),盯了10分钟没发现,复制出来才看到。
打开Tomcat的Manager页面(默认地址http://localhost:8080/manager,需要在tomcat-users.xml里配置账号),看看你的工程是不是在“Deployed Applications”列表里,状态是不是“running”。如果没部署,或者状态是“stopped”,点“Start”重启就行;如果根本没出现在列表里,说明你在IDE里没加对Deployment。
打开web.xml,找到对应的servlet-mapping,确认url-pattern和你访问的URL一致;如果用注解,看@WebServlet的值是不是带斜杠,比如“/login”而不是“login”。还有一种情况:如果你同时用了web.xml和注解,Tomcat会优先用web.xml的配置——比如你注解写了“/user/add”,但web.xml里又配置了“/user/save”,就会冲突,导致404。
有时候缓存会“欺骗”你:IDE的Target目录留着旧文件,Tomcat的work目录没清理,甚至浏览器缓存了旧URL。解决办法:
如果以上步骤都没用,就去看Tomcat的日志文件(一般在tomcat/logs/catalina.out)——日志会明确告诉你“找不到哪个资源”,比如“Could not find resource /login.jsp”或者“Servlet UserServlet is not available”。我之前帮朋友调过一个bug,日志里写“File not found: /WEB-INF/views/home.jsp”,他才发现自己把JSP文件放到了WEB-INF外,而WEB-INF里的文件不能直接访问,得用Servlet转发。
常见404原因&解决办法汇总表
为了帮你快速查问题,我整理了一张“急救表”,遇到404直接对照:
报错原因 | 典型场景 | 排查方法 | 解决步骤 |
---|---|---|---|
URL大小写错误 | 本地正常,部署到Linux报错 | 对比URL和实际文件路径的大小写 | 统一URL和文件路径的大小写(推荐小写) |
Tomcat部署类型错误 | IDEA启动后访问不到页面 | 检查IDE的Deployment配置 | 改成“war exploded”类型部署 |
web.xml映射漏斜杠 | 访问Servlet一直404 | 看url-pattern是否以“/”开头 | 在url-pattern前加“/”,比如“/user/list” |
IDE缓存未清理 | 改了路径后还是报错 | 查看Target目录的旧文件 | IDEA清缓存并重启,Eclipse点Project→Clean |
其实404的本质就是“服务器找不到你要的资源”——要么是你指的路径不对,要么是服务器没拿到资源。跟着上面的步骤一步步排查,基本能覆盖90%的场景。
最后想跟你说:遇到404别慌,先按“URL→部署状态→配置文件→缓存”的顺序查,比瞎改代码管用得多。我当年学Javaweb时,也被404折腾得失眠,后来 了这套方法,现在遇到404最多10分钟就能解决。如果你按这些步骤试了还是没搞定,欢迎在评论区留个言,把你的场景告诉我,我帮你一起看看—— 谁没踩过几次404的坑呢?
本文常见问题(FAQ)
URL大小写会不会导致404?
肯定会!尤其是跨系统部署的时候。比如你写的URL是“/CourseDetail”,但实际文件夹叫“/coursedetail”,Windows系统不管大小写,能正常访问,但Linux/Unix服务器会严格区分,部署上去直接报404。我去年帮朋友调教育系统的时候就遇到过——他本地Windows没问题,到Linux服务器就崩,最后发现就是大小写的锅,改一致就好了。
所以写路径尽量统一小写,或者严格跟文件/文件夹名称对应,别靠系统“包容”,不然上线必踩坑。
Tomcat部署选WAR还是WAR Exploded?
本地开发选“WAR Exploded”(展开的目录),选WAR包容易出问题!比如刚入门的学弟第一次用IDEA搭SSM框架,选了WAR包部署,Tomcat没展开文件,访问“/login”一直404。因为WAR是压缩包,Tomcat需要先解压才能读里面的页面和Servlet,而WAR Exploded是直接展开的目录,本地调试用这个更直观,不会漏文件。
要是部署到服务器,选WAR包就行,服务器会自动解压;但本地开发一定要用WAR Exploded,不然白费功夫。
web.xml里的servlet映射漏了斜杠会怎样?
漏了斜杠大概率会404!比如你在web.xml里写“user/list”而不是“/user/list”,Tomcat会把这个路径当成相对路径,不是根路径下的资源,自然找不到对应的Servlet。我见过好几个新手犯这错,还问“为什么注解没用?”——其实就是少了个斜杠,加回去就好了。
不管是web.xml还是@WebServlet注解,url-pattern都得带斜杠,比如“/user/list”才对,别偷懒哦。
IDE缓存没清为什么会导致404?
因为缓存会“留旧账”!比如你改了文件路径,但IDE的Target目录还存着旧文件,Tomcat读取的是旧路径,自然找不到新文件。我之前有次改了JSP的存放位置,没清缓存,启动后还是报404,后来发现Target里的旧文件还在,清了缓存才好。
所以改完路径一定要清缓存:IDEA点“Invalidate Caches / Restart”,Eclipse点“Project→Clean”,别嫌麻烦,不然缓存会骗你。
遇到404先检查什么最有效?
别乱改代码!按顺序来:先把浏览器的URL复制到记事本,跟代码里的路径逐字对比——我就有次把“/order/query”写成“/order/quey”,盯了10分钟没发现,复制出来才看到;然后看Tomcat的Manager页面(默认http://localhost:8080/manager),确认工程是不是“running”状态,没部署或者停了就重启;接着检查web.xml或注解的映射对不对,有没有漏斜杠;最后清缓存,IDE、Tomcat、浏览器都要清。
按这个顺序走,95%的问题都能快速定位,比瞎试管用多了。
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
8. 精力有限,不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别!
站长QQ:709466365 站长邮箱:709466365@qq.com