こんにちは。ハンドルネーム「Javaを復習する初心者」です。このサイトはプログラミング言語Javaの復習・学習をするブログです。プログラムの開発・実行はEclipseで行ってます。
スポンサーリンク
お知らせ
  • 参考文献のページ作りました。
  • Amazon.co.jpアソシエイトに参加していますが、参考文献の紹介はもしもアフィリエイトに統一しました。
  • 2016年10月9日からは投稿ペースを落とします。週1回くらいにする予定です。
スポンサーリンク

JSTLのCoreライブラリのsetを使う

こんにちは。「Javaを復習する初心者」です。JSPでJSTLというライブラリを使ってみました。今回はsetタグを試しました。

JSTL(JSP Standard Tag Library)というライブラリにはカスタムタグが定義されています。このライブラリを使うためには以下のjarファイルが必要です。

  • javax.servlet.jsp.jstl-1.2.1.jar
  • javax.servlet.jsp.jstl-api-1.2.1.jar

setタグ

JSTLに定義されているカスタムタグはいくつかのカスタムライブラリでまとめられているようです。今回はCoreライブラリのsetタグを使ってみました。

以下は「Hello World.」を出力するjspファイルです。

<%@ page contentType="text/html;charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<c:set var="Hello" value="Hello World." />

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>test</title>
</head>
<body>

${Hello}

</body>
</html>

「@ taglib」ディレクティブの「prefix=”c” uri=”http://java.sun.com/jsp/jstl/core”」の記述はcoreタグをcというプレフィックスで使うための記述です。「c:set」という記述をすることができます。

c:setタグで「Hello World.」という値を変数Helloに格納しています。「${Hello}」で出力ができるようです。

リクエストスコープから値を設定

リクエストスコープから値を設定することができるようです。以下は、リクエストスコープの配列をsetタグで格納しています。

<%@ page contentType="text/html;charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<%

String[] strs = {"a", "b"};
request.setAttribute("strs", strs);

%>

<c:set var="myStrs" value="${strs}" />

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>test</title>
</head>
<body>

${myStrs[0]}<br>
${myStrs[1]}<br>

</body>
</html>

配列の要素を出力する場合、「${myStrs[0]}」というように要素番号を指定できます。

DTOを使う

最後に、DTOクラスを作って実験してみました。以下のDTOを使って格フィールドの値を出力してみました。

package dto;

public class Person {

    private String name;
    private int age;

    public Person() {
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

}

使ったJSPファイルは以下です。

<%@ page contentType="text/html;charset=UTF-8" %>
<%@ page import="dto.Person"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<%

Person person = new Person("name1", 21);
request.setAttribute("person", person);

%>

<c:set var="myPerson" value="${person}" />

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>test</title>
</head>
<body>

${myPerson.name}<br>
${myPerson.age}<br>

</body>
</html>

リクエストスコープにPersonクラスのインスタンスを格納しています。setタグで変数myPersonにリクエストスコープのpersonを設定しています。この場合、「${myPerson.name}」のようにしてフィールドの値を表示することができるようです。内部的にはフィールドに対するゲッターが使われているようです。ゲッターをコメントアウトすると500エラーが表示されました。