SAK 図書館
ASP VB Script 基礎実地編9 - JAVA サーバーサイドスクリプト、その他
■JAVA サーバーサイドスクリプト ・ASP では、サーバサイドスクリプトとして、JAVA も使用できる。 VB Script と混在使用も可能である。 一時的に JAVA Script を使用するときは、次のスタイルで記述する。 ・グローバル位置の ver 変数は、JAVA と VB で共有される。 VB のグローバル dim 変数も JAVA 中でアクセスできる。 ・JAVA の文字リテラル引用句は、「"」と「'」のどちらでも使用できる。 SQL 構文には「'」が含まれるので、引用句として「"」を使うと便利である。 逆に HTML タグを扱う場合は、タグに「"」が含まれるので、引用句として 「'」を使うと良い。 ・JAVA の構文は、クライアントサイドスクリプトと同じである。 但し、サーバサイドでは document.write() などのクライアントオブジェク トは当然使えない。 代わりに response.write() を VB Script と同様に使用する。 <SCRIPT LANGUAGE="JavaScript" RUNAT = "server"> ver dbi = "*"; ver dbf = "sak.テストm"; ver dbo = "order by キー"; ver sql, dbw, p1; p1 = request.form('p1'); sql = "select " + dbi + " from " + dbf + " where キー like '" + p1 + "%' " + dbo; </SCRIPT> ■VB、JAVA 、サーバーサイドスクリプト、クライアントサイドスクリプト ・変数等のデータをスクリプト間でやり取りするパターンとして、 1) 関数の引数をアドレス渡し、値渡しする 2) 変数等のデータを異なる ASP 言語スリクプト間で受け渡しする 3) 変数等のデータをサーバサイドスリクプトとクライアントサイド スリクプト間で受け渡しする 4) 変数等のデータを別の filename.asp スクリプトにまたがって受け渡し する 等がありますが、「4)」については、ASP の ・request.querystring ・request.form ・クッキーによる受け渡し ・session 変数による受け渡し ・server.Transfer ・ファイルによる受け渡し で、目的に合うものを使用して、ページ間でデータを受け渡しできます。 「1) 〜 3)」については、次のサンプルのとおり受け渡しできます。 ・VB サーバーサイドスクリプトから、JAVA サーバーサイドスクリプトへの 変数の受け渡しと、VB サーバーサイドスクリプトから、JAVA クライアント サイドスクリプトへの変数の受け渡し例です。 尚、VB、JAVA、サーバーサイドスクリプト、クライアントサイドスクリプト の組み合わせが逆でも理屈は同じです。 <%@ Language=VBScript %> <HTML> <HEAD> </HEAD> <BODY> <% '======================================================================= ' ASP VB サーバサイドスクリプト '======================================================================= const E_MAX = 4 dim a dim b dim c dim d redim e(E_MAX) dim rcd dim i '** 準備 a = 100 b = 200 c = 300 d = "def" for i = 0 to E_MAX e(i) = int(rnd(1) * 1000) next '** ASP VB サーバサイドスクリプト関数呼び出し rcd = TestVarVB(b, c, d, e, E_MAX) '** ASP JAVA サーバサイドスクリプト関数呼び出し rcd = TestVarJA(b + 0, c, d & "", e, E_MAX) '|_ 値渡しする場合は、数値なら「+ 0」、 ' 文字列なら「& ""」とする。 '======================================================================= ' ASP VB サーバサイドスクリプト関数 '======================================================================= function TestVarVB(byval p1, p2, byval p3, p4, p5) dim i '** 変数 a は、VB サーバサイドスクリプトのグローバル変数 '** 変数 p1 と p3 は、byval で値渡し response.write("-- ASP VB サーバサイドスクリプト関数より表示 --<BR>") response.write("a = " & a & "<BR>" & vbcrlf) response.write("b = " & p1 & "<BR>" & vbcrlf) response.write("c = " & p2 & "<BR>" & vbcrlf) response.write("d = " & p3 & "<BR>" & vbcrlf) for i = 0 to p5 response.write("e(" & i & ") = " & p4(i) & "<BR>" & vbcrlf) next response.write("<BR>" & vbcrlf) '** 戻り値セット TestVar2 = 0 end function %> <SCRIPT LANGUAGE="JavaScript" RUNAT = "server"> /* ======================================================================== ASP JAVA サーバサイドスクリプト関数 ======================================================================== */ function TestVarJA(p1, p2, p3, p4, p5) { var i; // 変数 a は、VB サーバサイドスクリプトのグローバル変数 // 変数 p1 と p3 は、VB サーバサイドスクリプトからの引数 b + 0、d & "" response.write('-- ASP JAVA サーバサイドスクリプト関数より表示 --<BR>'); response.write('a = ' + a + '<BR>\n'); response.write('b = ' + p1 + '<BR>\n'); response.write('c = ' + p2 + '<BR>\n'); response.write('d = ' + p3 + '<BR>\n'); for (i = 0; i <= p5; i++) { response.write('e[' + i + '] = ' + p4[i] + '<BR>\n'); // ↑ VB の配列と JAVA の Array 配列 // に互換がないのか undefined が返る // 指定方法がありそうに思うのだが... } response.write('<BR>\n'); // 戻り値セット return(0); } </SCRIPT> <SCRIPT LANGUAGE=javascript> <!-- /* ======================================================================== HTML JAVA クライアントサイドスクリプト ======================================================================== */ var E_MAX = <% = E_MAX %>; var aj = <% = a %>; var bj = <% = b %>; var cj = <% = c %>; var dj = '<% = d %>'; var ej = new Array(E_MAX + 1); var i; // 準備 <% for i = 0 to E_MAX response.write(" ej[" & i & "] = " & e(i) & ";" & vbcrlf) next %> // 変数 a、b、c、d、e() は、VB サーバサイドスクリプトのグローバル変数 document.write('-- HTML JAVA クライアントサイドスクリプトより表示 --<BR>'); document.write('a = ' + aj + '<BR>'); document.write('b = ' + bj + '<BR>'); document.write('c = ' + cj + '<BR>'); document.write('d = ' + dj + '<BR>'); for (i = 0; i <= E_MAX; i++) { document.write('e[' + i + '] = ' + ej[i] + '<BR>'); } document.write('<BR>'); //--> </SCRIPT> </BODY> </HTML> ・ブラウザ表示結果は次のようになる。 -- ASP VB サーバサイドスクリプト関数より表示 -- a = 100 b = 200 c = 300 d = def e(0) = 705 e(1) = 533 e(2) = 579 e(3) = 289 e(4) = 301 -- ASP JAVA サーバサイドスクリプト関数より表示 -- a = 100 b = 200 c = 300 d = def e[0] = undefined ← 【エラー】 JAVA の Array と互換がない?? e[1] = undefined ← 【エラー】 JAVA の Array と互換がない?? e[2] = undefined ← 【エラー】 JAVA の Array と互換がない?? e[3] = undefined ← 【エラー】 JAVA の Array と互換がない?? e[4] = undefined ← 【エラー】 JAVA の Array と互換がない?? -- HTML JAVA クライアントサイドスクリプトより表示 -- a = 100 b = 200 c = 300 d = def e[0] = 705 e[1] = 533 e[2] = 579 e[3] = 289 e[4] = 301 ・実際にブラウザにレスポンスされた HTML は、次のとおり。 <HTML> <HEAD> </HEAD> <BODY> -- ASP VB サーバサイドスクリプト関数より表示 --<BR>a = 100<BR> b = 200<BR> c = 300<BR> d = def<BR> e(0) = 705<BR> e(1) = 533<BR> e(2) = 579<BR> e(3) = 289<BR> e(4) = 301<BR> <BR> -- ASP JAVA サーバサイドスクリプト関数より表示 --<BR>a = 100<BR> b = 200<BR> c = 300<BR> d = def<BR> e[0] = undefined<BR> e[1] = undefined<BR> e[2] = undefined<BR> e[3] = undefined<BR> e[4] = undefined<BR> <BR> <SCRIPT LANGUAGE=javascript> <!-- /* ======================================================================== HTML JAVA クライアントサイドスクリプト ======================================================================== */ var E_MAX = 4; var aj = 100; var bj = 200; var cj = 300; var dj = 'def'; var ej = new Array(E_MAX + 1); var i; // 準備 ej[0] = 705; ej[1] = 533; ej[2] = 579; ej[3] = 289; ej[4] = 301; // 変数 a、b、c、d、e() は、VB サーバサイドスクリプトのグローバル変数 document.write('-- HTML JAVA クライアントサイドスクリプトより表示 --<BR>'); document.write('a = ' + aj + '<BR>'); document.write('b = ' + bj + '<BR>'); document.write('c = ' + cj + '<BR>'); document.write('d = ' + dj + '<BR>'); for (i = 0; i <= E_MAX; i++) { document.write('e[' + i + '] = ' + ej[i] + '<BR>'); } document.write('<BR>'); //--> </SCRIPT> </BODY> </HTML> ■ASP VB Script 基礎実地編資料
■ASP VB Script 基礎編資料
■ASP VB Script ADO + SQL 応用編資料
■ASP VB Script oo4o + SQL 応用編資料
■SQL 基礎編資料
■SQL 基礎実地編資料
■SQL チューニング編資料
■Oracle PL/SQL 編資料
■PostgreSQL 編、JAVA Servlet、JSP 編資料
■MySQL 編資料