SAK 図書館

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

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 編資料
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索



Copyright (C) 1999-2024 Y.SAK