0

ブラウザー (IE および Firefox) で、相対リンクがあり、URL がhttp://domain/somepath/lastfolder/ の場合

相対リンクは次のようになります。

http://domain/somepath/lastfolder/linkdocname.html

URL がhttp://domain/somepath/lastdocの場合、相対リンクは次のようになります。

http://domain/somepath/linkdocname.html

http://domain/somepath/lastfolder/は次のようになります。

http://domain/somepath/lastfolder/linkdocname.html

特別な関数を記述せずに JSP を使用してこれを複製する方法はありますか?

以下を使用してベース URL を取得しようとしました。

baseURL = request.getScheme() + "://" + request.getServerName() + ":" 
+ request.getServerPort()+ request.getRequestURI(); 

しかし、それはリクエストURIのパス全体を取得し、「/」で終わっていない場合は最後のビットを削除しません。

baseURL = request.getScheme() + "://" + request.getServerName() + ":" 
+ request.getServerPort() + request.getContextPath();

これにより、Web コンテナー フォルダーまでのすべてが提供されますが、それ以降のフォルダーは提供されません。

4

1 に答える 1

0

最後の文字列構築の試行では、「:」を指定したにもかかわらず、ポート番号がありません

これを試して:

new URL(request.getScheme(), request.getServerName(), 
        request.getServerPort(), request.getContextPath());

文字列を自分で作成し、必要に応じてデフォルト ポートを削除することもできます。

public String getBaseUrl(HttpServletRequest request) {
    if (( request.getServerPort() == 80 ) || ( request.getServerPort() == 443 )) {
        return request.getScheme() + "://" + request.getServerName() + 
                request.getContextPath();
    } else {
        return request.getScheme() + "://" + request.getServerName() + ":" + 
                request.getServerPort() + request.getContextPath();
    }
}
于 2012-04-24T19:40:11.507 に答える