<c:url>

<c:url> はURLに使用できない文字をエンコードするJSP標準タグライブラリ(JSTL)である。

URLには次の文字を使用できる。

これら以外の文字をURLに含める場合は、URLをエンコードする必要がある。

タグ

<c:url url="" />

<c:param> タグを使用して、URLにリクエストパラメータを含めることもできる。

<c:url url="">
  <c:param name="" value="" />
</c:url>

属性

<c:url> タグには次の属性を指定する。

context

コンテキストパスを指定する。

WebサーバはWebアプリケーションをコンテキストと呼ばれる単位で管理している。下記URLの場合は「/app」の部分がコンテキストパスとなる。

https://localhost:8080/app/example/example.jsp

scope

var属性で指定した変数の有効範囲(スコープ)を指定する。次のうちいずれかの値をscope属性に指定する。

scope属性
スコープ変数の有効範囲
pageJSPページ
requestHTTPリクエスト
sessionHTTPセッション
applicationWebアプリケーション
url

エンコードするURLを指定する。必須属性で、省略できない。

var

エンコードしたURLを格納する変数を指定する。

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
  <head>
    <title>Core out tag</titile>
  </head>
  <body>
    <a href="<c:url url="/query?q=JSTL" />">検索</a>
  </body>
</html>

リクエストパラメータを含めてエンコードすることもできる。

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
  <head>
    <title>Core out tag</titile>
  </head>
  <body>
    <c:url url="/query" var="u">
      <c:param name="q" value="日本語" />
    </c:url>
    <a href="${u}">検索</a>
  </body>
</html>

JSTL (JavaServer Pages Standard Tag Library)

JSP標準タグライブラリ(JSTL)には、他にも次のタグがある。