如果我犯了一个愚蠢的错误,并提出一个愚蠢的问题,那么我道歉。我有一个名为HelloWorld的servlet - 它是一个简单的servlet,它实现了作为“1stapp”项目一部分的Servlet接口。其代码如下:
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.*;
public class helloworld implements Servlet
{
private ServletConfig config;
public void init(ServletConfig config)
throws ServletException {
this.config=config;
}
public void destroy(){}
public ServletConfig getServletConfig() {
return config;
}
public String getServletInfo() {
return "this is simple hello World Servlet";
}
public void service(ServletRequest request, ServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out=response.getWriter();
out.println("<html><head>");
out.println("<title>Simple Servlet</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Hello, World</h1>");
out.println("</body></html>");
out.close();
}
}
HelloWorld servlet已成功编译到classes
内的WEB-INF
目录中。部署描述符如下:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
"http://java.sun.com/j2ee/dtds/web-app_2.2.dtd">
<web-app>
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>helloworld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
现在,当我输入localhost:8080/1stapp/hello
时,firefox会解决加载页面消息的问题。谁能说出我做错了什么?
答案 0 :(得分:1)
似乎至少有三个问题
在WEB-INF/classes
而不是WEB-INF
使用HttpServlet
代替通用Servlet
覆盖doXXX
的{{1}}方法,而不是通用HttpServlet
方法。 service
方法将调度到相应的service
方法
答案 1 :(得分:0)
这不是在web.xml
首先,您必须在web.xml中声明您的Servlet,如下所示
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>HelloWorld</servlet-class>
</servlet>
然后将您的网址格式映射到Servlet
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
你最好扩展HttpServlet而不是Servlet。 HttpServlet是使用HTTP协议的便捷类。
如下所示更改您的Servlet类。
public class HelloWorld extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html><head>");
out.println("<title>Simple Servlet</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Hello, World</h1>");
out.println("</body></html>");
out.close();
}
}
此外,您的Servlet类名称应为HelloWorld而不是helloWorld。