Java servlet 不起作用,url 映射问题

标签 java servlets

如果我犯了一个愚蠢的错误并问了一个愚蠢的问题,那么我深表歉意。我有一个名为 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

覆盖 HttpServletdoXXX 方法,而不是通用的 service 方法。 service 方法分派(dispatch)到相应的 doXXX 方法

关于Java servlet 不起作用,url 映射问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42064254/

相关文章:

java - 克服 super 上的重复方法静态引用

java - Servet - 为什么我会收到空​​指针异常?

java - 如何在values-v21中使用语言更改strings.xml?

java - 多次或一次 try catch

java - 带有 Jaxb 和 cxf 的枚举 "does not have a no-arg default constructor"

java - 如何获取我通过 System.out.println 发送的值?

java - 如何在 servlet 中处理多个文档打开请求

java - 如何在我的 eclipse(juno) 项目中包含依赖项类?

java - 从 Eclipse 调试 JSP

java.lang.VerifyError : Expecting a stackmap frame