目次へ

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」内でも同様の処理を行っているので参考になるでしょう。

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp