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 回答