0

我没有高兴地搜索了高低的答案/教程。这一定是一个太琐碎的问题。

我已经安装了 Tomcat 7.0.27 并且正在处理库存示例。示例存储在webapps/examplesserver.xmldocBaseis webapps。示例的 HTML 索引可通过 访问http://localhost:8080/examples/servlets/。到现在为止还挺好。

在此页面上,将鼠标悬停在“Hello World”servlet 的“Execute”链接上,路径将扩展为:http://localhost:8080/examples/servlets/servlet/HelloWorldExample,这当然会成功执行。但servlet应该扩大到WEB-INF/classes. 所以我希望类的磁盘路径是webapps/examples/servlets/WEB-INF/classes/HelloWorldExample.class,但事实并非如此。实际路径是webapps/examples/WEB-INF/classes/HelloWorldExample.class。目录中唯一的内容servlets是 HTML 和图像文件。问题1:这是怎么回事?如何examples/servlets/servlet被重新路由到examples/WEB-INF/classes

问题 #2:我将一个已编译的类Foo.class放入WEB-INF/classes并尝试http://localhost:8080/examples/servlets/servlet/Foo通过http://localhost:8080/examples/servlet/Foo. 两者都产生 404 未找到。重新启动Tomcat(不应该,但干草)这没有帮助。是什么赋予了?

4

1 回答 1

0

不能那样工作。小服务程序!= CGI。没有扩展。

Servlet 在 web.xml 中专门映射到它们的 URL。它们的包名称,或在 WEB-INF 中作为 .class、.jar 或位于类路径上的其他位置的位置与它们映射到的 URL 无关。

Addena,在 Servlet 3.0 中,它们可以被注释而不是在 web.xml 中映射。这并不一定意味着编译的类可以“直接加入”。那将是一个容器功能,我不能说 Tomcat 是否允许这样做。

于 2012-04-16T17:34:26.053 回答