【詳解】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>