JSPでJava式の結果を出力するには?c:outタグの使い方を徹底解説
c:outタグとは
JSTLの<c:out>タグは、式の評価結果を画面に出力するためのタグです。スクリプトレットの<%= %>とほぼ同じ働きをしますが、最大の違いは「.」(ドット)記法を使ってプロパティへシンプルにアクセスできる点にあります。
たとえば、customer.address.streetという値を取得したい場合は、<c:out value="customer.address.street"/>のように記述するだけでOKです。
さらに、<c:out>タグはXMLの特殊文字を自動的にエスケープしてくれるため、出力した文字列がHTMLタグとして誤って評価される心配がありません。XSS(クロスサイトスクリプティング)対策の観点からも、スクリプトレットよりも安全な出力方法として推奨されています。
c:outタグの主な属性
<c:out>タグには、以下の属性が用意されています。
| 属性 | 説明 | 必須 | デフォルト値 |
|---|---|---|---|
| value | 出力したい情報(式の評価結果) | 必須 | なし |
| default | valueがnullの場合に出力されるフォールバック用の情報 | 任意 | body(タグのボディ内容) |
| escapeXml | XMLの特殊文字をエスケープするかどうか(trueで有効) | 任意 | true |
使用例
以下は、<c:out>タグを使って特殊文字を含む文字列を出力するサンプルコードです。
<%@ taglib uri = "https://java.sun.com/jsp/jstl/core" prefix = "c" %>
<html>
<head>
<title> <c:out> タグの使用例</title>
</head>
<body>
<c:out value = "${'<tag> , &'}"/>
</body>
</html>
上記のコードを実行すると、次のような結果が出力されます。
<tag> , &
このように、<tag>や&といった特殊文字がそのまま文字列として表示され、HTMLタグとして解釈されないことが確認できます。escapeXml属性はデフォルトでtrueになっているため、特別な設定なしでも安全な出力が可能です。
-
Javaの正規表現を使って文字列のすべての文字を1文字ずつ出力する方法
正規表現におけるメタ文字「.」は、改行以外のあらゆる1文字に一致します。この性質を利用すると、入力された文字列に含まれるすべての文字を1文字ずつ取り出して出力することができます。実装の手順Patternクラスのcompile()メソッドを使って、正規表現をコンパイルします。matcher()メソッドを使って、対象の文字列に対するMatcherオブジェクトを生成します。find()メソッドで一致箇所を順番に検索し、一致が見つかるたびにgroup()メソッドでマッチした内容(=1文字)を取得して出力します。サンプルコードimport java.util.Scanner; import java.u
-
Pythonの正規表現で変数を使う方法をわかりやすく解説
Pythonの正規表現(reモジュール)では、パターン文字列を作る際に文字列連結やf文字列を利用することで、変数の値をパターンの中に組み込むことができます。ただし、変数に含めてよいのは通常の文字列だけです。特殊文字やメタ文字、正規表現そのものが含まれると、意図しないマッチやエラーの原因になります。変数の内容が不定の場合は、re.escape() でエスケープしてから使うと安全です。サンプルコード次のコードは、文字列連結によって変数を正規表現パターンに埋め込む例です。import re s = I love books var_name = love result = re.search((.