Java 找不到页面404 Apache Tomcat

Java 找不到页面404 Apache Tomcat,java,eclipse,apache,tomcat,servlets,Java,Eclipse,Apache,Tomcat,Servlets,我正在尝试学习使用jersey和servlet创建REST服务器。 我提到了一个例子。这是运行较早,但不再。早些时候,我习惯于导出war文件,然后使用命令行启动tomcat&它起作用了。后来,我在eclipse中添加了服务器并开始直接运行,url工作,然后突然停止工作 我几乎每次都会收到404错误,但昨天在我重新启动服务器和常德一些设置后,url再次工作。不确定我做了什么。今天我打开了eclipse,获得了404增益 我认为tomcat的设置可能有问题。我不熟悉servlet和tomcat we

我正在尝试学习使用jersey和servlet创建REST服务器。 我提到了一个例子。这是运行较早,但不再。早些时候,我习惯于导出war文件,然后使用命令行启动tomcat&它起作用了。后来,我在eclipse中添加了服务器并开始直接运行,url工作,然后突然停止工作

我几乎每次都会收到404错误,但昨天在我重新启动服务器和常德一些设置后,url再次工作。不确定我做了什么。今天我打开了eclipse,获得了404增益

我认为tomcat的设置可能有问题。我不熟悉servlet和tomcat

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
   xmlns="http://java.sun.com/xml/ns/javaee" 
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
   http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
   id="WebApp_ID" version="3.0">
   <display-name>com.aarfid.restserver</display-name>
   <servlet>
      <servlet-name>Jersey RESTful Application</servlet-name>
      <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
         <init-param>
            <param-name>jersey.config.server.provider.packages</param-name>
            <param-value>com.aarfid.restserver</param-value>
         </init-param>
      </servlet>
   <servlet-mapping>
   <servlet-name>Jersey RESTful Application</servlet-name>
      <url-pattern>/rest/*</url-pattern>
   </servlet-mapping>  
</web-app>
试试这个:

<listener>
        <listener-class>
            org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class>
    </listener>
    <servlet>
        <servlet-name>resteasy-servlet</servlet-name>
        <servlet-class>
            org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
        <init-param>
            <param-name>com.sun.jersey.config.property.packages</param-name>
            <param-value>com.aarfid.restserver</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>resteasy-servlet</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>

</web-app>

当偶数收到404时
检查你的雄猫。 -已选择端口8080 --转到安装路径或您的Tomcat --文件夹'conf'/fileserver.xml

在那里(大约第70排),你应该可以找到一些

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />

检查,上面写的是什么

  • 在Eclipse中:如何启动项目? --在项目上:“右键上下文菜单”-->以“在服务器上运行”的方式运行

实际上,您必须了解服务器上发生了什么以及它是如何工作的。 让我们把你的信息说清楚

我正在尝试学习使用jersey和servlet创建REST服务器。

不是真的,你已经有了你想要提供rest服务的服务器(你的事业中的tomcat)

Rest服务是特殊格式http请求的一般概念

当服务器接收到请求时,它会尝试查找该请求的处理程序。 所有处理程序都在web.xml或web项目描述符文件中定义。web.xml中只有一个处理程序

重要的线路是

<servlet-name>Jersey RESTful Application</servlet-name>

<url-pattern>/rest/*</url-pattern>
另一点值得一提的是,Eclipse Dynamic WebProject在默认情况下将指定与项目名称相同的WebContext,除非您明确指定另一个路径(在创建项目期间,或者您可以在项目设置中更改它)

这会将好的url更改为

good url
http://localhost:8080/WebProjectName/rest/author/34

另一个问题是缓存服务器的配置,因为eclipse为Tomcat Catalina服务器提供了单独的文件夹。在这种情况下,清理tomcat服务器(我认为右键单击服务器,应该停止服务器,选择clean)或只是删除并再次创建服务器是有帮助的。

当我从Eclipse启动一个servlet在本地主机上的tomcat上运行时,URL中包含项目名称。假设我的项目名为Foo,index.html的URL为。返回404。您是否尝试将项目名称放入URL?

启动tomcat时是否可以添加它的日志?此结构指的是maven,而原始消息中显示的结构是基本Eclipse动态Web应用程序项目。@3vge logs added&我的项目不是maven项目可能您必须检查是否为servlet-api.jarthe设置了类路径在server.xmlI中也写入了同样的内容。我删除了服务器,并尝试创建war文件并手动启动tomcat。我现在可以运行它了。但当在eclipse中再次创建服务器时-我再次得到404检查您是否使用相同的url访问rest服务?尝试将localhost替换为127.0.0.1或cpu IP地址,默认情况下Tomcat绑定到cpu上的所有可用接口。最好的做法是在server.xml config fileBTW中显式设置tomcat必须绑定的接口,如果项目的war文件部署到例如Elastic Beanstalk上的tomcat容器中,那么项目名称就不是URL的一部分。
<servlet-name>Jersey RESTful Application</servlet-name>

<url-pattern>/rest/*</url-pattern>
good url 
http://localhost:8080/rest/author/34

bad url
http://localhost:8080       not found
http://localhost:8080/author/34          not found
http://localhhost:8080/who-is-that-man      not found
good url
http://localhost:8080/WebProjectName/rest/author/34