Per lavorare con il mio file statico (CSS, JS) devo scrivere un percorso assoluto come /AppName/templates/style/main.css
. C’è qualche soluzione, che potrei scrivere un percorso relativo come style/main.css
?
Se la tua preoccupazione reale è la dinamicità del contesto webapp (la parte “AppName”), basta recuperarla in modo dinamico da HttpServletRequest#getContextPath()
.
link
Se si desidera impostare un percorso di base per tutti i collegamenti relativi in modo che non sia necessario ripetere ${pageContext.request.contextPath}
in ogni collegamento relativo, utilizzare il tag
. Ecco un esempio con l’aiuto delle funzioni JSTL .
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> ... ${pageContext.request.requestURL} link
In questo modo ogni link relativo (cioè non iniziante con /
o uno schema) diventerà relativo a
.
Questo non è in alcun modo collegato a Tomcat in alcun modo. È solo relativo alle basi HTTP / HTML. Avresti lo stesso problema in ogni altro server web.
Basta usare
-tag con un percorso relativo al contesto dell’applicazione.
Quando il parametro value
inizia con un /
, il tag lo tratterà come url relativo all’applicazione e aggiungerà il nome dell’applicazione all’URL. Esempio:
jsp:
` ... ` home link
diventerà questo html, con un url relativo al dominio:
... home link
Si avvia tomcat da una directory, che è $ cwd per tomcat. È ansible specificare qualsiasi percorso relativo a questo $ cwd.
supponi di avere
home - tomcat |_bin - cssStore |_file.css
Supponiamo di avviare tomcat da ~ / tomcat, utilizzando il comando “bin / startup.sh”.
~ / tomcat diventa la directory home ($ cwd) per tomcat
Puoi accedere a “../cssStore/file.css” dai file di class nel tuo servlet ora
Spero che aiuti, – MS
Invece usando l’intero collegamento possiamo fare come sotto (la soluzione riguarda i file jsp)
Con JSTL possiamo farlo come: Per colbind risorse come css, js:
Per fare semplicemente un link:
....
Vale la pena di familiarizzare con i tag
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
C’è anche un metodo jsp per farlo come sotto, ma in modo migliore come sopra:
Per fare semplicemente un link:
....
Questo potrebbe essere fatto più semplice:
Tutti gli URL saranno formati senza domain:port
non necessario domain:port
ma con contesto applicativo.
Questo è un derivato del suggerimento di @Ralph che ho usato. Aggiungi c:url
all’inizio del tuo JSP.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
Quindi fai riferimento alla variabile root nella tua pagina: