Não é possível usar links relativos no meu ambiente de desenvolvimento do tomcat

3

Estou desenvolvendo um aplicativo da web com o tomcat. No dev dev, o endereço raiz do aplicativo é localhost:8080/myapp/ . Na produção, o endereço da raiz é www.myapp.com/ .

Quando eu uso um link relativo no meu website, por exemplo /home , funciona bem na produção, mas o endereço que eu chego no meu dev é localhost:8080/home , que remove a raiz do aplicativo. Obviamente, não posso usar apenas home , pois funcionaria na primeira vez, mas apenas concatenaria até o final da string de endereço. Eu também não posso usar o arquivo hosts, e não tenho idéia de como criar um alias ou apenas redirecionar o tráfego de algum alias para localhost:8080/myapp/ .

Este parece ser um problema muito comum. Obrigado antecipadamente!

    
por vivri 25.05.2012 / 14:51

1 resposta

5

A solução está, na verdade, no código de suas páginas da Web e não em qualquer configuração que você possa fazer. Supondo que você esteja usando o JSP para gerar seu HTML, é necessário alterar links como este:

<a href="/home">a link to the root of my webapp</a>

Para ficar assim:

<a href="<%= response.encodeURL(request.getContextPath() + "/home") %>">
  a link to the root of my webapp
</a>

O request.getContextPath é a verdadeira mágica aqui: ele sempre retorna o prefixo que pertence à sua aplicação web, não importa o que seja. Para o webapp ROOT, ele retornará "" (string vazia). Por outro lado, pode retornar "/ foo / bar" (se seu webapp foi implementado como foo # bar.war).

O response.encodeURL adicionará o identificador de sessão ao seu URL se o cliente não estiver usando cookies para que as sessões funcionem quando os cookies não estiverem disponíveis.

Se você estiver usando alguma outra estrutura de geração de conteúdo (Velocity, Freemarker, etc.), existem maneiras análogas de alcançar a mesma coisa fornecidas por essas estruturas.

    
por 25.05.2012 / 19:14

Tags