marunomaruno-memo

marunomaruno-memo

JSP で表示するための一工夫

2009年11月16日 | Java
JSP で表示するための一工夫
================================================

■自分自身の Web アプリケーションのパス

リンクの href 属性や、フォームの action 属性など
で URL を指定するときに、自分自身の Web アプリ
ケーションのパスを動的に取得します。

□使い方の例
---
  <form action="${pageContext.request.contextPath}/cart" method="post">
---


${pageContext.request.contextPath} は、
HttpServletRequest インターフェースの
getContextPath() メソッドで取得できるので、EL で
は、これを利用しています。


■クロスサイトスクリプティング対策

基本的には、表示するところで山括弧「<」「>」など
をエスケープします。これをサニタイジングといいま
す。
このための JSTL のタグとして、out タグがあります。

□使い方の例
---
  <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    :
  <c:out value="${product.name}"/>
---


単純に ${product.name} だけにすると、この name
の中に HTML のタグがあった場合、意図したとおりの
表示になりません。
out タグを使うことで、「<」「>」「&」「'」「"」
をそれぞれ「&lt;」「&gt;」「&amp;」「&apos;」
「&quot;」にエスケープします。


■数値をフォーマットして表示

数値 3桁区切りにしたり、通貨記号をつけて表示しま
す。

□使い方の例
---
  <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
      :
  <fmt:formatNumber value="${product.price}" 
                    type="currency" currencySymbol="" 
                    maxFractionDigits="0"/>
---


□表示結果 (price が 12345 のとき)
---
   12,345
---


この formatNumber タグは、JSTL のコアタグではな
く、国際化タグなので、コアタグの taglib ディレク
ティブとは別に、fmt タグに対する taglib ディレク
ティブを指定する必要があります。

□属性の補足

type "currency" を指定すると、通貨の形式(3桁
区切りで小数点以下第2位まで表示)

currencySymbol 通貨単位。「」を表示する場合は、
「」のようにエスケープする。

maxFractionDigits 小数点以下の最大の桁数。円の
ときは、小数点以下がないのが
普通なので、0 を指定しておく。


以上


最新の画像もっと見る

コメントを投稿