我已经搜索了高低不同的答案/教程而没有任何快乐。问题一定是太微不足道了。
我已经安装了Tomcat 7.0.27并且正在搞乱库存示例。示例存储在webapps/examples
和server.xml
中,表示docBase
为webapps
。可以通过http://localhost:8080/examples/servlets/
访问示例的HTML索引。到现在为止还挺好。
在此页面上,将鼠标悬停在“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(不应该,但干草)没有帮助。是什么给了什么?
答案 0 :(得分:0)
不能那样工作。 Servlets!= CGI。没有扩张。
Servlet在web.xml中专门映射到其URL。它们的包名称,或WEB-INF中作为.class放置在.jar中,或位于类路径上的其他位置,与它们映射到的URL无关。
Addena,在Servlet 3.0中,可以对它们进行注释,而不是在web.xml中进行映射。这并不一定意味着编译的类可以“只是放入”。那将是一个容器功能,我不能说Tomcat是否允许这样做。