如果我犯了一个愚蠢的错误并问了一个愚蠢的问题,那么我深表歉意。我有一个名为 HelloWorld 的 servlet - 它是一个简单的 servlet,它实现了 Servlet 接口(interface),该接口(interface)是“1stapp”项目的一部分。其代码如下:
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 已成功编译到 WEB-INF
内的 classes
目录中。部署描述符如下:
<?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 给我加载页面消息时出现问题。谁能告诉我我做错了什么吗?
最佳答案
似乎至少存在三个问题
类在 WEB-INF/classes
中搜索,而不是在 WEB-INF
使用 HttpServlet
而不是通用 Servlet
覆盖 HttpServlet
的 doXXX
方法,而不是通用的 service
方法。 service
方法分派(dispatch)到相应的 doXXX
方法
关于Java servlet 不起作用,url 映射问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42064254/