Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsp 如何动态获取当前的基本URL?_Jsp - Fatal编程技术网

Jsp 如何动态获取当前的基本URL?

Jsp 如何动态获取当前的基本URL?,jsp,Jsp,我试图在我的webproject中创建一个链接,在链接文本中显示该链接的url 例如,如果我正在处理localhost的示例项目,我希望指向example.jsp页面的链接看起来像http://localhost:8081/Example/example.jsp 其中将链接到/example.jsp页面 我需要能够动态执行此操作。您可以使用以下方法获取站点的基本URL: <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"

我试图在我的webproject中创建一个链接,在链接文本中显示该链接的url

例如,如果我正在处理localhost的示例项目,我希望指向example.jsp页面的链接看起来像
http://localhost:8081/Example/example.jsp

其中将链接到
/example.jsp
页面

我需要能够动态执行此操作。

您可以使用以下方法获取站点的基本URL:

<%@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="base" value="${fn:substring(url, 0, fn:length(url) - fn:length(req.requestURI))}${req.contextPath}/" />
...
或者,当使用HTML
标记使文档中的所有相对链接都与其相关时:

<head>
    <base href="${base}" />
</head>
<body>
    <a href="example.jsp">${base}example.jsp</a>
</body>


那就这么做吧?你的问题到底是什么?如何动态地获取主机名、端口和/或上下文名称或其他信息?是的,我需要能够动态地做到这一点。我已经编辑了当项目加载到服务器时的问题,因此它将能够获得/example.jsp的正确完整URL。有没有方法不用安装JSTL就可以做到这一点?是的,只需在预处理控制器servlet中准备信息(如果您有任何一个,我的印象是您没有任何一个,因为您没有使用JSTL),或者使用Scriptlet(嵌入在JSP中的原始Java代码).Scriptlet在十多年来一直受到强烈的反对。另请参见。谢谢BalusC,我已经有一段时间没有看到这种罕见的代码了。您的基本URL确实有效。再次感谢!
<head>
    <base href="${base}" />
</head>
<body>
    <a href="example.jsp">${base}example.jsp</a>
</body>