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 編資料