我试图使我的第一个servlet在tomcat 7.0的eclipse中为j2ee运行,但是我无法弄清楚我做错了什么。我这样运行整个项目:右键单击我的项目->运行方式->在服务器上运行,index.html文件在浏览器中显示给我,但是当我单击“继续”时,它向我显示此消息:
HTTP状态404-/ PDPJ_L5 / hello-请求的资源(/ PDPJ_L5 / hello)不可用。
我怀疑问题出在表单标签的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>
我找到了解决我问题的方法。
我使用jar命令构建了一个战争存档,并将其放入tomcat的webapps文件夹中,并且它以这种方式工作。
剩下的唯一问题是,它不能在服务器上运行时在eclipse下运行,但可以正常运行。
谢谢你的帮助。