SSH+MVC Web应用部署后出现HTTP Status 404问题求助
我来帮你捋捋这个头疼的404问题——本地跑完全正常,一部署到远程就找不到JSP,大概率是部署环节或者服务器配置的小疏漏,咱们一步步排查:
先确认远程服务器上的文件结构
登录远程服务器,找到Tomcat的webapps目录,看看你的项目是不是直接在webapps/ch21/下面?里面必须要有WEB-INF文件夹、index.jsp这些文件才行。有时候MyEclipse导出WAR包或者直接部署时,会不小心把项目嵌套一层(比如变成webapps/ch21/ch21/...),这时候访问路径就完全错了,得把多余的一层删掉。核对访问URL是否正确
你访问的地址是不是http://服务器IP:端口号/ch21/index.jsp?要注意几个点:- 远程Tomcat有没有改端口(默认是8080,如果改了就得用新端口);
- 项目部署时的上下文路径是不是
ch21?可以看远程Tomcat的启动日志,里面会有类似INFO: Deploying web application directory ch21的记录,这就说明上下文路径是ch21,访问时必须带上。
检查web.xml的配置细节
打开你的web.xml,看看有没有配置默认欢迎页?比如有没有这段代码:<welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list>要是没配的话,直接访问
http://服务器IP:端口/ch21/会找不到,但直接访问index.jsp应该能正常打开。如果连直接访问都不行,那基本还是文件结构的问题。另外,要确保web.xml没有语法错误,比如标签没闭合、属性写错,这些都会导致项目部署失败,Tomcat启动日志里会有相关报错。查看远程Tomcat的日志文件
去远程服务器的Tomcat安装目录/logs下,重点看这几个日志:catalina.out:如果项目部署失败,这里会有具体的错误信息,比如依赖缺失、类加载失败;localhost_access_log.*.txt:这里会记录你所有的访问请求,能帮你确认是不是访问路径写错了;localhost.log:里面会有JSP编译、访问相关的错误信息。
验证远程服务器的JDK版本
Tomcat 6和JDK 1.6是匹配的,但要确认远程服务器用的也是JDK 1.6。在远程服务器上执行java -version命令,看看版本是不是和本地一致,版本不匹配可能会导致项目无法正常加载。检查文件权限
远程服务器上Tomcat运行的用户,有没有访问ch21文件夹及里面文件的权限?如果权限不够,Tomcat读不到JSP文件,也会返回404。可以查看文件夹的权限设置,确保Tomcat用户有读权限。
内容的提问来源于stack exchange,提问作者L. Linda




