# JSTL＆lt; c：url＆gt;核心标签

> 原文： [https://beginnersbook.com/2013/11/jstl-curl-core-tag/](https://beginnersbook.com/2013/11/jstl-curl-core-tag/)

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

#### 句法：

基本语法如下所示 - 属性“value”是＆lt; c：url＆gt;的必需属性。标签

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

此标签还有三个**可选属性**，如下所示 -

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

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

#### 示例 1：＆lt; c：url＆gt;的值属性

```
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>JSTL c:url Tag Example</title>
</head>
<body>
<c:url value="/file1.jsp"/>
</body>
</html>
```

**输出**：上面的代码输出如下。 **注意：** BeginnersBook 是我的项目名称（换句话说是 JSP 应用程序名称）。

```
/BeginnersBook/file1.jsp
```

![c-url-example1](../Images/502ca16ddd81c9d2f454179bd794e6e1.jpg)

#### 示例 2：＆lt; c：url＆gt;的 var 属性标签

让我们像这样修改示例 1。我们在＆lt; c：url＆gt;中添加了一个变量 myurl。现在＆lt; c：url＆gt;的结果将存储在变量 **myurl** 中。

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

输出：

```
/BeginnersBook/file1.jsp
```

#### 示例 3：上下文属性

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

**注意**：上下文的值应始终以“/”开头，否则您将收到以下异常消息 -
HTTP 状态 500 - javax.servlet.ServletException：javax.servlet.jsp.JspTagException：在 URL 标记中，当指定“context”属性时，“context”和“url”的值必须以“/”开头。

```
<c:url var="myurl" value="/file1.jsp" context="/MyJSPProject"/>
${myurl}
```

Output:

```
/MyJSPProject/file1.jsp
```

![c-url-example2](../Images/099d71dea158a8d13cf85ad8e4ad240f.jpg)

#### 示例 4：范围属性

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

输出：输出屏幕将为空白，因为我们已将 myurl 存储在[会话](https://beginnersbook.com/2013/11/jsp-implicit-object-session-with-examples/)范围内，我们正在尝试从 [requestScope](https://beginnersbook.com/2013/11/jsp-expression-language-el/) 获取后打印该值。

**正确用法：**这是应该编码的方式。这里我们存储在会话中并从 [sessionScope](https://beginnersbook.com/2013/11/jsp-expression-language-el/) 中获取，因此它可以正常工作。

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

Output:

```
/MyJSPProject/file1.jsp
```