假设我在项目中有以下文件夹结构:
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
如何调用根文件夹中的文件?难道没有这样做的解决方案吗?我是否必须在每个文件夹中放置重定向才能获得结果?
答案 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.
注意:
欢迎文件值不能以斜杠开头或结尾,它们将按照它们在部署描述符中出现的顺序被选中