6 ответов:
если фактический беспокойство-это динамичность контекста webapp (часть" AppName"), а затем просто получить его динамически с помощью
HttpServletRequest#getContextPath().<head> <link rel="stylesheet" href="${pageContext.request.contextPath}/templates/style/main.css" /> <script src="${pageContext.request.contextPath}/templates/js/main.js"></script> <script>var base = "${pageContext.request.contextPath}";</script> </head> <body> <a href="${pageContext.request.contextPath}/pages/foo.jsp">link</a> </body>если вы действительно хотите установить базовый путь для всех относительных ссылок, так что вам не нужно повторять
${pageContext.request.contextPath}на относительная ссылка, используйте<base>тег. Вот пример с помощью функции JSTL.<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> ... <head> <c:set var="url">${pageContext.request.requestURL}</c:set> <base href="${fn:substring(url, 0, fn:length(url) - fn:length(pageContext.request.requestURI))}${pageContext.request.contextPath}/" /> <link rel="stylesheet" href="templates/style/main.css" /> <script src="templates/js/main.js"></script> <script>var base = document.getElementsByTagName("base")[0].href;</script> </head> <body> <a href="pages/foo.jsp">link</a> </body>таким образом, каждая относительная ссылка (т. е. не начиная с
/или схема) станет относительно<base>.это, кстати, не имеет особого отношения к Tomcat в любом случае. Это просто связано с основами HTTP / HTML. У вас будет такая же проблема на каждом другом веб-сервере.
Читайте также:
просто использовать
<c:url>- tag с контекстом приложения относительный путь.когда
вы запускаете tomcat из некоторого каталога-который является $cwd для tomcat. Вы можете указать любой путь к этому $Дов.
предположим, что у вас есть
home - tomcat |_bin - cssStore |_file.cssи предположим, что вы запускаете tomcat из ~ / tomcat, используя команду "bin/startup.sh".
~ / tomcat становится домашним каталогом ($cwd) для tomcat
вы можете получить доступ "../cssStore / file.css " из файлов классов в вашем сервлете теперь
надеюсь, что это поможет, - М. С.
вместо этого, используя всю ссылку, мы можем сделать, как показано ниже (решение касается файлов jsp)
С JSTL мы можем сделать его как: Чтобы связать ресурс, как css, js:
<link rel="stylesheet" href="${pageContext.request.contextPath}/style/sample.css" /> <script src="${pageContext.request.contextPath}/js/sample.js"></script>чтобы просто сделать ссылку:
<a id=".." class=".." href="${pageContext.request.contextPath}/jsp/sample.jsp">....</a>стоит ознакомиться с тегами
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>существует также метод JSP, чтобы сделать это, как показано ниже, но лучше, как выше:
<link rel="stylesheet" href="<%=request.getContextPath()%>/style/sample.css" /> <script type="text/javascript" src="<%=request.getContextPath()%>/js/sample.js"></script>чтобы просто сделать ссылку:
<a id=".." class=".." href="<%=request.getContextPath()%>/jsp/sample.jsp">....</a>
Это можно сделать проще:
<base href="${pageContext.request.contextPath}/"/>все URL будут сформированы без лишних
domain:portно с контекстом приложения.
это производная от предложения @Ralph, которое я использую. Добавьте
c:urlв верхней части страницы JSP.<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <c:url value="/" var="root" />тогда просто ссылайтесь на корневую переменную на своей странице:
<link rel="stylesheet" href="${root}templates/style/main.css">
Comments