【问题标题】:Simple Tomcat/ Servlets - Getting HTTP Status 404简单的 Tomcat/Servlet - 获取 HTTP 状态 404
【发布时间】:2014-06-09 14:34:04
【问题描述】:

我按照此页面的教程进行操作。http://www.coreservlets.com/Apache-Tomcat-Tutorial/tomcat-7-with-eclipse.html 并下载了 test-app zip 文件。该文件运行良好。但是,当我尝试创建一个简单的 helloworld Servlet 时,它会出现 404 错误。我也在论坛上看到过相关的问题,但似乎没有一个能解决这个问题。我正在使用 tomcat7 和 java6 ee。 我能够添加链接并访问静态网页纯 HTML 页面,但是当我尝试访问 servlet 时得到 404。 这是我的 servlet 代码。

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

public class LoginServlet1 extends HttpServlet {
  public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
      throws ServletException, IOException {


    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    out.println
      ("<!DOCTYPE html>\n" +
       "<html>\n" +
       "<head><title>A Test Servlet</title></head>\n" +
       "<body bgcolor=\"#fdf5e6\">\n" +
       "<h1>Test</h1>\n" +
       "<p>Simple servlet for testing.</p>\n" +
       "</body></html>");
  }


}

这是我的 index.html

    <!DOCTYPE html>
<html>
<head><title>Test Web App for Tomcat 7 or Other Servlet 3.0 Container</title>
<link rel="stylesheet"
      href="./css/styles.css"
      type="text/css"/>
</head>
<body>
<table class="title">
  <tr><th>Test Web App for Tomcat 7</th></tr>
</table>
<p/>
<fieldset>
<ul>
  <li><a href="LoginServlet1">hello</a> The HelloWorld servlet that
      generates plain text.</li>
</ul>
</fieldset>
<p/>
</body></html>

这是启动期间的控制台日志。

Jun 08, 2014 11:00:55 PM org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/packages/lib/amd64:/usr/lib/x86_64-linux-gnu/jni:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib/jni:/lib:/usr/lib
Jun 08, 2014 11:00:55 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:test-app' did not find a matching property.
Jun 08, 2014 11:00:55 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
Jun 08, 2014 11:00:55 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
Jun 08, 2014 11:00:55 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 989 ms
Jun 08, 2014 11:00:55 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Jun 08, 2014 11:00:55 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.47
Jun 08, 2014 11:00:56 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /home/karan/tomcat eclipse/webapps/SensorWebApplication4
Jun 08, 2014 11:00:58 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /home/karan/tomcat eclipse/webapps/examples
Jun 08, 2014 11:00:58 PM org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextInitialized()
Jun 08, 2014 11:00:58 PM org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextInitialized()
Jun 08, 2014 11:00:58 PM org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: attributeAdded('org.apache.jasper.compiler.TldLocationsCache', 'org.apache.jasper.compiler.TldLocationsCache@6c814dbd')
Jun 08, 2014 11:00:58 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /home/karan/tomcat eclipse/webapps/SensorWebApplication1
Jun 08, 2014 11:01:00 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /home/karan/tomcat eclipse/webapps/SensorWebApplication9
Jun 08, 2014 11:01:01 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /home/karan/tomcat eclipse/webapps/ROOT
Jun 08, 2014 11:01:01 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /home/karan/tomcat eclipse/webapps/host-manager
Jun 08, 2014 11:01:01 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /home/karan/tomcat eclipse/webapps/manager
Jun 08, 2014 11:01:01 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
Jun 08, 2014 11:01:01 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Jun 08, 2014 11:01:01 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 6144 ms

【问题讨论】:

  • 它给出 404 在哪里?应用部署成功了吗?
  • yes 部署成功。当我尝试导航到页面 localhost:8080/test-app/LoginServlet1 时出现错误
  • tomcat statup 是否有错误?
  • 上下文路径的名称是什么?在 tomcat 中,它由战争名称表示。应该是test-app
  • @Dennis 我在安装过程中收到警告,这可能是问题的一部分吗?

标签: java eclipse tomcat servlets


【解决方案1】:

好吧,这里一切似乎都很好。尝试删除服务器并创建一个新的...并运行该项目。 Tomcat 有时确实表现得很奇怪。

【讨论】:

  • 我假设您在 Eclipse 中运行您的服务器,对吧?所以当我说删除服务器时,我的意思是删除服务器实例。
  • 好吧,现在一切看起来都很好,你必须尝试一些疯狂的东西。首先试试这个,把 href="/LoginServlet" 代替 href="LoginServlet"。其次,添加一个 web.xml,是的,我知道您正在遵循 Servlet 3.0 规范,因此不需要 web.xml,但仍然添加一个 servlet 映射,看看会发生什么。请试试这个,不要忽略它,相信我这样的东西以前对我有用。
  • 谢谢您的回复。我重新安装了 eclipse 和 tomcat 并且它工作了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-09
  • 1970-01-01
  • 2017-01-04
  • 2018-11-09
  • 2016-01-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多