1

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

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

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

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

新更新

我购买主机的地方让我cPanel上传文件。在tomcat中没有上传war文件的地方或上传文件到director的地方。webapps所以我将文件上传到public_html目录。我认为这可能是问题所在。因为当我尝试访问类似 servlet 时www.mysite.com/A,服务器会在目录中搜索它root。但实际上它不存在。所以它给出了404错误。

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

更新

注释如下

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

从DropBox下载 Servlet 。

目录结构。

图像

4

3 回答 3

1

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

于 2013-10-04T08:32:58.330 回答
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 facet 指定为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 服务器(可能是安装的)不理解 WAR 或 JSP 文件,你需要配置它以将请求转发到可能在另一个端口上的 Tomcat (默认为 8080) - 这称为AJP 或 HTTP 代理,即 Apache 服务器充当 Tomcat 的前端代理。Stackoverflow 上有很多关于这个主题的答案。您不会将 WAR 文件部署到,public_html因为这是部署 PHP 或 Perl webapps 的地方。

如果您确实安装了 Tomcat,您应该咨询您的托管服务提供商,它在哪个端口以及在哪里部署您的 Java Web 应用程序。

于 2013-10-04T13:09:17.613 回答
0

检查以下内容:

  • 是tomcat/webapps下面的app
  • 你能从tomcat管理器上看到吗
  • 日志中的任何错误

最后可能会发布您 web.xml 的一部分以及您正在调用的 url

编辑

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

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

您可以尝试从 Amazon 获得为期一年的 EC2 试用版

于 2013-10-04T04:54:13.113 回答