やっと動的WebアプリでJNDIを使ってDBをアクセスできた。
道のりは長かった。
Apache Tomcat 8.0.53 / JNDI Datasource HOW-TO を参考にした。
(https://tomcat.apache.org/tomcat-8.0-doc/jndi-datasource-examples-howto.html#MySQL_DBCP_Example)
サーバの contex.xml に JNDI DataSource の設定をした。
jdbc/testDB という名のリソースを定義。
<Resource name="jdbc/testDB" auth="Container" type="javax.sql.DataSource"
..... url="jdbc:mysql://localhost:3306/ichojuku"/>
ichojukuはDB名である。
Webアプリ TestJ のweb.xml に resource-ref タグを入れ、
このリソースを指定した。
JSPではsql:queryタグを使った。
使用例
①ボディ部を利用する。
<sql:query>タグのボディ部にSELECT文を指定することでSQLを実行することができる。
以下は(SELECT * FROM user)を実行し、結果をqueryに格納する。
<sql:query var="query" dataSource="${db}">
SELECT * FROM user
</sql:query>
②sql属性を指定する。
<sql:query>タグのsql属性にsqlクエリを指定することで、SQLを実行することができる。
また、<sql;param>タグでSQLにパラメータを渡すことができる。
以下は(SELECT * FROM user where id ='0001')を実行し、結果をqueryに格納する。
<c:set var="s" value="SELECT * FROM user where id=?"/>
<sql:query var="query" dataSource="${db}" sql="${s}">
<sql:param value="0001"/>
</sql:query>
なお、JSPには c:set, c:forEach などのタグが使われていた。
0 件のコメント :
コメントを投稿