题
我有一个企业应用程序JAVA编写的与JSF(使用RichFaces3.3).目前我的网址看起来是这样的:
http://localhost/WebApplication/faces/folder1/page.jsp
问题是如何做我掩我的网址,使它像这样:
http://localhost/folder1/page.jps
基本上,我想要隐藏"Application/脸/"
感谢
解决方案
重写网址内的应用程序可以使用 UrlRewrite.然而,在这种情况下,它看起来像你想删除网页应用程序的上下文的道路,在这种情况下你有两个选择:
- 部署应用程序的背景下路径
/
(是如何应用程序服务器的-特定) - 运行Apache在港口的80和使用mod_proxy代理某些网址你的应用程序服务器上运行的一个不同港口,使用配置喜欢的东西如下。
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标准的映射,但是也可以使用扩展映射。 - 即.faces
在URL的结尾
例如,在一个应用程序我这里,这是在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应用程序的答案的同时,您的最终网址会是这个样子:
HTTP://localhost/folder1/page.faces
这几乎正是你想要的东西。
PrettyFaces让你重写你的URL。 如果你喜欢的东西更加轻便,延长NavigationHandler和覆盖 handleNavigation,例如通过调用context.getExternalContext()。重定向()
是的。我们设计PrettyFaces正是来处理这种情况:
您也可以从面改变文件夹的名称把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 ;-)但黑客可以通过他的浏览器指向URL这样http://localhost/folder1/page.jsp
调查此事