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

Foi útil?

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:

  1. implantar seu aplicativo para o / caminho do contexto (como é específico do servidor de aplicativos)
  2. 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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top