原文: https://beginnersbook.com/2013/11/jstl-curl-core-tag/

<c:url> JSTL 标签**用于网址格式,或者您可以说网址编码。这主要用于需要根据用户输入或基于变量值打开 JSP 页面时。它基本上将相对 url 转换为应用上下文的 url。现在可能听起来很混乱,但是按照本教程中给出的示例,您将能够很容易地掌握它。

语法:

基本语法如下所示 - 属性value<c:url>标签的必需属性。

  1. <c:url value="/file1.jsp" />

此标签还有三个可选属性,如下所示:

  • var:用于存储格式化 url(生成 url)的变量名。
  • context:用于指定应用(或项目名称)。不明白吗?我们将在稍后的示例的帮助下看到这一点。
  • scope:将存储var属性的范围。它可以是请求,页面,应用或会话。

让我们通过一个例子来理解这个标签和属性的使用:

示例 1:<c:url>的值属性

  1. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
  2. <html>
  3. <head>
  4. <title>JSTL c:url Tag Example</title>
  5. </head>
  6. <body>
  7. <c:url value="/file1.jsp"/>
  8. </body>
  9. </html>

输出:上面的代码输出如下。注意:BeginnersBook是我的项目名称(换句话说是 JSP 应用名称)。

  1. /BeginnersBook/file1.jsp

JSTL`<c:url>`核心标签 - 图1

示例 2:<c:url>标签的var属性

让我们像这样修改示例 1。我们在<c:url>中添加了一个变量myurl。现在<c:url>的结果将存储在变量myurl中。

  1. <c:url var="myurl" value="/file1.jsp"/>
  2. ${myurl}

输出:

  1. /BeginnersBook/file1.jsp

示例 3:上下文属性

默认情况下,此标签将当前应用作为上下文,但是我们可以在c url中明确指定上下文,如下例所示:

注意:上下文的值应始终以/开头,否则您将收到以下异常消息:

  1. HTTP 状态 500 - javax.servlet.ServletException:javax.servlet.jsp.JspTagException:在 URL 标签中,当指定“context”属性时,“context”和“url”的值必须以“/”开头。
  1. <c:url var="myurl" value="/file1.jsp" context="/MyJSPProject"/>
  2. ${myurl}

输出:

  1. /MyJSPProject/file1.jsp

JSTL`<c:url>`核心标签 - 图2

示例 4:scope属性

  1. <c:url var="myurl" value="/file1.jsp" context="/MyJSPProject" scope="session"/>
  2. ${requestScope.myurl}

输出:输出屏幕将为空白,因为我们已将myurl存储在会话范围内,我们正在尝试从requestScope获取后打印该值。

正确用法:这是应该编码的方式。这里我们存储在会话中并从sessionScope中获取,因此它可以正常工作。

  1. <c:url var="myurl" value="/file1.jsp" context="/MyJSPProject" scope="session"/>
  2. ${sessionScope.myurl}

输出:

  1. /MyJSPProject/file1.jsp