プログラミング逆引き辞典

~ 多言語対応のプログラミングレシピ ~

【詳解】JSTL

カスタムタグ(JSTL)

【事前準備】
下記2つのJARファイルをダウンロード(Files欄のjar)し、Eclipseにインストールする
①jstl-api-1.2.jar
リンク先
 
②jstl-impl-1.2.jar
リンク先
 
③JARファイルをWEB-INF配下のlibディレクトリ直下に配置

 
 
【基本構文】
<%@ taglib prefix="接頭辞" uri="使用するタグライブラリのURI" %>
 
【ポイント】
・JSTLは下記5つのタグライブラリで構成されている
  ⅰ.Core:変数、条件分岐、ループ処理等の基本的な処理に関するタグ
  ⇒<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
 
  ⅱ.I18N:数値や日付のフォーマット、国際化対応に関するタグ
  ⇒<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
 
  ⅲ.Database:データベース操作に関するタグ
  ⇒<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
 
  ⅳ.XML:XML操作に関するタグ
  ⇒<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
 
  ⅴ.Functions:コレクションや文字列を操作する関数
  ⇒<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
 
 
【使用例】 ※Coreタグ
・JavaBeansクラス:Model.java


package model;

import java.io.Serializable;

public class Model implements Serializable {
    private String name;
    private int age;

    public void setName(String name) {
        this.name = name;
    }
    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }
    public int getAge() {
        return age;
    }
}

 
・サーブレットクラス:Model.java


package controller;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import model.Model;

/**
 * Servlet implementation class mainController
 */
@WebServlet("/mainController")
public class MainController extends HttpServlet {
    private static final long serialVersionUID = 1L;

    public MainController() {
        super();
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Model model = new Model();
        model.setName("田中");
        model.setAge(25);
        request.setAttribute("model", model);

        RequestDispatcher rd = request.getRequestDispatcher("/main.jsp");
        rd.forward(request, response);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    }

}

 
・JSPファイル:main.jsp


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSPの構成要素</title>
</head>
<body>
    <h1>メインページ</h1>
    <!-- <c:out>タグ -->
    <p><c:out value="${model.name}" /></p>

    <!-- <c:if>タグ -->
    <c:if test="${model.age>= 20}">
        <p>20歳以上です</p>
    </c:if>

    <!-- <c:choose>タグ -->
    <c:choose>
        <c:when test="${model.age>= 30}">
            <p>30以上</p>
        </c:when>
        <c:when test="${model.age>=26}">
            <p>26以上</p>
        </c:when>
        <c:otherwise>
            <p>それ以外</p>
        </c:otherwise>
    </c:choose>
</body>
</html>

 
 


■おまけ forEach

Javaの拡張for構文のようなもの

<c:forEach var="list" items="${todoList}">
<c:out value="${list.memo}" />
</c:forEach>