1. はじめに
サーバーサイドスクリプトの実行環境はシンプルで使いやすく、コンパイルや接続が不要で、サーバーサイドで直接スクリプトを実行でき、マルチユーザー、マルチスレッドをサポートしており、広く利用されています。 Web開発で。サーバー側コンポーネントはクライアント側コンポーネントとは異なります。クライアント側コンポーネントはネットワーク経由で送信され、HTML に依存して機能し、IE でのみ使用できます。ただし、サーバー側コンポーネントはサーバー側で実行され、サーバー上でさまざまな操作を実行します。したがって、すべてのブラウザで楽しむことができ、ブラウザではなくサーバーに依存します。ただし、ASP スクリプトはプレーン テキスト形式であるため、悪意のある攻撃者は、ソース コードを通じて見るべきではないページ コンテンツを簡単に見ることができます。したがって、ASP ソース コードを保護することは非常に重要です。 ASP コードを DLL にカプセル化すると、ASP コードの実行が高速化されるだけでなく、元のコードも保護されます。 IIS が ASP プログラムの実行を要求されると、まず ASP ファイル内のタグ間のコードを見つけて実行します (タグ間のコードである場合もあります)。この ASP プログラムが以前に呼び出されている場合は、メモリ内のコンパイル済みプログラムを使用して HTML コードをユーザーに返します。そうでない場合は、再コンパイルされます。これにより、サーバーのリソースが大幅に節約されます。
2. 実装方法
VBを起動し、ActiveXアイコンを選択します。このアイコンは新しいプロジェクトにあります。VB はデフォルトのプロジェクト名 (project1) とクラス名 (class1) を提供します。開始する前に、まず Microsoft ActiveX データ オブジェクト 2.0 ライブラリがあることを確認してください。これはプログラムで非常に役立ちます。メニューから「プロジェクト」を選択し、そこから「参照」を選択すると「参照」ウィンドウが表示されるので、「Microsoft ActiveX Data Object 2.0 Library」を選択します。
これで、独自のプロジェクト (project1) とクラス名 (class1) ができました。今後、ASP コードでこのコンポーネントを参照するためにそれらの名前を使用します。 ASP では、次のように引用します。
Set ObjReference = Server.CreateObject("ProjectName.ClassName")
クラスで ASP メソッドを使用するには、このクラスに初期化関数と終了関数を記述する必要があります。プログラムリストに次のコードを入力します。
Class1.cls の Private Sub Class_Initialize() と Private Sub Class_Terminate() は、
ASP コードの主要な関数をダイナミック リンク ライブラリ (.dll) に作成し、ASP ソース コードを部分的に隠します。 例: プログラム リストの Global.bas および Class1.cls に入力されたコード (コードの主な機能は、データベース内のレコードを取得して表示することです)。
[ファイル] → [article.dll の生成] → VB のドロップダウン メニューで保存するディレクトリを選択します。 Article.dll を見つけて、システム ディスクの system32 フォルダーにコピーします。最後の手順は、DLL ファイルを登録することです。 [スタート] メニューで [ファイル名を指定して実行] を選択し、「regsvr32 c:winntsystem32article.dll」と入力します。
3.
プログラム リスト Global.bas のコード:
ObjectContext としてのパブリック objContext
パブリック アプリケーションとして ASPTypeLibrary.Application として
パブリック サーバーとして ASPTypeLibrary.Server として
パブリック セッションとして ASPTypeLibrary.Session
として パブリック レスポンスとして ASPTypeLibrary.Response として
パブリック リクエストとして ASPTypeLibrary.Request として
Class1.cls のコード:
Private Sub Class_Initialize()
On Error Resume Next
Set objContext = GetObjectContext
Set Application = objContext.Item("Application")
Set Server = objContext.Item("Server")
Set Session = objContext.Item("Session")
Set Request = objContext .Item("リクエスト")
Set Response = objContext.Item("レスポンス")
End Sub
Private Sub Class_Terminate()
On Error Resume Next
Set Application = なし
Set Server = なし
Set Session = なし
Set Request = なし
Set Response = なし
Set objContext = なし
End Sub
Public Sub AspClassInit()
エラー時の GoTo エラー
Set conn = Server.CreateObject("ADODB.Connection")
strcon = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Server.MapPath("Article .mdb")
conn.Open strcon
Set rs = Server.CreateObject("ADODB.Recordset")
sql = "select * from Article order by ArticleID desc"
rs.Open sql, conn, 1, 1
Response.Write "<html> " &vbCrLf
Response.Write "<head>" & vbCrLf
Response.Write "<meta http-equiv=""Content-Type"" content=""text/html; charset=gb2312"">" & vbCrLf
Response.Write "<title>記事管理システム-CSSTUDIO</title>" & vbCrLf
Response.Write "</head>" & vbCrLf
Response.Write "<body bgcolor=""#FFFFFF"" topmargin=""0"">" & vbCrLf
Response.Write "<table width=""100%"" border=""0"" cellpadding=""2"" cellpacing=""0"">" & vbCrLf
Response.Write " <tr>" & vbCrLf
Response.Write " <td width=""742"" height=""20"">記事タイトル</td>" & vbCrLf
Response.Write " <td width=""90"">クリック</td>" & vbCrLf
Response.Write " <td width=""145"">日付の追加</td>" & vbCrLf
Response.Write " </tr>" & vbCrLf
Response.Write "</table>" & vbCrLf
rs.EOF および行数 < rs.PageSize ではない場合
Response.Write "<table width=""100%"" border=""0"" cellpacing=""0"" cellpadding=""0"">" & vbCrLf
Response.Write " <tr>" & vbCrLf
Response.Write " <td width=""747"" height=""20"">☆<a href=""view.asp?id="
Response.Write rs("記事ID")
Response.Write """>" & vbCrLf
応答。「」を書き込みます。
Response.Write rs("タイトル")
Response.Write "</a></td>" & vbCrLf
Response.Write " <td width=""94"">"
Response.Write rs("クリック")
Response.Write "</td>" & vbCrLf
Response.Write " <td width=""148"">"
Response.Write rs("日付を追加")
Response.Write "</td>" & vbCrLf
Response.Write " </tr>" & vbCrLf
Response.Write "</table>" & vbCrLf
rs.次へ移動
ウェン
Response.Write "</body>" & vbCrLf
Response.Write "</html>" & vbCrLf
rs.Close
Set rs = なし
conn.Close
Set conn = なし
Exit Sub
エラー:
Err.Number = -13572468 の場合、Sub を終了
、次のEnd Sub
を再開
Article.dll を使用した後の Index.asp のコード:
<%Dim AspTransBuilderObject
Set AspTransBuilderObject = Server.CreateObject("article.Class1")
AspTransBuilderObject.AspClassInit
Set AspTransBuilderObject = Nothing%>
Article.dll を使用する前に、index.asp にコードを記述します。
<% Set conn=Server.CreateObject("ADODB.Connection")
strcon = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"データ ソース=" & Server.MapPath("Article.mdb")
conn.Open strcon %>
<% Set rs = Server.CreateObject ("ADODB.Recordset")
sql="select * from Article order by ArticleID desc"
rs.Open sql, Conn,1,1 %>
<html>
<ヘッド>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>記事管理システム-CSSTUDIO</title>
</head>
<body bgcolor="#FFFFFF" topmargin="0">
<テーブル幅="100%" ボーダー="0" セルパディング="2"
セルスペース="0">
<tr>
<td width="742" height="20">記事のタイトル</td>
<td width="90">クリック</td>
<td width="145">日付を追加</td>
</tr>
</テーブル>
<% While Not Rs.Eof And Rows<Rs.PageSize %>
<テーブル幅="100%" ボーダー="0" セルスペース="0"
cellpadding="0">
<tr>
<td width="747" height="20">☆<a href="view.asp?id=<%
= rs("記事ID") %>">
<% =rs("タイトル") %></a></td>
<td width="94"><% = rs("click") %></td>
<td width="148"><% = rs("追加日") %></td>
</tr>
</テーブル>
<% Rs.MoveNext
ウェン %>
</body>
</html>
<% rs.close
rs=何も設定しない
接続閉じる
conn=何も設定しない %>
4. 結論
これらのコードはサーバー側で実行されるため、クライアントは何もインストールする必要はありません。これは、ActiveX DLL で実現できることのほんの一例にすぎません。独自のより大きなコンポーネントを作成でき、VB で多くのコントロールを使用することもできます。コンポーネントを使用してプログラムの機能を拡張しましょう。また、中国人の皆様からのコンポーネントの追加も期待しています。この記事が出発点として役立つことを願っています。