我是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>
为什么这不运行?我的代码很好。我第一次运行这个页面时会运行,但是在我的第二个程序之后运行这个程序它没有运行,第二个程序也没有运行。
答案 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>