我读过jsp里面的文件WEB-INF不能从外面访问(必须从调用Servlet)。
jsp
WEB-INF
Servlet
但是,为什么welcome-filein web.xml文件指向WEB-INF目录内的文件?因为这样可以从外部访问文件:
welcome-file
web.xml
<welcome-file-list> <welcome-file>WEB-INF/page.jsp</welcome-file> </welcome-file-list>
我正在使用Google App engine默认的Servlet容器进行测试Jetty 6。
Google App engine
Jetty 6
这是因为欢迎文件是通过RequestDispatcher#forward()呼叫提供的。作为证据,您看到/WEB- INF/page.jsp出现在浏览器的地址栏中吗?没有?那么,这绝对不是直接请求。如果尝试直接请求它,则会看到404。
RequestDispatcher#forward()
/WEB- INF/page.jsp
forward()
与 具体问题 无关 ,您似乎基本上是在滥用<welcome-file>“主页文件”。那里不是故意的。它intented到指定文件夹的文件的唯一文件名,你想就可以提供时_任_中被请求的文件夹,如/,/foo/,/foo/bar/,等。如果你指定index.jsp,那么/index.jsp,/foo/index.jsp,/foo/bar/index.jsp,等会被透明的由前担任了无需更改网址。
<welcome-file>
/
/foo/
/foo/bar/
index.jsp
/index.jsp
/foo/index.jsp
/foo/bar/index.jsp