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