2014-07-08 62 views
0

这是我第一次尝试创建一个只显示text/html的Servlet程序。我创建的目录,是应该是 -无法运行我的servlet - 错误404

C:\ Java_Advanced \ DemoServlet

DemoServlet(文件夹) --Web-INF ----类(包含我的.class文件) --- -lib ---- web.xml中 --MyServlet.java(坐在并行与WEB-INF) 我使用Tomcat的apache 8.0.9 这里是我的web.xml -

<web-app> 
<servlet> 
    <servlet-name>Hi</servlet-name> 
    <servlet-class>MyServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>Hi</servlet-name> 
    <url-pattern>/run</url-pattern> 
</servlet-mapping> 
</web-app> 

我制作了战争档案(demo.war) e DemoServlet。 我启动了Tomcat Apache服务。我已经给出了一个默认的8080以外的端口号。我部署了我的demo.war成功(我假设,因为邮件确定打印在上面,应用程序/演示的运行正在变为true(我被告知真状态意味着xml文件没有问题))。

但是我仍然打开浏览器的新标签页并输入“localhost:myportnumber/demo/run”,我得到的只是HTTP状态错误404描述:请求的资源不可用。我试着用Ctrl + F5刷新,尝试了不同的浏览器,但仍然给出了相同的错误。

这里有什么问题?我搜索在互联网上,发现在这个网站的内容: http://www.ntu.edu.sg/home/ehchua/programming/howto/Tomcat_HowTo.html#TomcatDebug

(滚动一路地方说,错误404的底部) 一切都很好,直到3.D点。在我的情况下,作为xxxx提到的子目录是“demo”吧?它确实存在。所以做demo.war它旁边并行(是,它应该如何?)

C:\ Program Files文件\ Apache软件基金会\ Tomcat的8.0 \的webapps \演示

C:\ Program Files文件\ Apache的Software Foundation \ Tomcat 8.0 \ webapps \ demo.war

当我打开demo目录时,我没有得到一个WEB-INF子目录。取而代之的是一个META-INF子目录,并且还有一个MyServlet.java文件。打开META-INF文件夹有一个MANIFEST.MF文件。那是什么?所以,这是获得404的原因。即使它是我如何解决它?

回答

0

它看起来好像你的战争文件的结构是错误的。

战争文件的内部至少应该是这样的:

WEB-INF/web.xml 
WEB-INF/classes/MyServlet.class 

看着你的war文件。它只是一个zip文件。

+0

是的。我检查了战争档案。它根本不包含WEB-INF!我使用了命令 - “jar cf demo.war *。*“在命令提示符下创建war文件。*。*应该创建一个文件夹中存在的所有文件的war文件,但不知何故无法工作,但工作正常 - ”jar cf demo.war WEB-INF“。 – Anurag

0

我强烈建议使用正确的工具来构建Java EE应用程序。您可以使用Eclipse和WTP。它将创建正确的项目结构,使您可以更轻松地创建和验证描述符,并且您将能够使用该工具直接将应用程序部署到服务器。

战争文件的当前结构(很难从您的描述中知道什么是文件/文件夹嵌套)或构建战争本身必定存在问题。

+0

是的战争文件由于某种原因没有正确完成,谢谢!是的,我听说在Eclipse中制作一个servlet非常简单,我会在下次尝试! – Anurag