带有子文件夹的web.xml welcome-file

时间:2014-04-10 11:07:08

标签: java jsf java-ee web.xml

假设我在项目中有以下文件夹结构:

webapp
|-admin
|--adminfile1.xhtml
|--adminfile2.xhtml
|-user
|--userfile1.xhtml
|--userfile2.xhtml
|login.xhtml

在我的web.xml中我对welcome-file

有这个定义
<welcome-file-list>
    <welcome-file>login.xhtml</welcome-file>
</welcome-file-list>

我希望web.xml欢迎文件始终指向index.xhtml文件,但如果我调用http://webappname/admin/,服务器会尝试调用http://webappname/admin/index.xhtml而不是http://webappname/index.xhtml

所以我尝试使用/为第一个char来搜索根文件夹。 web.xml看起来像这样:

<welcome-file-list>
    <welcome-file>/login.xhtml</welcome-file>
</welcome-file-list>

但现在它搜索http://webappname//admin//login.xhtml

如何调用根文件夹中的文件?难道没有这样做的解决方案吗?我是否必须在每个文件夹中放置重定向才能获得结果?

2 个答案:

答案 0 :(得分:0)

如果网址中只提供了一个文件夹,AFAIK正在寻找文件index.xxx(xxx是特定于容器的扩展名,xhtml是你的情况)是默认行为。如果用户没有提供应该访问应用程序的任何进一步信息,将使用欢迎文件。

因此,当http://webappname/解析为http://webappname/admin/时,admin/index.xhtml应解析为欢迎文件。

您可以使用全局重写将用户重定向到欢迎文件,方法是使用带有mod_rewrite的Apache等外部网络服务器或像Tuckey URL Rewriting library这样的内部网址重写。

顺便说一句,既然您的欢迎文件名为login.xhtml,那么当用户未登录时,该用户是否应始终被重定向?

答案 1 :(得分:-1)

您还需要在login.html目录中保留admin。因为您使用http://webappname/admin/请求管理目录。有了此请求,服务器首先尝试检查管理目录中指定的欢迎文件。
    

 This happen because "welcome-file" is internally implemented to fetch
     from the user requested directory level instead of Web application directory  level.

注意:

  

欢迎文件值不能以斜杠开头或结尾,它们将按照它们在部署描述符中出现的顺序被选中