9. 親子タグ
JSP 9章 親子タグ
- 9.1. TLDの設定
- 9.2. TransactionTagの実装
- 9.3. UpdateTagの実装
- 9.4. JSPページで実行
親子タグとは、連動して1つの処理を行う、包含関係にある複数のタグのことです。この章では親子タグの例として、以下のようなデータベースの処理を行うものを考えます。
<%@ taglib uri="http://www.techscore.com/tags/example" prefix="example" %> ... <example:Transaction jdbcURL="jdbc:postgresql:Training" user="postgres" password=""> <example:Update>insert into product values(250,'Mist','compact car','150')</example:Update> <example:Update>update product set price=900 where p_num=111</example:Update> </example:Transaction> ...
「Transaction」タグはタグで囲まれた範囲を、一連のトランザクションとして処理するものです。属性で指定されたDBへの接続・切断処理と、コミットを行います。「Update」タグはボディ部で指定されたSQL文を処理します。例ではJDBCの章で用いられているPostgreSQLの「product」テーブルを対象に接続設定・SQL文を記載しています。適当なものに置き換えて読み替えてください。
9.1. TLDの設定
タグハンドラクラスの実装から先に進めても良いですが、ここでは先にTLDの設定を行う事にします。まず初めに「Transaction」タグの設定です。
... <tag> <name>Transaction</name> <tag-class>TransactionTag</tag-class> <body-content>JSP</body-content> <attribute> <name>jdbcURL</name> <required>true</required> </attribute> <attribute> <name>user</name> <required>true</required> </attribute> <attribute> <name>password</name> <required>true</required> </attribute> </tag> ...
タグハンドラクラスの名前は「TransactionTag」としています。ボディ部には「Update」タグや他のものが含まれますので、<body-content>は「JSP」とします。属性はJDBCを介してDBに接続する際に必要な3つの引数、「jdbcURL」「user」「password」を設定します。全て必須ですので<required>は「true」とします。
続いて「Update」タグの設定です。
... <tag> <name>Update</name> <tag-class>UpdateTag</tag-class> <body-content>Tagdependent</body-content> </tag> ...
タグハンドラクラスの名前は「UpdateTag」、ボディ部にはSQL文のみが記載されるので<body-content>は「Tagdependent」としています。