URL“ page.jsp”起作用是因为“ page.jsp”位于Web应用程序的文档根目录中。除“ WEB-
INF”文件夹外,您容器中存储的任何文件都可以直接提供给客户端。
即 如果在网址中键入文件“ /js/myJavascirpt.js”,则将对其进行访问。同样适用于图像,比方说’/images/picture.png’。
根据WEB-INF的Servlet规范:
在应用程序层次结构中存在一个特殊目录,名为WEB-INF。此目录包含与应用程序相关的所有内容,这些内容不在应用程序的文档根目录中。 WEB-
INF节点不是应用程序的公共文档树的一部分。 容器不能将WEB-
INF目录中包含的文件直接提供给客户端。但是,使用ServletContext上的getResource和getResourceAsStream方法调用,Servlet代码可以看到WEB-
INF目录的内容,并且可以使用RequestDispatcher调用公开WEB-INF目录的内容。
根据规范,很明显,如果您不想让客户端直接访问文件,则这些文件应存储在“ WEB-INF”文件夹下。这就是Java Web应用程序中所有类和库都存储在“
WEB-INF”文件夹下的原因。
遇到问题时,只需将jsp文件放在“ WEB-INF”文件夹下。
例如:将您的jsp文件放在“ WEB-INF”文件夹下:
WEB-INF / views / jsp / page.jsp
并像这样更改您在web.xml中的条目:
<servlet> <servlet-name>Page</servlet-name> <jsp-file>/WEB-INF/views/jsp/page.jsp</jsp-file></servlet><servlet-mapping> <servlet-name>Page</servlet-name> <url-pattern>/page-url-1</url-pattern> <url-pattern>/page-url-2</url-pattern></servlet-mapping>
来源:请访问JSR-000315
Java Servlet规范的JavaTM Servlet
3.0(第10.5章)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)