# JSTL`<c:url>`核心标签

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

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

#### 语法：

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

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

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

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

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

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

```html
<%@ 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 应用名称）。

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

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

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

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

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

输出：

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

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

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

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

```html
HTTP 状态 500 - javax.servlet.ServletException：javax.servlet.jsp.JspTagException：在 URL 标签中，当指定“context”属性时，“context”和“url”的值必须以“/”开头。
```

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

输出：

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

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

#### 示例 4：`scope`属性

```html
<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/)中获取，因此它可以正常工作。

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

输出：

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