[Java/JSP] Hoe relatief pad naar resource bepalen?

Pagina: 1
Acties:

  • Ralluph
  • Registratie: Maart 2001
  • Laatst online: 20-05 22:52

Ralluph

Aus der Reihe...

Topicstarter
Ik ben bezig met onderhoud aan/refactoring van een oude webapplicatie, die _nogal_ ranzig is opgezet. Het bestaat uit pak 'm beet tweehonderd JSP-pagina's, die in een vrij arbitraire structuur onder de web-dir zijn geplaatst. Versimpeld voorbeeld:

/een.jsp
/aaa/twee.jsp
/aaa/bbb/drie.jsp
/aaa/bbb/ccc/vier.jsp

Daarnaast is er in de web-dir een subdir 'images' met plaatjes die in de te genereren HTML worden gebruikt, bijvoorbeeld:

/images/plaatje.png

Momenteel wordt vanuit elke individuele JSP met een net-niet-helemaal-hetzelfde-gecopypaste-code het plaatje relatief opgenomen. Daarmee bedoel ik dat de HTML die uit een.jsp komt er zo uitziet:
HTML:
1
[img]"images/plaatje.png"[/img]
en de HTML die uit drie.jsp komt er alsvolgt uitziet:
HTML:
1
[img]"../../images/plaatje.png"[/img]
Wat er uit twee.jsp en vier.jsp kunt kunnen jullie nu zelf wel bedenken :)

Omdat een heleboel code-snippets in elke JSP hetzelfde zouden moeten zijn, ben ik bezig om een taglib te maken teneinde de code-footprint van de applicatie te ruduceren en hierdoor de onderhoudbaarheid te vergroten. Hierin komt ook een tag die de HTML om het plaatje te includen genereert. Mijn probleem is nu, hoe ik vanuit één JSP-tag aangeroepen vanuit een.jsp, twee.jsp, drie.jsp òf vier.jsp op een generieke manier het relatieve pad naar plaatje.png kan bepalen.

Om alvast alle replies in de trant van 'waarom adresseer je het plaatje niet absoluut?' te voorkomen: dit gaat gegarandeerd problemen opleveren omdat onze klant een obscuur beveiligings- en authenicatiemechanisme hanteert voor de applicatieserver dat eventueel iets kan tussenvoegen tussen servername en contextpath. Hier is helemaal niets aan te veranderen.

Mijn enige idee tot nu toe om dit op te lossen is door het absolute pad met een method uit javax.servlet.http.HttpServletRequest op te vragen en vervolgens met String-functies hieruit het absolute pad te destilleren, maar dat lijkt me niet zeer robuust en omslachtig. Dit probleem is vast wel eens eerder opgelost, alleen kan ik de oplossing niet vinden. Wie weet hoe ik dit moet doen of waar ik (beter) moet zoeken?

  • Bobco
  • Registratie: Januari 2001
  • Laatst online: 30-10-2023

Bobco

I used to dream about Verona.

Als het je puur om simpele code gaat zou je kunnen overwegen om je image directory in elke jsp subdir van je applicatie neer te zetten. Je hebt dan in ieder geval altijd hetzelfde relatieve pad. Uiteraard is dit spuuglelijk vanwege de redundantie van al je images, maar het is wel simpel in bijvoorbeeld een Ant buildscript in te bakken en diskruimte is niet zo duur als uren prutsen aan code....

With the light in our eyes, it's hard to see.


Verwijderd

code:
1
[img]"/images/plaatje.png"[/img]


Zo zorg je ervoor dat hij vanaf de root van je domein de directory images aanspreekt. en de root bevat natuurlijk www.pinda.nl/ die / vormt de root van het domein.

  • Ralluph
  • Registratie: Maart 2001
  • Laatst online: 20-05 22:52

Ralluph

Aus der Reihe...

Topicstarter
Verwijderd schreef op 02 maart 2004 @ 12:54:
code:
1
[img]"/images/plaatje.png"[/img]


Zo zorg je ervoor dat hij vanaf de root van je domein de directory images aanspreekt. en de root bevat natuurlijk www.pinda.nl/ die / vormt de root van het domein.
Om alvast alle replies in de trant van 'waarom adresseer je het plaatje niet absoluut?' te voorkomen: dit gaat gegarandeerd problemen opleveren omdat onze klant een obscuur beveiligings- en authenicatiemechanisme hanteert voor de applicatieserver dat eventueel iets kan tussenvoegen tussen servername en contextpath. Hier is helemaal niets aan te veranderen.
Door de beveiligingssoftware van de klant wordt er iets tussen de servername en contextname tussengevoegd, zoals: http://www.pinda.nl/watdeklantwil/mijncontextpad/een.jsp. Dit is absoluut niet te veranderen en de reden waarom relatieve adressering mij de enige robuuste oplossing lijkt.

[ Voor 4% gewijzigd door Ralluph op 02-03-2004 14:16 ]


  • Ralluph
  • Registratie: Maart 2001
  • Laatst online: 20-05 22:52

Ralluph

Aus der Reihe...

Topicstarter
Bobco schreef op 02 maart 2004 @ 12:40:
Als het je puur om simpele code gaat zou je kunnen overwegen om je image directory in elke jsp subdir van je applicatie neer te zetten. Je hebt dan in ieder geval altijd hetzelfde relatieve pad. Uiteraard is dit spuuglelijk vanwege de redundantie van al je images, maar het is wel simpel in bijvoorbeeld een Ant buildscript in te bakken en diskruimte is niet zo duur als uren prutsen aan code....
Klopt, dit had ik inderdaad ook al zelf bedacht, superranzig is het wel. In plaats van uren zelf prutsen vroeg ik mij dan ook af of de oplossing hiervoor niet heel erg voor de hand ligt.

  • Cuball
  • Registratie: Mei 2002
  • Laatst online: 27-05 14:59
Ralluph schreef op 02 maart 2004 @ 10:22:
HTML:
1
[img]"../../images/plaatje.png"[/img]
Wat er uit twee.jsp en vier.jsp kunt kunnen jullie nu zelf wel bedenken :)
code:
1
[img]"<%=request.getContextPath()%>/images/plaantje.png"[/img]


misschien of dit werkt ?

"Live as if you were to die tomorrow. Learn as if you were to live forever"

Pagina: 1