【问题标题】:The requested resource is not available in Tomcat 8.0.2 [duplicate]请求的资源在 Tomcat 8.0.2 中不可用 [重复]
【发布时间】:2015-06-19 16:00:56
【问题描述】:

wel.html 文件

<html>
<head><title>Welcome Page</title></head>
<body>
Welcome HTML Page
<form action="Welcome" method="post">
<input type="submit" value="submit"/>
</form>
</body>
</html>

web.xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app>
<servlet>
<servlet-name>S1</servlet-name>
<servlet-class>Welcome</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>S1</servlet-name>
<url-pattern>/Welcome</url-pattern>
</servlet-mapping>
</web-app>

Welcome.java Servlet 文件

import java.io.*;
import javax.servlet.*;

public class Welcome implements Servlet
{
ServletConfig config;

public void init(javax.servlet.ServletConfig config) throws javax.servlet.ServletException
{
System.out.println("...init...");
this.config=config;
}

public javax.servlet.ServletConfig getServletConfig() 
{
System.out.println("...getServletConfig...");
return config;
}

public void service(javax.servlet.ServletRequest req,javax.servlet.ServletResponse res) throws javax.servlet.ServletException,java.io.IOException
{
System.out.println("...service...");
res.setContentType("text/html");
PrintWriter out=res.getWriter();
out.println("<html>");
out.println("<body>");
out.println("<h1>Welcome</h1>");
out.println("</body>");
out.println("</html>");
}

public java.lang.String getServletInfo()
{

System.out.println("...getServletInfo...");
return "";
}

public void destroy()
{
System.out.println("...destroy...");
}

}

目录结构 C:\apache-tomcat-8.0.22\webapps\MyApp\WEB-INF\classes

WEB-INF 中的 web.xml

classes文件夹中编译的java类

MyApp 文件夹中的 wel.html

当我部署项目时,它可以正常运行 wel.html。但是单击提交按钮后,会显示以下错误页面

HTTP 状态 404 - /MyApp/Welcome

输入状态报告

消息/MyApp/欢迎

说明请求的资源不可用。

Apache Tomcat/8.0.22

我不知道是什么导致了这个问题。请帮助我。 提前致谢。

【问题讨论】:

    标签: java apache servlets tomcat8


    【解决方案1】:

    我还复制并粘贴到 Netbeans 中的一个新 WebApp 项目,一切正常。确保您没有输入错误:

    • 你有没有 web.xml,例如web.xml.xml 文件?
    • WEB-INF\classes 文件夹中有 Welcome.class 文件吗?

    除此之外,您不会始终如一地使用您的导入。当您在开头调用import 时,只需一遍又一遍地使用ServletConfig config 而不是javax.servlet.ServletConfig config。

    【讨论】:

      【解决方案2】:

      使用从您的帖子中复制和粘贴的代码,Tomcat 8.0.23 和 Oracle JDK 1.8.0_45 对我来说似乎工作得很好。猜测你的问题可能是你的类没有被部署,或者它不是默认包。尝试将其添加到包中并修改您的 servlet 映射以反映合格的类名。

      【讨论】:

      • 我没有将java代码放在任何包中。请您详细说明一下默认包。谢谢
      • 您是否使用某些 IDE 来开发这个? Eclipse 还是 Netbeans?将类放在包中被认为是一种最佳实践,这样可以将它们添加到 WEB-INF/classes 文件夹下的子文件夹中。我将 Welcome.class 放在 WEB-INF/classes 文件夹中,并使用了相同的 web.xml 和 wel.html 并且它起作用了,所以一种猜测可能是您的类文件实际上正在部署到其他地方,或者根本没有部署。
      • 我没有使用任何 IDE。我已将 Welcome.class 放在 WEB-INF/classes 文件夹中。classes 文件夹中没有其他子文件夹
      • 您可以再试一次该操作,然后发布应该在 C:\apache-tomcat-8.0.22\logs 中的日志文件吗?可能命名为 catalina.out。听起来您可能缺少依赖项......
      • 2015 年 6 月 19 日 23:28:45.901 信息 [http-apr-3010-exec-98] org.apache.catalina.core.StandardContext.reload 使用名称 [/MyApp] 重新加载上下文开始于 2015 年 6 月 19 日 23:28:46.253 信息 [http-apr-3010-exec-98] org.apache.catalina.core.StandardContext.reload 重新加载名称为 [/MyApp] 的上下文已完成
      猜你喜欢
      • 2023-03-26
      • 1970-01-01
      • 2015-12-09
      • 2015-03-09
      • 1970-01-01
      • 1970-01-01
      • 2017-01-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多