ScalaとWebとの組み合わせです。
ScalaでWebアプリケーションを作ってみます。
ServletよりJSPが好きなので、まず最初にJSPから試してみます。
Scala のクラスをJSPの中で使うには、import=”scala.*” でインポートすればOKです。
自分で作った Scala クラスも同様に import = “SeeDo.*” でインポートします。Scalaで作ったクラスはSeeDoパッケージとして実装したのでこのようになっています。
TOMCAT側の準備は、OracleSelect.class ファイルをプロジェクトフォルダの WEB-INF/classes フォルダに置きます。
WEB-INF/lib フォルダにはScalaのJarファイルを一式コピーします。
Servletではないので設定ファイルをさわる必要はありません。
JPS では Scala の OracleSelect クラスを New ます。Java言語なので ( ) を付けます。oracle( ) メソッドを呼び出せばデータベースにアクセスします。
データベースを SELECT した結果は、JavaのArrayList を返すように Scalaで実装していますから、get( i ) で1レコードずつ取り出せます。
1レコードの各カラム値は scala.Tuple7 クラスに格納されています。
レコードカラムの各データは _1( ) メソッドで取ることができますが、使い勝手はよくないです。
<%@ page contentType="text/html;charset=MS932" %> <%@ page import = "java.util.*" %> <%@ page import = "scala.*" %> <%@ page import = "SeeDo.*" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>Scala test</title></head> <BODY><TABLE border='2'> <% OracleSelect o = new OracleSelect(); ArrayList list = o.oracle(); for(int i = 0; i < list.size();i++){ scala.Tuple7 b = (scala.Tuple7)list.get(i); %> <TR> <TH><%=i%></TH><TD><%=b.getClass()%></TD> <TD><%=b._1()%></TD><TD><%=b._2()%></TD><TD><%=b._3()%></TD><TD><%=b._4()%></TD> <TD><%=b._5()%></TD><TD><%=b._6()%></TD><TD><%=b._7()%></TD> </TR> <% } %> </TABLE><HR> <%= o.text() %> </BODY></html>
上の表は JSP側で oracle( ) メソッドを呼び出してArrayList を受け取り、for ループで1レコードずつ取り出して各カラムにテーブルタグを付加して作ったものです。
下の表はtext( ) メソッドを呼び出してScalaクラス側でテーブルタグに加工してStringとして出力して作ったものです。
実行結果は、以下の表が表示されます。
getClss( ) でクラス名を見ると scala.Tuple7 が使われていることがわかります。
0 | class scala.Tuple7 | 7369 | SMITH | CLERK | 7902 | 1980-12-17 | 20 | 800 |
---|---|---|---|---|---|---|---|---|
1 | class scala.Tuple7 | 7499 | ALLEN | SALESMAN | 7698 | 1981-02-20 | 30 | 1600 |
2 | class scala.Tuple7 | 7521 | WARD | SALESMAN | 7698 | 1981-02-22 | 30 | 1250 |
3 | class scala.Tuple7 | 7566 | JONES | MANAGER | 7839 | 1981-04-02 | 20 | 2975 |
4 | class scala.Tuple7 | 7654 | MARTIN | SALESMAN | 7698 | 1981-09-28 | 30 | 1250 |
5 | class scala.Tuple7 | 7698 | BLAKE | MANAGER | 7839 | 1981-05-01 | 30 | 2850 |
6 | class scala.Tuple7 | 7782 | CLARK | MANAGER | 7839 | 1981-06-09 | 10 | 2450 |
7 | class scala.Tuple7 | 7788 | SCOTT | ANALYST | 7566 | 1987-04-19 | 20 | 3000 |
8 | class scala.Tuple7 | 7839 | KING | PRESIDENT | 0 | 1981-11-17 | 10 | 5000 |
9 | class scala.Tuple7 | 7844 | TURNER | SALESMAN | 7698 | 1981-09-08 | 30 | 1500 |
10 | class scala.Tuple7 | 7876 | ADAMS | CLERK | 7788 | 1987-05-23 | 20 | 1100 |
11 | class scala.Tuple7 | 7900 | JAMES | CLERK | 7698 | 1981-12-03 | 30 | 950 |
12 | class scala.Tuple7 | 7902 | FORD | ANALYST | 7566 | 1981-12-03 | 20 | 3000 |
13 | class scala.Tuple7 | 7934 | MILLER | CLERK | 7782 | 1982-01-23 | 10 | 1300 |
7369 | SMITH | 20 |
7499 | ALLEN | 30 |
7521 | WARD | 30 |
7566 | JONES | 20 |
7654 | MARTIN | 30 |
7698 | BLAKE | 30 |
7782 | CLARK | 10 |
7788 | SCOTT | 20 |
7839 | KING | 10 |
7844 | TURNER | 30 |
7876 | ADAMS | 20 |
7900 | JAMES | 30 |
7902 | FORD | 20 |
7934 | MILLER | 10 |
コメントを残す
コメントを投稿するにはログインしてください。