Máscara URL em JSF
-
20-08-2019 - |
Pergunta
Eu tenho um aplicativo corporativo escrito em Java com JSF (usando RichFaces 3.3). Atualmente o meu URL esta aparência:
http: //localhost/WebApplication/faces/folder1/page.jsp
A pergunta é como faço para mascarar a minha url para torná-lo parecido com isto:
http: //localhost/folder1/page.jps
Basicamente eu quero esconder "application / faces /"
Graças
Solução
Para reescrever URLs dentro de sua aplicação, você pode usar UrlRewrite . No entanto, neste caso, parece que você deseja remover caminho do contexto do seu aplicativo web, caso em que você tem duas opções:
- implantar seu aplicativo para o
/
caminho do contexto (como é específico do servidor de aplicativos) - executar o Apache na porta 80 e utilização mod_proxy a determinadas URLs de proxy para o servidor de aplicativos em execução em uma porta diferente, usando a configuração algo como o seguinte.
Apache config:
<Proxy http://localhost:8080/*>
Order Allow,Deny
Allow From All
</Proxy>
ProxyPreserveHost On
ProxyPass / http://localhost:8080/WebApplication/
ProxyPassReverse / http://localhost:8080/WebApplication/
Outras dicas
Note que as faces / / é devido ao mapeamento em web.xml
. este é um mapeamento padrão para JSF, no entanto, você também pode usar o mapeamento de extensão -. ou seja .faces
no final da URL
Por exemplo, em um aplicativo que tenho aqui esta está no arquivo web.xml:
<servlet-mapping>
<servlet-name>Persistent Faces Servlet</servlet-name>
<url-pattern>*.faces</url-pattern>
</servlet-mapping>
Isso é usar IceFaces, no entanto, ele será semelhante para você com RichFaces. Seu provavelmente será parecido com este: <url-pattern>/faces/*</url-pattern>
. Se você alterá-lo para ter *.faces
como acima, o URL final será parecido com este:
http: //localhost/WebApplication/folder1/page.faces
Se você usar isso em conjunto com a resposta que Peter Hilton deu sobre a implantação de uma aplicação web raiz, o seu URL final será algo parecido com isto:
http: //localhost/folder1/page.faces
O que é quase exatamente o que você queria.
PrettyFaces permite reescrever o seu url. Se você preferir algo mais leve, estender NavigationHandler e override handleNavigation, v.g. chamando context.getExternalContext (). redirect ()
Sim. Nós projetamos PrettyFaces exatamente para lidar com esta situação:
PrettyFaces - SEO, parâmetros dinâmicos, Marcadores e navegação para JSF / JSF2
Você também pode alterar pasta nome de rostos para jsp por exemplo como este:
<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>
E, em seguida, o seu URL se parece com:
http://localhost/WebApplication/jsp/folder1/page.jsp
e se você implantar seu aplicativo para o caminho do contexto / de servidor de aplicativos que vai se parece com:
http://localhost/jsp/folder1/page.jsp
será difícil agora para descobrir que você usa JSF para lamers ;-) mas um hacker pode investigá-lo, apontando seu navegador para o URL como este http://localhost/folder1/page.jsp