无法连接到服务器(错误-404)

时间:2010-09-04 03:05:47

标签: java servlets

我在Eclipse中创建了一个示例动态Web项目,但是当我使用Tomcat 5.5运行我的项目时,我收到此错误:

  

HTTP状态404 - / greetingservlet /

     

输入状态报告
  message / greetingservlet /
  description请求的资源(/ greetingservlet /)不可用。

我的HTML / JSP源代码是:

<!DOCTYPE greeting SYSTEM "hello.dtd">
<html>
<title>Insert title here</title>
<body BGCOLOR="YELLOW">
<center>
<h1>USER NAME ENTRY SREEN</h1>
<form action="./greet">
user name<input type="text" name="t1">
<br><br>
<input type="submit" value="get message">
</form>
</center>
</body>
</html>

我的servlet源代码是:

import java.io.*;
import javax.servlet.*;

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

    public void service(ServletRequest request,ServletResponse response) throws ServletException,
    IOException
    {
        String name=request.getParameter("t1");
        response.setContentType("text");
        PrintWriter pw=response.getWriter();
        pw.println("<html>");
        pw.println("<body bgcolor=wheat>");
        pw.println("<h1>HELLO " +  name  + "  WELCOME</h1>");
        pw.println("</html>");
        pw.close();

    }



}

我的web.xml是:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app SYSTEM "Web-app.dtd">
<web-app>
<servlet>
<servlet-name>one</servlet-name>
<servlet-class>Greetingapplication</servlet-class>
</servlet>
<servlet-mapping id="ServletMapping_1283534546609">
<servlet-name>one</servlet-name>
<url-pattern>/greet</url-pattern>
</servlet-mapping>
</web-app>

2 个答案:

答案 0 :(得分:1)

servlet映射到url-pattern /greet,而不是/greetingservlet,正如您所期望的那样根据错误消息。因此,相应地更改浏览器地址栏中的URL。此外,servlet类声明为Greetingapplication,但它具有实际名称Greetingservlt。因此,您需要对齐其中一个,否则Tomcat无法定位/加载servlet。此外,无包装的servlet类曾经在某些特定的Tomcat + JVM组合上失败。为了安全起见,您希望将servlet类(与其他所有Java类一样)放在package中(不要忘记相应地更新web.xml。)

到目前为止发布的代码中存在更多问题,但它们与此特定问题无关。也许在一个新问题中。

答案 1 :(得分:1)

404 未找到 HTTP响应代码表示客户端 能够与服务器通信,但服务器找不到请求的资源。确实......

首先,根据您的web.xml,您的Servlet映射到/greet,而不是/greetingservlet。那你为什么要试图访问/greetingservlet?这是JSP的名称吗?如果是,则错过了.jsp扩展名。如果不是,那么您应该使用/greet代替。

其次,您的web.xml看起来不正确,servlet-class与您的servlet的实际名称不匹配。它应该是:

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">
  <display-name>My First Web Application</display-name>
  <servlet>
    <servlet-name>one</servlet-name>
    <servlet-class>com.acme.Greetingservlt</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>one</servlet-name>
    <url-pattern>/greet</url-pattern>
  </servlet-mapping>
</web-app>

com.acme替换为servlet的真实包(如果有的话)(!)。并重新部署整个。

提醒一下,访问servlet的URL构造如下:

http://localhost:8080/mywebapp/greet
           A       B     C       D

其中:

  • A是Tomcat运行的主机名(本地机器)
  • B是Tomcat正在侦听的端口(默认为8080)
  • C是您的webapp的上下文路径(默认情况下为战争名称)
  • D是在web.xml中声明的用于调用servlet的模式