为什么web.xml的欢迎文件位于WEB-INF中

我读过jsp里面的文件WEB-INF不能从外面访问(必须从调用Servlet)。

但是,为什么welcome-filein web.xml文件指向WEB-INF目录内的文件?因为这样可以从外部访问文件:

<welcome-file-list>  

<welcome-file>WEB-INF/page.jsp</welcome-file>

</welcome-file-list>

我正在使用Google App engine默认的Servlet容器进行测试Jetty 6

回答:

这是因为欢迎文件是通过RequestDispatcher#forward()呼叫提供的。作为证据,您看到/WEB-

INF/page.jsp出现在浏览器的地址栏中吗?没有?那么,这绝对不是直接请求。如果尝试直接请求它,则会看到404。

也可以看看:

  • RequestDispatcher.forward()与HttpServletResponse.sendRedirect()
  • Servlets Wiki页面 -包含Hello World示例,这些示例说明了现实世界中的用例forward()


具体问题 ,您似乎基本上是在滥用<welcome-file>“主页文件”。那里不是故意的。它intented到指定文件夹的文件的唯一文件名,你想就可以提供时_任_中被请求的文件夹,如//foo//foo/bar/,等。如果你指定index.jsp,那么/index.jsp/foo/index.jsp/foo/bar/index.jsp,等会被透明的由前担任了无需更改网址。

以上是 为什么web.xml的欢迎文件位于WEB-INF中 的全部内容, 来源链接: utcz.com/qa/410351.html

回到顶部