如何从 jsp 请求对象中获取基本 url?

新手上路,请多包涵
阅读 508
2 个回答

那么,您想要 基本 URL 吗?您可以按如下方式在 servlet 中获取它:

 String url = request.getRequestURL().toString();
String baseURL = url.substring(0, url.length() - request.getRequestURI().length()) + request.getContextPath() + "/";
// ...

或者在 JSP 中,如 <base> ,几乎没有 JSTL 的帮助:

 <%@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}" />
...
<head>
    <base href="${fn:substring(url, 0, fn:length(url) - fn:length(uri))}${req.contextPath}/" />
</head>

请注意,当它已经是默认端口号(例如 80)时,这不包括端口号 java.net.URL 没有考虑到这一点。

也可以看看:

原文由 BalusC 发布,翻译遵循 CC BY-SA 4.0 许可协议

Bozho 回答的 JSP 变体:

 <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:set var="req" value="${pageContext.request}" />
<c:set var="baseURL" value="${req.scheme}://${req.serverName}:${req.serverPort}${req.contextPath}" />

原文由 hfmanson 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题