4。ASPコンポーネントの開発と使用:
1。コンポーネントは何ですか?
利点:
nは簡単に電話をかけ、コードを保存します
高い安全性
nsupportトランザクション処理、マルチコンポーネントユニオン
nfastランニング速度
コンポーネントをアップグレードして変更するためにページを変更する必要はないので、スケーラビリティが優れています
l短所:
開発とデバッグの困難
2。 VBを使用して開発する方法は?
⑴。 VBを開く>> newProject >> ActiveX dll
⑵。プロジェクト名をコースに変更します
⑶。クラスモジュールの名前をconn_dbに変更する
⑷.プロジェクト>>参照、com+サービスタイプライブラリおよびMicrosoft Active Server Pagesオブジェクトライブラリへの参照。
⑸.次のようにクラスコードを変更します。
www.knowsky.comから
'データベース接続を作成し、データベースフィールドを出力します
応答としての薄暗い応答
リクエストとしてのDIMリクエスト
サーバーとしてのDIMサーバー
dimapplicationasアプリケーション
Dimsessionsセッション
private sub class_initialize()
objectContextとしてdim objcontext
objcontext = getObjectContext()を設定します
応答を設定= objContext(応答)
request = objcontext(request)を設定します
set server = objcontext(server)
application = objcontext(application)を設定します
セットセッション= objcontext(session)
End Sub
sub conn_db()
set conn = createObject(adodb.Connection)
conn.open course_dsn、course_user、course_password
rs = createObject(adodb.Recordset)を設定します
rs.open select * from user_info、conn、1、1
rs.RecordCount> 0の場合
i = 1からrs.recordCountの場合
respons.write <br>&rs(user_name)&<br>
rs.eofの場合は、entを終了します
rs.movenext
次
ifを終了します
rs.close
rs = Nothingを設定します
conn.close
conn =何も設定しません
End Sub
⑹.新しいクラスカットストールを追加します
⑺.次のようにクラスコードを変更します。
'文字列を傍受します
関数カットストール(str、長さ)
Len(str)> lengthの場合
cutstr = left(str、length)&...
それ以外
cutstr = str
ifを終了します
エンド関数
⑻。ファイル>>保存
⑼。ファイル>> make course.dll
3。登録コンポーネント:MTSおよびREGSVR32.EXE
コンポーネントを登録するには、MTSとREGSVR32.EXEの使用方法が2つあります。 MTSは次の利点があるため推奨されます。
n動的アンインストールバランスとコンポーネントとコンポーネントベースのアプリケーションのアップグレード性を改善します。
nには、イベントコンポーネントとキューコンポーネントを公開および送信する機能が含まれており、複数のコンポーネントと組み合わせることが容易になります。
コンポーネントを作成するには、MTS特性を持つには、コンポーネントに少し変更を加える必要があります。 NTと98の下で開発する場合、Microsoft Transaction Server Type Libraryをプロジェクトで参照する必要があり、Windows 2000で開発する場合は、COM+サービスタイプライブラリを参照する必要があります。
⑴。 regsvr32登録:
regsvr32.exeは、System 32の下の実行可能ファイルです。
コマンドラインを使用して、コンポーネントDLLファイルが配置されているディレクトリを入力し、regsvr32 dll_file_nameを実行します。
Regeditを実行し、Course.conn_dbとcourse.cutstrアイテムはhkey_classes_rootの下にあり、コンポーネントの登録が成功していることを示します。
⑵。 MTSに登録:
①。 Start >>プログラム>>管理ツール>>コンポーネントサービス
②。ディレクトリを次の状態に拡張します。
③。次のダイアログボックスまで次の手順に従ってください。[空のアプリケーションの作成]をクリックします。
④。次のダイアログボックスで、アプリケーションコースに名前を付け、その他のデフォルトは完了するまでです
⑤。コースアプリケーションを展開し、右クリックして新しいコンポーネントを作成します
⑥。プロンプトに従って、次のダイアログボックスが表示されたら、登録コンポーネントをインポートします。
⑦。作成したコンポーネントを選択します。次のステップが完了するまで
⑧。現時点では、コースアプリケーションの下に2つの追加コンポーネントがあることがわかります。
4。 ASPのコンポーネントの呼び出し
asp_use_com.asp
<%
'ASPはCOMコンポーネントを呼び出します
cutstr_obj = server.createObject(course.cutstr)を設定します
respons.write cutstr_obj.cutstr(abcdefghijk、3)&<br>
cutstr_obj =何も設定しません
conn_obj = server.createObject(course.conn_db)を設定します
conn_obj.conn_db()
conn_obj =何も設定しません
%>
効果:
ABC ...
ああ
チュット
コールが成功したことを意味します。
5。コンポーネントをアンインストールします
regsvr32を使用して、-uスイッチを使用してコンポーネントをアンインストールします。
注:最初にコンポーネントDLLが配置されているディレクトリを入力してから、regsvr32 –u dll_file_nameを使用してアンインストールした後に再起動します。
⑵。 MTS登録コンポーネントを使用して、最初にコンポーネントサービスで対応するアプリケーションを削除し、次にステップ1を実行してコンポーネントを完全にアンインストールします。
6。 DLLコンポーネントストレージの場所と許可設定
⑴。コンパイルされたDLLファイルをコピーするだけで、他のファイルを処理する必要はありません。
⑵。 System32ディレクトリなどのWebサイトの外にDLLを配置して、ダウンロードを防ぎます
⑶。 DLLのファイル権はシステムの読み取りに設定されており、インターネットユーザーはフォルダーを通過/ファイルを実行します
⑷. DLLは、読み取り、スクリプトへの自発的なアクセスなど、IISのすべてのアクセス許可を削除します。
上記の処理後、DLLファイルのセキュリティを確保できます。
7。他の
コンポーネント内のASPのオブジェクトを使用して、コンポーネントに便利なポートASPコードを使用する方法は?
5。IIS最適な構成
1。 [Webサイト]タブ:IP、ポート、仮想ホスト、接続、ログ
2。 ISAPIフィルター:PHPとJSPサポートを追加します
3。ホームディレクトリ構成タブ:私は許可設定(ファイルの権利と組み合わせて)、実行許可、アプリケーション保護、マッピング、バッファリング、親パス、エラー情報です
4。その他のタブ:カスタムエラー、HTTPヘッダー、ディレクトリセキュリティ、ドキュメント
5。ファイル圧縮の利点と短所
vi
1。電子メールを送信する(jmail; ms smtp)
Microsoft SMTPを使用して電子メールを送信します
⑴。 Microsoft SMTPサービスをインストールします
⑵。 Microsoft SMTPサービスのセットアップ
⑶。コードセクション:
mail_smtp.asp
<%
サブセンドメール(Who、Towho、Subject、Body)
薄暗いmymail
mymail = server.createObject(cdonts.newmail)を設定します
mymail.from = fromwho
mymail.to = towho
mymail.subject = subject
mymail.body = body
mymail.send
mymail = Nothingを設定します
End Sub
%>
このサブルーチンは、次の項目に対応する4つのパラメーターを受け入れます。
l送信者のメールアドレス
lメール受信者のメールアドレス
レメイルの件名
レメイルコンテンツ
使い方:
<%
fromwho =…
towho =…
件名=…
body =…
towho <> thenの場合
Who、Towho、Subject、Bodyからのsendmail
ifを終了します
%>
jmailを使用して電子メールを送信します
興味があれば、私と話し合うことができます。
2。 zip zipファイル(wscript.shellおよびwinzipコマンドライン、Javaコンポーネント)
⑴。 Winzip 8.1以上をインストールします
⑵。 Winzipコマンドラインをインストールします
⑶。ワーキングディレクトリのファイル権を設定して、インターネットユーザーが読み取り、書き込み、修正する
⑷.コードセクション:
unzip_a_zipfile.asp
<%
'シェルオブジェクトでプログラムを開始します
'zip_pathは、c:/test.zipなど、特定のzipファイルへのパスです
「パスは、解凍されたファイルを保存するパスです
'ONDはコマンドラインパラメーターです
wshshell = server.createobject(wscript.shell)を設定します
Issue = wshshell.run(wzunzip -ond&zip_path&&&path、1、true)
ZIPファイルを削除します
myfileobject = server.createobject(scripting.filesystemobject)を設定します
myfileobject.deletefile zip_path
「操作を継続することが成功したかどうかを判断してください
問題= 0の場合
'成功
...
それ以外
'失敗
...
ifを終了します
%>
3。 XMLファイルを操作します
交換時間は限られているので、時間があれば詳細に説明しましょう
4。ファイルアップロード
⑴。ファイルアップロードコンポーネントASP FileUpをインストールします(複数のファイルアップロード、ファイルタイプとサイズの判断、アップロード後のファイル名の変更など)
⑵。 IISを再起動して、アップロードコンポーネントを効果的にします
⑶。インターネットユーザーが読み取り、書き込み、変更できるように、アップロードディレクトリのファイル権を設定します
⑷.コードセクション
upload_file.htm
<style type = text/css>
<! -
.input {#fffff; border-right:border-top:#000000; font-family; :ジョージア;フォントサイズ:9pt; MidnightBlue;}
A:link {color:#1b629c;
A:Hover {color:#ff6600;
A:訪問{テキストデコレーション:なし}
- >
</style>
<center>
<form enctype = multipart/form-data method = post action = upload_file.asp name = upload>
<入力型=非表示名= CopyrightInfo value = http://www.chinaasp.com>
ファイルを選択してください:<入力タイプ=ファイルname = file1 class = input> <br> <br>
ファイルを選択してください:<入力タイプ= file name = file2 class = input> <br> <br>
</form>
<br> <br>
<a href = javascript:document.upload.submit();>送信</a>
</center>
upload_file.asp
<%
エラーの再開時に次に再開します
'ファイル接尾辞を取得する関数を定義します
function getFileExtName(filename)
pos = instrrev(filename、。)
pos> 0の場合
getFileExtName = MID(FILENAME、POS+1)
それ以外
getFileExtName =
ifを終了します
エンド関数
'ファイルを正しい名前を取得するように関数を定義します
関数getFileName(ファイル名)
lens = len(filename)-len(getFileExtName(filename))-1
getFileName = left(filename、lens)
エンド関数
'ファイルアップロードコンポーネントのオブジェクトを作成します
fileup = server.createobject(chanisasp.upload)を設定します
'ユーザーループによってアップロードされたファイルを読んで、サーバーに保存します
fileup.filesの各fに対して
'ユーザーがファイルを選択しない場合、またはファイルサイズが10mを超えた場合、ファイルが選択されているページに戻ってアップロードします
f.filename =またはf.filesize> 10485500の場合、Response.redirect upload_file.htm
'保存されたパスを取得します
path = server.mappath(upload_file.asp)
パス=左(パス、レン(パス)-15)
'ファイルを保存します
f.saveas path&getfilename(f.filename)&。&getfileexname(f.filename)
次
Response.redirect upload_file.htm
%>
5。ドライブ/ディレクトリ/ファイル操作
交換時間は限られているので、時間があれば詳細に説明しましょう
6。 ASPの書き込みとデバッグエクスペリエンス:Cookieとセッションの選択方法、Cookieのトラップの数、ページの有効期限とバッファリング設定、移植性を確保する方法、内部サーバーで500エラーに対処する方法...
1。クッキーとセッションの選択:
⑴。一般的な機能
⑵。違い:
①。働き方
②。有効期限条件
③。サーバーのパフォーマンスへの影響
2。クッキー番号トラップ:
IIは、20個の一般的なCookieを定義できます。
答えは、2D Cookieを使用することです。
例:
1D Cookieの数の制限をテストします。
test_cookies_1.asp
<%
i = 1〜50の場合
Response.Cookies(cookies_&i)= i
次
%>
test_cookies_2.asp
<%
i = 1〜50の場合
Response.write request.cookies(cookies_&i)&<br>
次
%>
効果:
最初にtest_cookies_1.aspにアクセスしてから、test_cookies_2.aspにアクセスしました。何を見つけましたか?
test_cookies_3.asp
<%
i = 1〜50の場合
Response.Cookies(cookies_&i)= i
次
i = 1〜50の場合
Response.write request.cookies(cookies_&i)&<br>
次
%>
効果:
クッキーは失われません! ! ! !
2D Cookieの数の制限をテストします。
test_cookies_4.asp
<%
i = 1〜301の場合
Response.Cookies(tuht)(cookies_&i)= i
次
%>
test_cookies_5.asp
<%
i = 1〜301の場合
Response.write request.cookies(tuht)(cookies_&i)&<br>
次
%>
効果:
この方法を使用して、201*20 = 4020 Cookieを使用してください! ! ! !
3。ページの有効期限とバッファリング設定
<%
'有効期限とバッファリング
Response.buffer = true
Response.CacheControl = no-chache
Response.ExpiresAbsolute = now()-1
Response.Expires = 0
%>
HTMLで設定を作成することもできます。
<メタコンテンツ= no-cache http-equiv = pragma>
<メタhttp-equiv = contires content = 0>
4。移植性を確保します
⑴。ファイルを含めます
<! - #file = top.aspを含める - >
⑵。 server.mappathを使用してファイルパスを見つけるには、ページで絶対パスを直接使用しないでください
⑶。コンポーネントを使用して、ビジネスロジックをカプセル化してみてください
5。内部サーバー500のデバッグエラー
⑴。 IISを設定して特定のエラーメッセージを表示します
⑵。上から下まで、ステップバイステップのデバッグ
⑶。いくつかの重要な変数の値を印刷し、予想されるかどうかを確認します
⑷.経験に基づくエラーの判断
7。単語文書を操作します
⑴。 Word 2000に必要なOffice 2000をインストールします
⑵。 IEでインターネットセキュリティを設定する:すべてのActiveXコントロールとプラグインが有効になっています
⑶。ワーキングディレクトリのファイル権を設定して、インターネットとシステムを読み取り/変更/書き込み
⑷.テンプレートcourse.dotを書き込みます
⑸.特定のコード:
opr_doc_inc.asp
<%
respons.write dim var_num&chr(13)
Response.Write var_num = 2&chr(13)
Response.write dim varstrings(2)&chr(13)
Response.write varstrings(0)=&chr(34)&drafter:&chr(34)&chr(13)
Response.Write Varstrings(1)=&Chr(34)&日付:&Chr(34)&Chr(13)
Response.write dim varvalues(2)&chr(13)
Response.write varvalues(0)=&chr(34)&drafter:tu haitao&chr(34)&chr(13)
Response.write varvalues(1)=&chr(34)&date:&date()&chr(34)&chr(13)
%>
代わりにsub(word)
myrange = word.activedocument.contentを設定します
i = 0からvar_num -1
myrange.find.execute(varstrings(i)、false、false、false、false、false、false、false、false、false、varalues(i)、2)を呼び出す
次
End Sub
opr_doc.asp
<%
'保存されたパスを取得します
path = server.mappath(opr_doc.asp)
パス=左(パス、レン(パス)-11)
filenames = path&test.doc
w1 = word.activedocument.saveas&chr(32)&chr(34)&filenames&chr(34)
w2 = wapp.documents.open&chr(32)&chr(34)&filenames&chr(34)
%>
<スクリプト言語= vbscript>
エラーの再開時に次に再開します
'指定されたファイル名で単語ドキュメントを作成します
薄暗い単語
word = createObject(word.application)を設定します
err.Number> 0の場合
アラートでエラーが発生しました。ファイルが存在するかどうかを確認してください
それ以外
word.visible = false
word.documents.open <%respons.write path%> course.dot
<%response.write w1%>
word.documents.close
Word = Nothingを設定します
ifを終了します
<! - #include file = opr_doc_inc.asp->
薄暗いワップ
wapp = createObject(word.application)を設定します
err.Number> 0の場合
アラートでエラーが発生しました。
それ以外
wapp.visible = true
<%response.write w2%>
代わりに電話(wapp)
wapp = Nothingを設定します
ifを終了します
</script>
効果:ドキュメントファイルが生成されたかどうかを確認しますか?この新しく作成されたドキュメントファイルとテンプレートファイルの違いは何ですか?起草と日付は変更されましたか?保存して、新しく生成されたドキュメントファイルの内容を表示します。
添付:
1。上記のすべてのコードはテストされ、Windows 2000サーバーSP2+IIS 5.0+MS SQL Server 2000+Office 2000で渡されました
2。データベースの構成:データベース名コース、ユーザーcourse_user、password course_password、odbcドライバーはcourse_dsn、ポートは2433、テーブル構造を説明するスクリプトは共有ディレクトリにあります。
3。ソフトウェアASP FileUp、Jmail、Winzip 8.1、およびWinzipコマンドラインを自分でダウンロードしてください。
4.データベーススクリプトファイル:
存在する場合(select * from dbo.sysobjects where id = object_id(n '[dbo]。[output_1]')およびobjectProperty(id、n'isprocedure ')= 1)
ドロップ手順[dbo]。[output_1]
行く
存在する場合(select * from dbo.sysobjects where id = object_id(n '[dbo]。[return_1]')およびobjectProperty(id、n'isprocedure ')= 1)
ドロップ手順[dbo]。[return_1]
行く
存在する場合(select * from dbo.sysobjects where id = object_id(n '[dbo]。[user_info_1]')and objectProperty(id、n'isprocedure ')= 1)
ドロップ手順[dbo]。[user_info_1]
行く
存在する場合(select * from dbo.sysobjects where id = object_id(n '[dbo]。[user_info_2]')and objectProperty(id、n'isprocedure ')= 1)
ドロップ手順[dbo]。[user_info_2]
行く
存在する場合(select * from dbo.sysobjects where id = object_id(n '[dbo]。[user_info_3]')and objectProperty(id、n'isprocedure ')= 1)
ドロップ手順[dbo]。[user_info_3]
行く
存在する場合(select * from dbo.sysobjects where id = object_id(n '[dbo]。[user_info]')and objectProperty(id、n'isusertable ')= 1)
ドロップテーブル[dbo]。[user_info]
行く
テーブルを作成[dbo]。[user_info](
[id] [int] ID(1、1)nullではない、
[user_name] [varchar](40)中国語_prc_ci_as not nullを照合します、
[パスワード] [varchar](20)nullではない中国語_prc_ci_asを照合します
)[プライマリ]
行く
table [dbo]。[user_info] nocheck addを変更します
制約[PK_USER_INFO]プライマリキークラスター
(
[user_name]
)[プライマリ]
行く
quoted_identifierをオフにします
行く
ansi_nullsをオフにします
行く
手順を作成[output_1]
@sid int output
として
@sid = 2を設定します
行く
quoted_identifierをオフにします
行く
ansi_nullsを設定します
行く
quoted_identifierをオフにします
行く
ansi_nullsをオフにします
行く
手順を作成[return_1]
(@user_name varchar(40)、@password varchar(20))
として
存在する場合(user_infoからidを選択するuser_name =@user_nameおよびpassword =@password)
返品1
それ以外
0を返します
行く
quoted_identifierをオフにします
行く
ansi_nullsを設定します
行く
quoted_identifierを設定します
行く
ansi_nullsをオフにします
行く
手順を作成[user_info_1]
(@user_name varchar(40)、@password varchar(20))
として
user_infoからidを選択しますwhere user_name =@user_nameおよびpassword =@password
行く
quoted_identifierをオフにします
行く
ansi_nullsを設定します
行く
quoted_identifierをオフにします
行く
ansi_nullsをオフにします
行く
手順を作成[user_info_2]
(@user_name varchar(40)、@password varchar(20))
として
XACT_ABORTを設定します
トランザクションを開始します
user_infoからdelete where user_name =@user_nameおよびpassword =@password
トランザクションをコミットします
XACT_ABORTをオフにします
行く
quoted_identifierをオフにします
行く
ansi_nullsを設定します
行く
quoted_identifierをオフにします
行く
ansi_nullsをオフにします
行く
手順[user_info_3]を作成します
select * from user_info
行く
quoted_identifierをオフにします
行く
ansi_nullsを設定します
行く