我有一个使用JSF(使用RichFaces 3.3)以JAVA编写的企业应用程序。目前我的URL看起来像这样:JSF中的掩码URL
http://localhost/WebApplication/faces/folder1/page.jsp
问题是我怎么掩饰我的网址,使之像这样:
http://localhost/folder1/page.jps
基本上我想隐藏“应用/ faces /“
谢谢
我有一个使用JSF(使用RichFaces 3.3)以JAVA编写的企业应用程序。目前我的URL看起来像这样:JSF中的掩码URL
http://localhost/WebApplication/faces/folder1/page.jsp
问题是我怎么掩饰我的网址,使之像这样:
http://localhost/folder1/page.jps
基本上我想隐藏“应用/ faces /“
谢谢
要在应用程序中重写URL,可以使用UrlRewrite。然而,在这种情况下,它看起来像你想删除您的Web应用程序的上下文路径,在这种情况下,你有两个选择:
/
(如何为特定应用服务器)Apache的配置:
<Proxy http://localhost:8080/*>
Order Allow,Deny
Allow From All
</Proxy>
ProxyPreserveHost On
ProxyPass/http://localhost:8080/WebApplication/
ProxyPassReverse/http://localhost:8080/WebApplication/
注意,/面/是由于在web.xml
的映射。这是JSF的标准映射,但您也可以使用扩展映射 - 即URL末尾的.faces
。
例如,在应用程序我这里,这是在web.xml文件:
<servlet-mapping>
<servlet-name>Persistent Faces Servlet</servlet-name>
<url-pattern>*.faces</url-pattern>
</servlet-mapping>
这是使用ICEfaces的,但它会随着RichFaces的你相似。你的可能看起来像这样:<url-pattern>/faces/*</url-pattern>
。如果你改变它具有*.faces
如上述,您的最终网址看起来会像这样:
http://localhost/WebApplication/folder1/page.faces
如果您使用的是与答案相结合,彼得希尔顿给有关部署为根Web应用程序,您的最终URL会是这个样子:
http://localhost/folder1/page.faces
这几乎正是你想要的。
PrettyFaces让你重写你的网址。 如果您更喜欢更轻量级的东西,请扩展NavigationHandler并覆盖 handleNavigation,例如通过调用context.getExternalContext()。redirect()
是的。我们设计PrettyFaces正是来处理这种情况:
PrettyFaces – SEO, Dynamic Parameters, Bookmarks, and Navigation for JSF/JSF2
您还可以从脸上更改文件夹名称,以在jsp例如像这样:
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/jsp/*</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>jsp/index.jsp</welcome-file>
</welcome-file-list>
然后你的URL将是这样的:
http://localhost/WebApplication/jsp/folder1/page.jsp
如果将应用程序部署到应用程序服务器的上下文路径中,它将如下所示:
http://localhost/jsp/folder1/page.jsp
这将是现在很难找出你使用JSF的是lamers ;-)但黑客可以通过自己的浏览器指向这样http://localhost/folder1/page.jsp
+1的UrlRewrite链接的URL进行调查。我一直在寻找那样的东西! – 2009-11-19 15:52:00