有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Tomcat在servlet中给出404错误

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

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

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

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

新更新

我购买主机的地方给了我上传文件的机会。tomcat中没有上传war文件的地方,也没有上传文件到webapps控制器的地方。所以我把文件上传到了public_html目录。我认为这可能就是问题所在。因为当我试图访问像www.mysite.com/A这样的servlet时,服务器会在root目录中搜索它。但事实上它并不存在。所以它给出了404错误

我觉得这可能就是问题所在。有什么建议吗

更新

注释如下所示

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

DropBox下载Servlet

目录结构

img


共 (1) 个答案

  1. # 1 楼答案

    注释不能“开箱即用”,您仍然需要tellTomcat来查找带注释的Servlet类。要做到这一点,您需要使用正确版本的^{

    <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一样,它可能有项目属性,允许您将动态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应用程序