1

我是 servlet 的新手。我为此使用 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] 尽管我的 web .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>

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

4

2 回答 2

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在 package 中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 上的教程和参考资料,请点击此处

于 2013-09-16T20:58:13.687 回答
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>
于 2013-09-16T21:00:12.883 回答