我已经读过jsp
内的WEB-INF
文件无法从外部访问(必须从Servlet
调用)。
但是,为什么welcome-file
文件中的web.xml
指向WEB-INF
目录中的文件?因为这样可以从外面访问文件:
<welcome-file-list>
<welcome-file>WEB-INF/page.jsp</welcome-file>
</welcome-file-list>
我正在使用Google App engine
和默认的Servlet容器Jetty 6
进行测试。
答案 0 :(得分:5)
这是因为欢迎文件由RequestDispatcher#forward()
电话提供。作为证据,您是否看到/WEB-INF/page.jsp
出现在浏览器的地址栏中?没有?然后它绝对不是直接请求。如果您尝试直接申请,您会看到自己获得404。
forward()
无关,您似乎基本上滥用<welcome-file>
来拥有“主页文件”。那里没有意图。当任何文件夹被请求时,它旨在指定您要提供的文件夹文件的唯一文件名,例如/
,/foo/
,{{1}如果您指定/foo/bar/
,那么index.jsp
,/index.jsp
,/foo/index.jsp
等将由转发服务透明地提供,而不会更改网址。