java Tomcat在servlet中给出404错误
我使用Tomcat 7
和Oracle JDK 1.7
与NeatBeans 7.3
开发了一个Java web应用程序。我的应用程序在本地pc上运行,没有任何错误
但是在我托管了我的应用程序之后,我无法访问servlet。它给了我404
错误。我没有在应用程序中使用web.xml
来映射servlet。我用annotation
来表达它
托管服务器使用Tomcat 7
和Open JDK 1.7
可能是什么问题?我该怎么解决这个问题
新更新
我购买主机的地方给了我上传文件的机会。tomcat中没有上传war
文件的地方,也没有上传文件到webapps
控制器的地方。所以我把文件上传到了public_html
目录。我认为这可能就是问题所在。因为当我试图访问像www.mysite.com/A
这样的servlet时,服务器会在root
目录中搜索它。但事实上它并不存在。所以它给出了404
错误
我觉得这可能就是问题所在。有什么建议吗
更新
注释如下所示
@WebServlet(name = "AddCustomer", urlPatterns = {"/AddCustomer"})
从DropBox下载Servlet
目录结构
# 1 楼答案
注释不能“开箱即用”,您仍然需要:
tell
Tomcat来查找带注释的Servlet
类。要做到这一点,您需要使用正确版本的^{我没有使用NetBeans,但像Eclipse一样,它可能有项目属性,允许您将动态Web项目方面指定为Servlet 3.0值,该值将转换为上面显示的
web.xml
行您应该检查项目的
WEB-INF
文件夹中的web.xml
或尝试正确导出它-WAR文件应该(必须?)导出包含WEB-INF/web.xml
文件更新
您可以通过在
web.xml
头中使用Servlet 3.0版本来“告诉它”。对于较早的版本,Tomcat不需要注释标记的servlet,也就是说,您必须在XML中手动列出它们至于更新后的问题——由于Apache HTTP服务器(可能是安装的)不理解WAR或JSP文件,您得到的是404,您需要将其配置为将请求转发到Tomcat,Tomcat可能位于另一个端口(默认为8080)——这被称为AJP或HTTP代理,也就是说,Apache服务器充当Tomcat的前端代理。在Stackoverflow这里有manny关于这个问题的答案。 您不会将WAR文件部署到
public_html
,因为这是部署PHP或Perl webapps的地方如果你真的安装了Tomcat,你应该向你的主机提供商查询,它在哪个端口,以及在哪里部署你的Java web应用程序