質問

このシナリオ。

私のJavaのウェブアプリケーションが以下のパス

https://www.mywebsite.com:9443/MyWebApp

ということかがあるJSPファイル

https://www.mywebsite.com:9443/MyWebApp/protected/index.jsp

私取得する際に必要

https://www.mywebsite.com:9443/MyWebApp 

このJSPファイルです。

もちろん、あな遊びとかの方法を取得しているだけで、URLおよび再トレースのパスです。

ではありまprogramaticいということが?具体的には思えるのではないかと思っていくのドメイン+ポートい方が分からない実際のアプリケーション名"MyWebApp"?

役に立ちましたか?

解決

は、Webアプリケーションの名前(実際にはコンテキストパスは)のhref = "http://java.sun.com/javaee/5/docs/api/javax/servlet/http/HttpServletRequest.html# <呼び出すことによって提供されていますgetContextPath%28%noreferrer "29" = REL"> HttpServletrequest#getContextPath() のは、(1が前に提案されているようので、getServletPath() NOT)。あなたは${pageContext.request.contextPath}により、JSPでこれを取得することができます。

<p>The context path is: ${pageContext.request.contextPath}.</p>

あなたは(この質問より理にかなって)JSPページ内のすべての相対パスのためにこれを使用する場合は、あなたがHTMLの<base>タグを利用することができます:

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<c:set var="req" value="${pageContext.request}" />
<c:set var="url">${req.requestURL}</c:set>
<c:set var="uri" value="${req.requestURI}" />

<!doctype html>
<html lang="en">
    <head>
        <title>SO question 2204870</title>
        <base href="${fn:substring(url, 0, fn:length(url) - fn:length(uri))}${req.contextPath}/">
        <script src="js/global.js"></script>
        <link rel="stylesheet" href="css/global.css">
    </head>
    <body>
        <ul>
            <li><a href="home.jsp">Home</a></li>
            <li><a href="faq.jsp">FAQ</a></li>
            <li><a href="contact.jsp">Contact</a></li>
        </ul>
    </body>
</html>
あなたはどこにでもコンテキストパスをコピー - ペーストする必要がないように、

ページのすべてのリンクは、自動的に<base>からの相対になります。相対リンクは/で起動したときに、その後、彼らはもう<base>に相対的ではないことに注意してくださいが、ドメインのルートに代わります。

他のヒント

のドキュメントを見てください。 HttpServletRequest.
例で URL を構築するには、以下を使用する必要があります。

  • getScheme()
  • getServerName()
  • getServerPort()
  • getContextPath()

例を返すメソッドは次のとおりです。

public static String getURLWithContextPath(HttpServletRequest request) {
   return request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath();
}

アプリケーション名がgetContextPathから来ています。

私はアジャイルソフトウェア職人のHttpServletRequestパスデコーディング :A>使用可能なすべての異なる方法を選別します

 loading=

"ここに画像の説明を入力します。

思いをよくお読みに docs, 用します。ご興味のある方はコンテキストパスについてはこちらをご覧ください, ServletContext.getContextPath().

次のコードは、JavaScriptを使用してWebアプリケーションの役に立つかもしれません。

var newURL = window.location.protocol + "//"  + window.location.host + "" + window.location.pathname;

newURL = newURL.substring(0,newURL.indexOf(""));
あなたは文字列としてのURLを渡され、そのアプリケーションのコンテキストルートを抽出したいされている場合は、

、あなたはそれを抽出するために、この正規表現を使用することができます。これは、完全なURLやコンテキストルートで始まる相対URLのために動作します。

url.replaceAll("^(.*\\/\\/)?.*?\\/(.+?)\\/.*|\\/(.+)$", "$2$3")
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top