要基于当前 URL 构造新 URL,首先需要从object中获取当前 URLrequest
。要访问 JSP 中的request
对象,请使用JSP 表达式语言定义的pageContext
隐式对象:
${pageContext.request.requestURL}
下面是在 JSP 页面中构造 URL 的简单示例:
测试.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<title>Test Page</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<h1>Testing URL construction</h1>
<c:choose>
<c:when test="${pageContext.request.queryString != null}">
<a href="${pageContext.request.requestURL}?${pageContext.request.queryString}&page=xxx">Go to page xxx</a>
</c:when>
<c:otherwise>
<a href="${pageContext.request.requestURL}?page=xxx">Go to page xxx</a>
</c:otherwise>
</c:choose>
</body>
</html>
此解决方案允许您根据当前 URL 是否已包含某些查询字符串来构造 URL 。所以你分别附加
?${pageContext.request.queryString}&page=xxx
要不就
?page=xxx
到当前 URL。
JSTL和表达式语言用于实现对查询字符串的检查。我们使用getRequestURL()
方法来获取当前的URL。