コンテキストのルート名を含まずに相対パスを使用する方法は?
2023-07-20 11:20:04
質問
静的ファイル(CSS, JS)を動作させるには、次のように絶対パスを記述する必要があります。
/AppName/templates/style/main.css
. 相対パスで記述する方法はありますか?
style/main.css
?
どのように解決するのですか?
もし、あなたの
実際の
がウェブアプリのコンテキスト ("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の基本に関係しているだけです。他のすべての Web サーバでも同じ問題が発生するでしょう。
も参照してください。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
java オープンソースフレームワーク統合 Context initialization failed の共通エラー。
-
[解決済み] JSPページでサーブレットを呼び出す方法
-
[解決済み] htmlの<base>タグの推奨事項を教えてください。
-
[解決済み] クッキーとセッションの違い?
-
[解決済み] 別のJSPファイルをインクルードする
-
[解決済み] JSP EL、JSF EL、Unified ELの違い【終了しました
-
[解決済み] jsp の出力から空白を取り除く
-
[解決済み] ELで定数を参照するには?
-
[解決済み] 302リダイレクトはrefererの文字列を維持しますか?
-
[解決済み] JSPに転送するServletを呼び出すと、ブラウザがCSS、画像、リンクなどの相対的なリソースにアクセス/検索できない