如何从jsp请求对象获取基本网址?

2022-09-01 09:18:28

如何从 jsp 请求对象获取基本 url?http://localhost:8080/SOMETHING/index.jsp,但是我想要部分直到索引.jsp,在jsp中怎么可能?


答案 1

那么,你想要基本网址吗?您可以在 servlet 中获取它,如下所示:

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

或者在 JSP 中,如 ,在 JSTL 的帮助下:<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}" />
...
<head>
    <base href="${fn:substring(url, 0, fn:length(url) - fn:length(uri))}${req.contextPath}/" />
</head>

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

另请参阅:


答案 2

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}" />