如何使用相对路径而不包含上下文根名称?
要工作我的静态文件(CSS,JS),我必须编写绝对路径,例如 /AppName/templates/style/main.css
。有没有什么解决方案,我可以编写像 style/main.css
这样的相对路径?
To working my static file (CSS, JS) I have to write absolute path like /AppName/templates/style/main.css
. Is there any solution, that I could write relative path like style/main.css
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
如果您实际关心的是 web 应用程序上下文(“AppName”部分)的动态性,那么只需通过
HttpServletRequest#getContextPath()
。如果您想为所有相对链接设置基本路径,以便不需要在每个相对链接中重复
${pageContext.request.contextPath}
,请使用
标签。这是一个借助 JSTL 函数< /a>.这样,每个相对链接(即不以
/
或方案开头)将变得相对于
。顺便说一句,这与 Tomcat 没有任何具体关系。它只与 HTTP/HTML 基础知识相关。在其他所有网络服务器中您都会遇到同样的问题。
另请参阅:
If your actual concern is the dynamicness of the webapp context (the "AppName" part), then just retrieve it dynamically by
HttpServletRequest#getContextPath()
.If you want to set a base path for all relative links so that you don't need to repeat
${pageContext.request.contextPath}
in every relative link, use the<base>
tag. Here's an example with help of JSTL functions.This way every relative link (i.e. not starting with
/
or a scheme) will become relative to the<base>
.This is by the way not specifically related to Tomcat in any way. It's just related to HTTP/HTML basics. You would have the same problem in every other webserver.
See also:
只需使用
-tag< /a> 带有应用程序上下文相对路径。当
value
参数以/
开头时,标记会将其视为应用程序相对 url,并将应用程序名称添加到该 url 中。示例:
jsp:
将成为此 html,带有域相对 url:
Just use
<c:url>
-tag with an application context relative path.When the
value
parameter starts with an/
, then the tag will treat it as an application relative url, and will add the application-name to the url.Example:
jsp:
will become this html, with an domain relative url:
这可以做得更简单:
所有 URL 将在没有不必要的
domain:port
的情况下形成,但具有应用程序上下文。This could be done simpler:
All URL will be formed without unnecessary
domain:port
but with application context.您从某个目录启动 tomcat - 这是 tomcat 的 $cwd。您可以指定与此 $cwd 相关的任何路径。
假设您有
并假设您使用命令“bin/startup.sh”从 ~/tomcat 启动 tomcat。
~/tomcat 成为 tomcat 的主目录 ($cwd)
您现在可以从 servlet 中的类文件访问“../cssStore/file.css”
希望有帮助,- MS
You start tomcat from some directory - which is the $cwd for tomcat. You can specify any path relative to this $cwd.
suppose you have
And suppose you start tomcat from ~/tomcat, using the command "bin/startup.sh".
~/tomcat becomes the home directory ($cwd) for tomcat
You can access "../cssStore/file.css" from class files in your servlet now
Hope that helps, - M.S.
相反,我们可以使用整个链接,如下所示(解决方案涉及 jsp 文件)
使用 JSTL,我们可以将其制作如下:
要链接像 css、js 这样的资源:
简单地建立一个链接:
值得熟悉标签
还有 jsp 方法可以像下面一样执行此操作,但更好的方法是上面的:
简单地建立一个链接:
Instead using entire link we can make as below (solution concerns jsp files)
With JSTL we can make it like:
To link resource like css, js:
To simply make a link:
It's worth to get familiar with tags
There is also jsp method to do it like below, but better way like above:
To simply make a link:
这是我一直在使用的@Ralph 建议的衍生。将
c:url
添加到 JSP 的顶部。然后只需在页面中引用根变量:
This is a derivative of @Ralph suggestion that I've been using. Add the
c:url
to the top of your JSP.Then just reference the root variable in your page: