JSP 9章 親子タグ
- 9.1. TLDの設定
- 9.2. TransactionTagの実装
- 9.3. UpdateTagの実装
- 9.4. JSPページで実行
9.2. TransactionTagの実装
「TransactionTag」を実装します。「TransactionTag」はボディ部を利用しませんので、「TagSupport」のサブクラスとして実装します。
...
public class TransactionTag extends TagSupport{
private String jdbcURL;
private String user;
private String password;
public void setJdbcURL(String jdbcURL){
this.jdbcURL=jdbcURL;
}
...
public int doStartTag() throws JspException{
try{
Class.forName("org.postgresql.Driver");
}catch(ClassNotFoundException e){
throw new JspException(e.getMessage());
}
try{
Connection conn=DriverManager.getConnection(jdbcURL,user,password);
conn.setAutoCommit(false);
setValue("connection",conn);
}catch(SQLException e){
throw new JspException(e.getMessage());
}
return(EVAL_BODY_INCLUDE);
}
public int doEndTag() throws JspException{
Connection conn=(Connection)getValue("connection");
try{
conn.commit();
conn.close();
}catch(SQLException e){
throw new JspException(e.getMessage());
}
return(EVAL_PAGE);
}
}
「jdbcURL」「user」「password」の3つの属性がありますので、それぞれのsetterメソッドを実装します。続いて「doStartTag」でDBへの接続処理、「doEndTag」でコミットと切断処理を行っています。この例では、接続によって得られた「Connection」インスタンスを「connection」という名前で「TagSupport」に登録(setValue)している点に注意してください。子クラスである「UpdateTag」からも「connection」という名前でインスタンスを取得(getValue)する事になります。「doEndTag」内でも同様の処理を行っているので参考になるでしょう。

