我正在尝试使用tomcat 7.0让我的第一个servlet在eclipse中运行j2ee,但我无法弄清楚我做错了什么。我像这样运行整个项目:右键单击我的项目 - >运行As->在服务器上运行,index.html文件在浏览器中显示给我,但当我点击“继续”时,它显示我这个消息:
HTTP状态404 - / PDPJ_L5 / hello - 请求的资源(/ PDPJ_L5 / hello)是 不可用。
我怀疑问题出在form标签的action属性或web描述符文件中。请解释一下我做错了什么以及如何修复我的项目。感谢。
这是我的项目(PDPJ_L5)目录结构:
PDPJ_L5
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>
答案 0 :(得分:0)
加载索引页面时,实际使用的是哪个端口?您的超链接转到8080,但我认为“在服务器上运行”正在启动一个绑定到随机端口的临时服务器。
答案 1 :(得分:0)
Tomcat日志文件说什么(或者如果您从Eclipse中运行Tomcat实例控制台)?当初始化servlet或提供请求时抛出一些异常时,通常会发生这种情况。
答案 2 :(得分:0)
假设你有正确的点击&gt;建造了这个项目。
在Eclipse工作区(在Windows资源管理器中)中,您能找到实际的类文件 - PDPJ_L5/build/classes/servlets/Hello.class
吗?它存在吗?
答案 3 :(得分:0)
我找到了解决问题的方法。
我使用jar命令构建了一个war存档,并将它放在tomcat的webapps文件夹中,并且它正在以这种方式工作。
剩下的唯一问题是它在eclipse下无法在服务器上运行,但以这种方式运行。
感谢您的帮助。