TOMCATの JSP から Scala をどう使ってみるのがいいのかをさらに探ります。
1レコードの格納方式をタプルから List に変えてみます。
変更点は while ループのなかで宣言したone が List が追加されたことだけです。
実行結果はこれだけの違いなのですが大違い。
package SeeDo import java.sql.{DriverManager, Connection, Statement, ResultSet,SQLException} import java.util.Date import java.util.ArrayList class OracleSelect2 { var jdbcURL = "jdbc:oracle:thin:@192.168.0.105:1521:ORCL" def oracle : ArrayList[Any] = { var list = new ArrayList[Any] try { Class.forName("oracle.jdbc.driver.OracleDriver").newInstance() var con = DriverManager.getConnection(jdbcURL,"scott","tiger") try { var stmt = con.createStatement() var rs = stmt.executeQuery("SELECT * FROM EMP") while (rs.next()){ val one = List(rs.getInt("empno") , rs.getString("ename") , rs.getString("job") , rs.getInt("mgr") , rs.getDate("hiredate") , rs.getInt("deptno") , rs.getInt("sal") ) list.add(one) } stmt.close(); } catch { case e:SQLException => println("Database error "+e) case e => { println("Some other exception type:") e.printStackTrace() } } finally { con.close() } } catch { case e:SQLException => println("Database error "+e) case e => { println("Some other exception type:") e.printStackTrace() } } list } }
JSP 側もこれに合わせて変更します。
<%@ page contentType="text/html;charset=MS932" %> <%@ page import = "java.util.*" %> <%@ page import = "scala.*" %> <%@ page import = "scala.collection.immutable.*" %> <%@ page import = "SeeDo.*" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>Scala test</title></head> <BODY><TABLE border='2'> <% OracleSelect2 o = new OracleSelect2(); ArrayList list = o.oracle(); for(int i = 0; i < list.size();i++){ %> <TR><TH><%=i%></TH><TD><%=list.get(i).getClass()%></TD><TD><%=list.get(i)%></TD></TR> <% } %> </TABLE> </BODY></html>
Scala の List クラスを JSP(Java)から使おうとするのですが、うまくいきません。
やはり、JSP から使うのであれば、Scala 側からは Java クラスで返すのがよさそうです。
実行結果は以下のとおりです。
クラス名が scala.collection.immutable.$colon$colon となっています。
0 | class scala.collection.immutable.$colon$colon | List(7369, SMITH, CLERK, 7902, 1980-12-17, 20, 800) |
---|---|---|
1 | class scala.collection.immutable.$colon$colon | List(7499, ALLEN, SALESMAN, 7698, 1981-02-20, 30, 1600) |
2 | class scala.collection.immutable.$colon$colon | List(7521, WARD, SALESMAN, 7698, 1981-02-22, 30, 1250) |
3 | class scala.collection.immutable.$colon$colon | List(7566, JONES, MANAGER, 7839, 1981-04-02, 20, 2975) |
4 | class scala.collection.immutable.$colon$colon | List(7654, MARTIN, SALESMAN, 7698, 1981-09-28, 30, 1250) |
5 | class scala.collection.immutable.$colon$colon | List(7698, BLAKE, MANAGER, 7839, 1981-05-01, 30, 2850) |
6 | class scala.collection.immutable.$colon$colon | List(7782, CLARK, MANAGER, 7839, 1981-06-09, 10, 2450) |
7 | class scala.collection.immutable.$colon$colon | List(7788, SCOTT, ANALYST, 7566, 1987-04-19, 20, 3000) |
8 | class scala.collection.immutable.$colon$colon | List(7839, KING, PRESIDENT, 0, 1981-11-17, 10, 5000) |
9 | class scala.collection.immutable.$colon$colon | List(7844, TURNER, SALESMAN, 7698, 1981-09-08, 30, 1500) |
10 | class scala.collection.immutable.$colon$colon | List(7876, ADAMS, CLERK, 7788, 1987-05-23, 20, 1100) |
11 | class scala.collection.immutable.$colon$colon | List(7900, JAMES, CLERK, 7698, 1981-12-03, 30, 950) |
12 | class scala.collection.immutable.$colon$colon | List(7902, FORD, ANALYST, 7566, 1981-12-03, 20, 3000) |
13 | class scala.collection.immutable.$colon$colon | List(7934, MILLER, CLERK, 7782, 1982-01-23, 10, 1300) |
コメントを残す
コメントを投稿するにはログインしてください。