一尘不染

如何使我的第一个servlet工作?

tomcat

我试图使我的第一个servlet在tomcat
7.0的eclipse中为j2ee运行,但是我无法弄清楚我做错了什么。我这样运行整个项目:右键单击我的项目->运行方式->在服务器上运行,index.html文件在浏览器中显示给我,但是当我单击“继续”时,它向我显示此消息:

HTTP状态404-/ PDPJ_L5 / hello-请求的资源(/ PDPJ_L5 / hello)不可用。

我怀疑问题出在表单标签的action属性或Web描述符文件中。请向我解释我做错了什么以及如何修复我的项目。谢谢。

这是我的项目(PDPJ_L5)目录结构:

PDPJ_L5

  • JAX-WS Web服务
  • 部署描述符:PDPJ_L5
  • Java资源:src,其中包含带有我的Hello.java servlet的servlets包
  • JavaScript资源
  • 建立
  • META-INF
  • 带有lib文件夹的WEB-INF,我的index.html和web.xml

index.html的内容:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Some title</title>
</head>
<body>
<H1 ALIGN="CENTER">Choose your option:</H1>
<form action="http://localhost:8080/PDPJ_L5/hello" method="GET">
    <center>
        <INPUT TYPE="RADIO" NAME="group" VALUE="one">ONE<BR>
        <INPUT TYPE="RADIO" NAME="group" VALUE="two">TWO<BR><BR>
        <INPUT TYPE="SUBMIT" VALUE="Continue">
    </center>
</form>
</body>
</html>

这是Hello.java Servlet:

package servlets;

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;

/**
 * Servlet implementation class Hello
 */
public class Hello extends HttpServlet
{
    private static final long   serialVersionUID    = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public Hello()
    {
        super();
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
        response.setContentType("text/html");

        PrintWriter out = response.getWriter();
        out.println("<HEAD><TITLE>Success</HEAD><BODY>");
        out.println("<h1> It works </h1>");
        out.println("</BODY>");
        out.close();
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
        doGet(request, response);
    }

}

和web.xml文件:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-application_2_3.dtd">

<web-app>
   <servlet>
      <servlet-name>Hello</servlet-name>
      <servlet-class>servlets.Hello</servlet-class>
   </servlet>

   <servlet-mapping>
      <servlet-name>Hello</servlet-name>
      <url-pattern>/hello</url-pattern>
   </servlet-mapping>
</web-app>

阅读 246

收藏
2020-06-16

共1个答案

一尘不染

我找到了解决我问题的方法。

我使用jar命令构建了一个战争存档,并将其放入tomcat的webapps文件夹中,并且它以这种方式工作。

剩下的唯一问题是,它不能在服务器上运行时在eclipse下运行,但可以正常运行。

谢谢你的帮助。

2020-06-16