servlet错误请求的资源()不可用

时间:2013-09-16 20:57:02

标签: java servlets

我是servlets的新手。我正在使用eclipse juno。我在运行程序时遇到了麻烦。我的代码是

package sTraining;

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

public class Servlet1 implements Servlet{
ServletConfig config=null;

public void init(ServletConfig config){
this.config=config;
System.out.println("servlet is initialized");
}

public void service(ServletRequest req,ServletResponse res)
throws IOException,ServletException{

res.setContentType("text/html");

PrintWriter out=res.getWriter();
out.print("<html><body>");
out.print("<b>hello simple servlet</b>");
out.print("</body></html>");

}
public void destroy(){System.out.println("servlet is destroyed");}
public ServletConfig getServletConfig(){return config;}
public String getServletInfo(){return "copyright 2007-1010";}

} 

我收到此错误[http:// localhost:8080 / Test / WEB-INF / classes / sTraining / Servlet1.java] [1]  虽然我在我的网站.xml文件中有这个东西

<servlet>
    <description></description>
    <display-name>Servlet1</display-name>
    <servlet-name>Servlet1</servlet-name>
    <servlet-class>servlet.Servlet1</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Servlet1</servlet-name>
    <url-pattern>/Servlet1</url-pattern>
  </servlet-mapping>

为什么这不运行?我的代码很好。我第一次运行这个页面时会运行,但是在我的第二个程序之后运行这个程序它没有运行,第二个程序也没有运行。

2 个答案:

答案 0 :(得分:4)

你为什么要访问

http://localhost:8080/Test/WEB-INF/classes/sTraining/Servlet1.java 

?你应该访问

http://localhost:8080/Test/Servlet1

阅读以上内容

[protocol or scheme] :// [host] : [port] / [context] / [servlet mapping]

另外,根据您发布的源代码。 Servlet1类位于包sTraining中。因此,web.xml应该

<servlet>
    <description></description>
    <display-name>Servlet1</display-name>
    <servlet-name>Servlet1</servlet-name>
    <servlet-class>sTraining.Servlet1</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>Servlet1</servlet-name>
    <url-pattern>/Servlet1</url-pattern>
</servlet-mapping>

Servlet容器不会在WEB-INF文件夹中为客户端请求提供任何内容。


你在做什么并不是很好的做法。您的类应该扩展HttpServlet以获得一些标准的HTTP行为。您也不应该在Java代码中编写HTML。尝试阅读我们在Stackoverflow上的教程和参考资料,here

答案 1 :(得分:1)

./Servlet1放入表单操作属性

<form action="./Servlet1">
....
</form>

并检查您的web.xml 您的包裹名称不同

    <servlet>
    <description></description>
    <display-name>Servlet1</display-name>
    <servlet-name>Servlet1</servlet-name>
    <servlet-class>sTraining.Servlet1</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Servlet1</servlet-name>
    <url-pattern>/Servlet1</url-pattern>
  </servlet-mapping>