Java 请求的资源在Tomcat 8.0.2中不可用
wel.html文件Java 请求的资源在Tomcat 8.0.2中不可用,java,apache,servlets,tomcat8,Java,Apache,Servlets,Tomcat8,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>
<html>
<head><title>Welcome Page</title></head>
<body>
Welcome HTML Page
<form action="Welcome" method="post">
<input type="submit" value="submit"/>
</form>
</body>
</html>
欢迎页面
欢迎使用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>
S1
欢迎
S1
/欢迎光临
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...");
}
}
import java.io.*;
导入javax.servlet.*;
公共类欢迎实现Servlet
{
ServletConfig;
public void init(javax.servlet.ServletConfig config)抛出javax.servlet.ServletException
{
System.out.println(“…init…”);
this.config=config;
}
public javax.servlet.ServletConfig getServletConfig()
{
System.out.println(“…getServletConfig…”);
返回配置;
}
公共void服务(javax.servlet.ServletRequest-req,javax.servlet.ServletResponse-res)抛出javax.servlet.ServletException,java.io.IOException
{
System.out.println(“…服务…”);
res.setContentType(“文本/html”);
PrintWriter out=res.getWriter();
out.println(“”);
out.println(“”);
out.println(“欢迎”);
out.println(“”);
out.println(“”);
}
public java.lang.String getServletInfo()
{
System.out.println(“…getServletInfo…”);
返回“”;
}
公共空间销毁()
{
System.out.println(“…销毁…”);
}
}
目录结构
C:\apache-tomcat-8.0.22\webapps\MyApp\WEB-INF\classes
web-INF中的web.xml
类文件夹中编译的java类
MyApp文件夹中的wel.html
当我部署该项目时,它将一直运行到wel.html。但是在单击submit按钮后,将显示以下错误页面
HTTP状态404-/MyApp/Welcome
类型状态报告
message/MyApp/Welcome
说明请求的资源不可用
ApacheTomcat/8.0.22
我不知道是什么导致了这个问题。请帮助我。
提前感谢。它似乎对我、Tomcat 8.0.23和Oracle JDK 1.8.045都很好,使用了从您的帖子中复制和粘贴的代码。猜测您的问题可能是您的类没有被部署,或者它不是默认包。尝试将其添加到包中,并修改servlet映射以反映限定的类名。我还复制并粘贴到Netbeans中的新WebApp项目中,一切正常。确保没有输入错误:
- 您是否有web.xml而没有,例如web.xml.xml文件
- WEB-INF\classes文件夹中是否有Welcome.class文件
除此之外,您并没有始终如一地使用进口产品。当您在开始调用
import
时,只需反复使用ServletConfig
而不是javax.servlet.ServletConfig
。我没有将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中?可能叫卡塔琳娜,我出去了。听起来您可能缺少依赖项…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]的上下文已完成