[j2ee/tomcat] absolute en relatieve paden.

Pagina: 1
Acties:

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Ik heb een vraag over absolute en relatieve paden bij een servlet container zoals Tomcat. Ik zit nu al een tijd te bladeren en het blijft onduidelijk hoe ik kan werken met absolute en relatieve paden.

Iedere webapplicatie heeft zijn eigen context. Wat ik van de tutorials/documentatie heb begrepen is dat / staat voor de root van de applicatie.

Stel dat ik in de / een foo.html heb en ik wil een link maken naar een bestand bar.html. Dan kan ik met /bar.html het bestand niet vinden. Maar als ik een relatieve link (gewoon bar.html) gebruik, dan wel.

Het ziet er dus naar uit dat tomcat zich nog niets aantrekt van mijn wensen.

Dus hoe kan ik ervoor zorgen dat bij mijn webapplicatie de / ook echt als de root van mijn webapplicatie gezien wordt?

[edit]
Ik geef zelf geen context parameters op. De context wordt door tomcat afgeleid door de naam van mijn war..

[ Voor 9% gewijzigd door Alarmnummer op 15-01-2005 13:34 ]


  • Onno
  • Registratie: Juni 1999
  • Niet online
Tomcat gaat natuurlijk niet jouw content rewriten naar iets waarbij /bar.html wijst naar /context/bar.html, die weet verder niks over HTML en <a/> tags. Het hele verhaal over dat / de root van je webapp is slaat alleen op de requests die je te verwerken krijgt, als iemand /context/ opvraagt krijgt je servlet een request voor /.

Je ServletContext heeft wel een method om het pad van je context op te vragen, die kun je gebruiken om absolute urls te maken naar dingen binnen je webapp.

[ Voor 5% gewijzigd door Onno op 15-01-2005 13:41 ]


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Het probleem is dat ik in mijn url`s geen rekening wil houden met de context(naam). Ik wil dus neit de hele tijd zeggen fooapp/bar.html. Maar gewoon /bar.html. Hoe dit verder opgelost gaat worden interesseerd me eerlijk gezegd niet zoveel. Bij JBoss is dit bv wel mogelijk zonder dat er content herschreven hoeft te worden.

Of is een virtual host de enigste oplossing voor dit probleem?

voorbeeld uit mijn code:

code:
1
2
3
<a href="/fileController/download.spring?id=<%=doc.getId()%>">
    Link
</a>


en ik wil niet iedere keer zeggen:
code:
1
2
3
<a href="/fooapp/fileController/download.spring?id=<%=doc.getId()%>">
    Link
</a>

[ Voor 45% gewijzigd door Alarmnummer op 15-01-2005 13:49 ]


  • zneek
  • Registratie: Augustus 2001
  • Laatst online: 08-02-2025
Alarmnummer schreef op zaterdag 15 januari 2005 @ 13:44:
Het probleem is dat ik in mijn url`s geen rekening wil houden met de context(naam). Ik wil dus neit de hele tijd zeggen fooapp/bar.html. Maar gewoon /bar.html. Hoe dit verder opgelost gaat worden interesseerd me eerlijk gezegd niet zoveel. Bij JBoss is dit bv wel mogelijk zonder dat er content herschreven hoeft te worden.

Of is een virtual host de enigste oplossing voor dit probleem?

voorbeeld uit mijn code:

code:
1
2
3
<a href="/fileController/download.spring?id=<%=doc.getId()%>">
    Link
</a>


en ik wil niet iedere keer zeggen:
code:
1
2
3
<a href="/fooapp/fileController/download.spring?id=<%=doc.getId()%>">
    Link
</a>
Onder JBoss werkt dit ook niet hoor. Probleem zit hem in het feit dat niet je server (Tomcat of Jboss) maar de client besluit waar het pad naar verwijst.

/ wijst altijd naar de root van de URL. http://www.site.nl/ dus. Als jij vanuit www.site.nl/app/func/doeiets.spring verwijst naar /doeietsanders.spring zal de client altijd reageren met een request naar www.site.nl/doeietsanders.spring.

De oplossing die jij wilt zul je moeten zoeken in het standaard plakken van een contextpath voor je links. Dus <%= ctxPath %>/doeietsanders.spring.

[edit] trouwens, door die / weg te laten verwijs naar je dezelfde dir. Dus als je <a href="doeietsanders.spring"> gebruikt verwijs je in mijn voorbeeld wel naar de goede plek.

[ Voor 15% gewijzigd door zneek op 15-01-2005 14:11 ]