我希望将所有请求映射到特定的servlet,但Tomcat不允许我映射/WEB-INF/目录。
我的web.xml文件。
<servlet>
<servlet-name>TestServlet</servlet-name>
<servlet-class>mypackage.TestServlet</servlet-name>
</servlet>
<servlet-mapping>
<servlet-name>TestServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>在您请求/WEB-INF/目录中的页面之前,这种方法工作得很好(给出的值是404)。有没有办法将所有内容都映射到servlet,包括/WEB-INF/目录?
我还尝试使用/WEB-INF/*映射servlet,但没有效果。
发布于 2013-06-21 07:53:05
不是的。不能从外部直接访问WEB-INF中的文件。
您必须在外部有一个html或jsp文件,它会将请求重定向到WEB-INF文件夹内的文件。
发布于 2013-06-21 08:27:25
根据tomcat标准,您需要将所有的*.html、*.jsp等放在应用程序根目录中。WEB-INF目录主要用于包含web.xml、类和库,而不是jsp/htmls。您不能直接导航到WEB-INF目录(对于META-INF也有效)下的任何文件/工件。
这是servlet引擎的一个安全特性: WEB-INF下的内容是受保护的,不能通过URL从“外部”访问。否则,任何人都可以通过组装适当的URL来读取敏感的细节,如应用程序/数据库配置等。
您需要遵循打包web应用程序的指导原则,请在此处阅读更多内容:
http://tomcat.apache.org/tomcat-6.0-doc/appdev/deployment.html
https://stackoverflow.com/questions/17225691
复制相似问题