在JSP中编写URL

时间:2013-03-29 18:28:38

标签: java jsp url jstl el

让我说我目前的网址是:  /app.jsp?filter=10&sort=name

我在JSP中有一个分页组件,其中应包含如下链接:
/app.jsp?filter=10&sort=name&page=xxx

如何通过向当前URL添加新参数在JSP中创建有效的URL?我不想在JSP中使用Java代码,也不想使用以下URL: /app.jsp?filter=10&sort=name&?&page=xxx/app.jsp?&page=xxx

3 个答案:

答案 0 :(得分:10)

好的,我找到了答案。第一个问题是我必须保留URL中的所有当前参数并仅更改page参数。为此,我必须遍历所有当前参数并添加我不想更改为URL的参数。然后我添加了我想要更改或添加的参数。所以我最终得到了这样的解决方案:

<c:url var="nextUrl" value="">
<c:forEach items="${param}" var="entry">
    <c:if test="${entry.key != 'page'}">
        <c:param name="${entry.key}" value="${entry.value}" />
    </c:if>
</c:forEach>
<c:param name="page" value="${some calculation}" />
</c:url>

这将在请求中创建独立于page参数的漂亮且干净的URL。这种方法的好处是URL可以是任何东西。

答案 1 :(得分:8)

<c:url var="myURL" value="/app.jsp">
   <c:param name="filter" value="10"/>
   <c:param name="sort" value="name"/>
</c:url>

要显示网址,您可以执行此类操作

<a href="${myURL}">Your URL Text</a>

答案 2 :(得分:2)

要根据当前网址构建新网址,首先需要request对象获取当前网址。要访问JSP中的request对象,请使用JSP表达式语言定义的pageContext implicit object

${pageContext.request.requestURL}  

以下是在JSP页面中构建URL的简单示例:

test.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

到当前网址。

JSTLExpression Language用于实现对查询字符串的检查。我们使用getRequestURL()方法获取当前网址。