Tomcat给servlet带来404错误

时间:2013-10-04 04:49:42

标签: java tomcat servlets http-status-code-404 openjdk

我使用Tomcat 7开发了一个Java Web应用程序,Oracle JDK 1.7开发了NeatBeans 7.3。我的应用程序在我的本地电脑上运行,没有任何错误。

但在我托管我的应用程序之后,我无法访问servlet。它给了我404错误。我没有在我的应用程序中使用web.xml来映射servlet。我使用了annotation

托管服务器使用Tomcat 7Open JDK 1.7

可能是什么问题?我该如何解决这个问题?

新更新

我购买托管的地方让我cPanel上传文件。没有地方可以上传war文件或将文件上传到tomcat中的webapps导演。所以我将文件上传到public_html目录。我认为这可能是个问题。因为当我试图访问像www.mysite.com/A这样的servlet时,服务器会在root directoy中搜索它。但实际上它并不存在。所以它会给出404错误。

我认为这可能是个问题。有什么建议吗?

已更新

注释如下所示

@WebServlet(name = "AddCustomer", urlPatterns = {"/AddCustomer"})

DropBox下载Servlet。

目录结构。

img

3 个答案:

答案 0 :(得分:1)

将项目部署到tomcat后,如果类存在于该位置,请检入“tomcat7 \ work \ Catalina \ localhost \ your app”。如果那里的课程那么它应该不是问题。

答案 1 :(得分:0)

检查以下内容:

  • 是tomcat / webapps
  • 下面的应用程序
  • 你能从tomcat经理看到吗
  • 日志中的任何错误

最后可能会发布你weblog的一部分以及你正在调用的网址

修改

所以这是你的代码树,但已经部署到你的tomcat webapp目录中了什么?您的编译类是否在WEB-INF下?

修改 您是否收到有关在public_html中托管的webapp的新信息?我建议您联系您托管服务器提供商的资源,以了解如何正确部署 - 可能甚至不可能。

您可以尝试从亚马逊进行为期一年的EC2试用

答案 2 :(得分:0)

注释不能“开箱即用”,您仍需要tell Tomcat来查找带注释的Servlet类。要做到这一点,您需要使用web.xml的正确版本:

<web-app xmlns="http://java.sun.com/xml/ns/javaee"  
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"  
  version="3.0">

我没有使用NetBeans,但是像Eclipse一样,它可能具有项目属性,可以让您将Dynamic Web Project构面指定为 Servlet 3.0 值,该值将转换为上面显示的web.xml

您应该检查项目的WEB-INF web.xml文件夹或尝试正确导出 - WAR文件应该(必须?)包含WEB-INF/web.xml文件。

更新

通过web.xml标题中的Servlet 3.0版本“告诉它”。对于早期版本,Tomcat不会期望注释标记的servlet,即您必须在XML中手动列出它们。

至于更新的问题 - 你得到404,因为Apache HTTP Server(可能是安装的)不了解WAR或JSP文件,你需要配置它以将请求转发给Tomcat,这可能是在另一个端口上(默认为8080) - 这称为 AJP或HTTP代理,即Apache服务器充当Tomcat的前端代理。 Stackoverflow上有关于该主题的manny答案。 您没有将WAR文件部署到public_html,因为这是部署PHP或Perl Web应用程序的地方。

如果您确实安装了Tomcat,请在哪个端口以及Java Web应用程序的部署位置与您的托管服务提供商联系。