我在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>
答案 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
其中: