1。ASPの基本的な知識
1。 ASPは、解釈されたスクリプトロケールであるアクティブサーバーページの略語です。
2。 ASPはWindowsオペレーティングシステムを実行する必要があり、PWSは9倍未満でインストールする必要があります。
3。 ASPおよびJSPのスクリプトタグは<%%>ですが、PHPの場合、複数のタイプに設定できます。
4。 ASPのコメントシンボルは ';
5.アドオンを使用して、ASPの関数を拡張します。
www.knowsky.comから
例:
Helloworld_1.asp
<%=こんにちは、world%>
効果:
こんにちは世界
Helloworld_2.asp
<%
i = 1〜10の場合
response.write hello、world
次
%>
効果:
こんにちは世界
こんにちは世界
こんにちは世界
こんにちは世界
こんにちは世界
こんにちは世界
こんにちは世界
こんにちは世界
こんにちは世界
こんにちは世界
注:ASPは定義なしで使用できます。
2。ASPビルトインオブジェクトの使用:
以下のASP組み込みオブジェクトは、ASPスクリプトで具体的に宣言することなく使用できます。
1。リクエスト:
定義:このオブジェクトは、ブラウザからサーバーに送信された要求情報にアクセスできます。
セット:
Cookie:ブラウザCookieを含む値
フォーム:HTMLフォームフィールドに値が含まれています
クエリストリング:クエリ文字列を含む値
ServerVariables:ヘッダーと環境の変数に値が含まれます
例:
request_url.asp
<%
'ユーザー入力を取得し、変数を保存します
user_id = request.querystring(user_id)
user_name = request.querystring(user_name)
'ユーザーの入力が正しいかどうかを判断します
user_id = thenの場合
response.write user_idはnullです。確認してください
Response.End
ifを終了します
user_name = thenの場合
response.write user_nameはnullです。チェックしてください
Response.End
ifを終了します
'変数を印刷します
respons.write user_id&<br>
respons.write user_name
%>
効果:
http://10.1.43.238/course/request_url.asp?user_name=jにアクセスする場合:
user_idはnullです。チェックしてください
http://10.1.43.238/course/request_url.asp?user_name=j&user_id=my_idにアクセスする場合
my_id
j
考え:変数はURLでどのように渡され、ASPページで取得されますか?
request_form.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 name = course action = request_form.asp method = post>
user_id:<入力タイプ=テキストname = user_id maxlength = 20 class = input> <br> <br>
user_name:<入力タイプ=テキストname = user_name maxlength = 30 class = input>
</form>
<br> <br>
<a href = javascript:document.course.submit();>送信</a>
</center>
request_form.asp
<%
'ユーザー入力を取得し、変数を保存します
user_id = request.form(user_id)
user_name = request.form(user_name)
'ユーザーの入力が正しいかどうかを判断します
user_id = thenの場合
response.write user_idはnullです。確認してください
Response.End
ifを終了します
user_name = thenの場合
response.write user_nameはnullです。チェックしてください
Response.End
ifを終了します
'変数を印刷します
respons.write user_id&<br>
respons.write user_name
%>
注:ソースコードのフォーム、request_form.asp、request_url.aspのアクションポインティングの違いは何ですか?
2。応答:
定義:情報をブラウザに送信するために使用され、このオブジェクトを使用してスクリプトから出力をブラウザに送信します。
セット:
Cookie:ブラウザにCookieを追加します
方法:
終了:スクリプト処理を終了します
リダイレクト:ブラウザを新しいページに起動します
書き込み:ブラウザに文字列を送信します
財産:
バッファ:ASPをキャッシュします
Cachecontrol:キャッシュはプロキシサーバーによって制御されます
ContentType:応答のコンテンツタイプを指定します
期限切れ:ブラウザは相対的な時間を使用してキャッシュを制御します
有効期限:ブラウザは絶対時間を使用してキャッシュを制御します
例:
Response_redirect.asp
<%
'Googleに行き、見てください
Response.Redirect http://www2.google.com
Response.End
%>
Response_cookies.asp
<%
'Cookieを設定して読み取ります
Response.cookies(time_now)= now()
respons.write request.cookies(time_now)
%>
効果:
http://10.1.43.238/course/response_cookies.aspにアクセスする場合:
2002-9-1 16:20:40
Response_buffer.asp
<% 'response.buffer = true%>
<a href = a> a </a>
<%response.redirect request_form.htm%>
効果:
①。 IISのバッファリング機能がオフになると、このページにアクセスしているときにエラーが発生しました
a
返信オブジェクトエラー 'ASP 0156:80004005'
ヘッダーが間違っています
/course/response_buffer.asp、行3
HTTPヘッダーは、クライアントブラウザに書き込まれています。 HTTPヘッダーの変更は、ページコンテンツが書かれる前に行う必要があります。
②。 IISのバッファリング機能がオフになり、ファイルの最初の行に関するコメントが削除されると、ページのリダイレクトが成功します
③。 IISのバッファリング機能がオンになると、ファイルの最初の行のコメントが削除されているかどうかに関係なく、ページリダイレクトが成功します。
3。サーバ
定義:時間が到着する前のスクリプト実行の時間を制御するなど、さまざまなエンティティ関数をサーバーで使用できます。他のオブジェクトを作成するためにも使用できます。
方法:
CreateObject:オブジェクトインスタンスを作成します
HTMLENCODE:文字列を変換して、特別なHTML文字を使用します
マッパス:仮想パスを物理パスに変換します
urlencode:文字列をURLエンコードに変換します
ScriptImeout:スクリプトが終了する前に実行できる秒数
例:
server_htmlencode.asp
<%
'HTMLエンコード
respons.write server.htmlencode(atime_now)
%>
効果:
atime_now
ソースファイルを表示すると、atime_nowのように表示されます
考えてください:なぜそれはatime_nowのような効果ではないのですか?ソースファイルの何が問題になっていますか?
server_mappath.asp
<%
'マッパス
Response.write server.mappath(server_mappath.asp)
%>
効果:
G:/asp_www/test/course/server_mapath.asp
考え:サイトのルートディレクトリへの実際のパスを取得する方法は?ディレクトリへの実際のパスを取得する方法は?
server_urlencode.asp
<%
'URLエンコード
respons.write server.urlencode(a/time_now)
%>
効果:
A%5ctime%5fnow
4。応用
定義:ユーザーが共有するアプリケーション情報を保存して読むことができます。
方法:
ロック:他のユーザーがアプリケーションセットにアクセスしないようにします
ロック解除:他のユーザーがアプリケーションセットにアクセスできるようにします
イベント:
Onend:ネットワークサーバーを終了してGlobal.asaファイルを変更することによりトリガーされます
on -start:アプリケーションのWebページの最初のアプリケーションによってトリガー
例:
application_counter.asp
<%
'アプリケーションを使用して作られた簡単なカウンター
Application.Lock
アプリケーション(クリック)=アプリケーション(クリック)+1
Application.UnLock
Response.writeあなたは最初のアプリケーション(クリック)であり、このサイトの訪問者です!
respons.write <br> <br>あなたは出身です&request.servervariables(remote_addr)
%>
効果:
あなたはこのサイトへの最初の訪問者です!
あなたは10.1.43.238からです
考えている:この例では、ロックとロックを解除する機能は何ですか?
5。セッション
定義:ユーザーアクセス情報をWebサイトに保存するなど、特定のユーザーの会話情報を保存および読み取り、サーバーが再起動した後に情報が失われます。
方法:
放棄:現在のページを処理した後、ユーザーセッションを終了します
財産:
タイムアウト:ユーザーセッション期間(分)
イベント:
ONEND:セッションのタイムアウト時間外に、ユーザーはイベントをトリガーするためにページを適用しなくなりました
on -start:ユーザーがWebページの最初のアプリケーションでトリガー
例:
session_counter.asp
<%
'セッションを使用して作られた簡単なカウンター
セッション(クリック)=セッション(クリック)+1
Response.writeあなたはこのサイト&セッション(クリック)の最初の訪問者です!
respons.write <br> <br>あなたは出身です&request.servervariables(remote_addr)
%>
効果:
あなたはこのサイトへの最初の訪問者です!
あなたは10.1.43.238からです
考え:セッションとアプリケーションの両方がカウントできるため、それらの違いは何ですか? 100以上を取得したい場合、もう一度カウントを開始する方法は?
3. ASPを使用してデータベースを操作します。
1。 ODBCまたはOLEを介した接続の違いは?
現在、データベースに接続する方法が2つあります。一方では、ODBCを使用して接続を生成できます。これは、ODBCドライブを備えた任意のデータベースと互換性があります(つまり、基本的に市場のすべてのデータベース)。
どのプロバイダーを使用する必要がありますか?データへのより効率的なアクセスを提供するため、可能な限り元のOLE DBプロバイダーを使用します。 Microsoftは、ODBC標準を徐々にOLE DBに置き換えており、元のOLE DBプロバイダーなしでのみODBCを使用する必要があります。
⑴。 ODBCを使用してSQL Serverに接続します。
①。 ODBCを構成します
②。接続コード:
conn_odbc.asp
<%
conn = server.createObject(adodb.connection)を設定します
'conn.open dsn = course_dsn; uid = course_user; pwd = course_password; database = course
conn.open course_dsn、course_user、course_password
%>
注:MyDSNを構成する場合、デフォルトのデータベースがコースとして指定されている場合、上記のコードは同じになります。前提は、Course_Userにはこのデータベースに運用権限があることです)。
⑵。 OLEを使用してSQL Serverに接続します。
conn_ole.asp
<%
conn = server.createObject(adodb.connection)を設定します
conn.openプロバイダー= sqloledb; data source = 10.1.43.238,2433;
%>
2。操作データベース:接続とレコードセット
接続とレコードセットを使用してデータベースを操作するか、接続を使用してデータベースを操作します。
例:
⑴。接続とレコードセットを使用して、データベースを一緒に操作します
use_db_1.asp
<%
conn = server.createObject(adodb.Connection) 'データベースに接続するオブジェクトを作成します
conn.open course_dsn、course_user、course_password 'このオブジェクトを使用してデータベースに接続する
rs = server.createobject(adodb.recordset) 'recordsetオブジェクトを作成します
rs.open select * from user_info、conn、1,1 'レコードセットオブジェクトを使用してデータベースを開く
rs.RecordCount> 0の場合、レコードがある場合
respons.write user_iduser_name <br>
i = 1からrs.RecordCount 'ループの場合、すべてのレコードを読み取ります
respons.write rs(id)&& rs(user_name)&<br>
'ブラウザにフィールドを出力します
rs.movenext 'ポインターは1行下に移動します
rs.eofの場合、レコードセットの下部に到達した場合、ループを除去するために終了します
次
ifを終了します
%>
効果:
user_iduser_name
1ahyi
3テスト
⑵。接続のみを使用してデータベースを操作します。
use_db_2.asp
<%
conn = server.createObject(adodb.Connection) 'データベースに接続するオブジェクトを作成します
conn.open course_dsn、course_user、course_password 'このオブジェクトを使用してデータベースに接続する
conn.execute user_infoから削除します
%>
効果:
user_infoテーブルのすべてのデータが削除されます
考えている:2つの方法に違いはありますか?それらはどのような機会に使用されていますか?
3。トランザクション、ストアドプロシージャ、およびビューの使用方法は?
⑴。ストアドプロシージャの使用
①。ストアドプロシージャを定義します
手順を作成[output_1]
@sid int output
として
@sid = 2を設定します
手順を作成[return_1]
(@user_name varchar(40)、@password varchar(20))
として
存在する場合(user_infoからidを選択するuser_name =@user_nameおよびpassword =@password)
返品1
それ以外
0を返します
手順を作成[user_info_1]
(@user_name varchar(40)、@password varchar(20))
として
user_infoからidを選択しますwhere user_name =@user_nameおよびpassword =@password
手順を作成[user_info_2]
(@user_name varchar(40)、@password varchar(20))
として
XACT_ABORTを設定します
トランザクションを開始します
user_infoからdelete where user_name =@user_nameおよびpassword =@password
トランザクションをコミットします
XACT_ABORTをオフにします
手順[user_info_3]を作成します
select * from user_info
②。 ASPで呼ばれます
use_proc.asp
<! - #include virtual =/adovbs.inc->
<%
conn = server.createObject(adodb.connection)を設定します
conn.open course_dsn、course_user、course_password
'2つの入力パラメーターを備えたストアドプロシージャとレコードセットを使用してレコードセットを返すこと
'プロシージャの作成[user_info_1]
'(@user_name varchar(40)、@password varchar(20))
'として
'user_infoからidを選択しますwhere user_name =@user_nameおよびpassword =@password
response.write通常の呼び出し方法:<br>
rs = server.createObject(adodb.Recordset)を設定します
sql = user_info_1 '&request.querystring(user_name)&'、 '&request.querystring(パスワード)&'
rs.open sql、conn、1,1
Response.write rs(id)&<br>
rs.close
'レコードセットを使用して、入力パラメーターなしでストアドプロシージャを呼び出し、レコードセットを返し、RecordCountおよびその他の属性を使用できます
'手順[user_info_3]を作成します
'select * from user_info
Response.Write <br>レコードセットを返し、RecordCountおよびその他のプロパティを使用できます。
sql = exec user_info_3
rs.open sql、conn、1,1
i = 1からrs.recordCountの場合
respons.write <br>&rs(user_name)
rs.movenext
次
rs.close
rs = Nothingを設定します
'コマンドを使用して、出力パラメーターを使用してストアドプロシージャを呼び出します
'プロシージャの作成[output_1]
'@sid int output
'として
' @sid = 2を設定します
Response.Write <br> <br>出力パラメーターを使用したストアドプロシージャの呼び出し:<br>
cmd = server.createobject(adodb.command)を設定します
cmd.activeconnection = conn
cmd.commandtext = output_1
cmd.parameters.append cmd.createparameter(@sid、adinteger、adparamoutput)
CMD(@SID)= 10
cmd.execute()
bbb = cmd(@sid)
Response.write bbb&<br>
CMD =何も設定しません
'コマンドを使用して、2つの入力パラメーターと戻り値を持つストアドプロシージャを呼び出します
'手順を作成[return_1]
'(@user_name varchar(40))
'として
'存在する場合(user_infoからidを選択しますuser_name =@user_name)
'戻る1
'それ以外
'返品0
Response.Write <br> 2つの入力パラメーターと戻り値を持つストアドプロシージャを呼び出す:<br>
cmd = server.createobject(adodb.command)を設定します
cmd.activeconnection = conn
cmd.commandtype = adcmdstoredproc
cmd.commandtext = return_1
cmd.parameters.append cmd.createparameter(@return_value、adinteger、adparamreturnvalue)
cmd.parameters.append cmd.createparameter(@user_name、advarchar、adparaminput、40)
cmd.parameters.append cmd.createparameter(@password、advarchar、adparaminput、20)
cmd(@user_name)= tuth
cmd(@password)= yyuyu
cmd.execute()
rrr = cmd(@return_value)
Response.Write RRR
CMD =何も設定しません
conn.close
conn =何も設定しません
%>
効果:
http://10.1.43.238/course/use_proc.asp?user_name=ahyi&password=ttにアクセスすると、以下が表示されます
通常の呼び出し方法:
12
レコードセットに戻ると、RecordCountおよびその他のプロパティを使用できます。
ああ
テット
チュット
出力パラメーターを使用してストアドプロシージャを呼び出します。
2
2つの入力パラメーターと戻り値を持つストアドプロシージャを呼び出します。
1
注:ストアドプロシージャにパラメーターがない場合、呼び出されたSQLステートメントはストアドプロシージャ名であり、1つのパラメーターは複数のパラメーターがある場合、ストアドプロシージャ名パラメーター1、パラメーター2、。 。、パラメーターn; execをSQLステートメントに追加すると、RecordCountなどのプロパティを使用できます。 。
⑵。トランザクション処理を使用します
①。 ASP組み込みトランザクションサポート
例:
use_transaction_1.asp
<%
'ASPでのトランザクションの使用
conn = server.createObject(adodb.connection)を設定します
conn.open course_dsn、course_user、course_password
conn.begintrans'Startトランザクション
sql = user_infoから削除します
rs = server.createObject(adodb.Recordset)を設定します
rs.open sql、conn、3,3
conn.errors.count> 0の場合、エラーです
conn.rollbacktransのロールバック
rs = Nothingを設定します
conn.close
conn =何も設定しません
Response.Writeトランザクションは失敗し、変更前に状態に戻りました!
Response.End
それ以外
conn.committransのコミットトランザクション
rs = Nothingを設定します
conn.close
conn =何も設定しません
Response.Writeトランザクションは成功しました!
Response.End
ifを終了します
%>
②。データベースレベルのトランザクション
私。ストアドプロシージャを作成します
手順を作成[user_info_2]
(@user_name varchar(40)、@password varchar(20))
として
XACT_ABORTを設定します
トランザクションを開始します
user_infoからdelete where user_name =@user_nameおよびpassword =@password
トランザクションをコミットします
XACT_ABORTをオフにします
ii。 ASPで呼ばれます
use_transaction_2.asp
<%
conn = server.createObject(adodb.connection)を設定します
conn.open course_dsn、course_user、course_password
sql = user_info_2 '&request.querystring(user_name)&'、 '&request.querystring(パスワード)&'
rs = server.createObject(adodb.Recordset)を設定します
rs.open sql、conn、1,1
rs = Nothingを設定します
conn.close
conn =何も設定しません
%>
ディスカッション:2つの方法の利点と短所?
⑶。ビューを使用します
データベースのビューを定義した後、テーブルを使用しているかのようにASPのビューを使用してください
4。データベースページングの例
db_page.asp
<%
エラーの再開時に次に再開します
conn = server.createObject(adodb.Connection) 'データベースに接続するオブジェクトを作成します
conn.open course_dsn、course_user、course_password 'このオブジェクトを使用してデータベースに接続する
rs = server.createObject(adodb.Recordset)を設定します
sql = select * from user_info order by id desc
rs.open sql、conn、1,1
rs.RecordCount> 0の場合、レコードがある場合
rs.Pagesize = 2'a最大2つのレコードがページごとに表示されます
'URLからページを表示してください
page = cint(request(page))
'ページパラメーター例外処理
page = then page = 1の場合
ページ<1の場合、ページ= 1
page> = rs.pagecountの場合、page = rs.pagecount
rs.absolutepage = page'現在のページは、ページパラメーターで指定されたページです
i = 1からrs.pages'ize'cycleのサイクル現在のページのレコードは、ページサイズのパラメーターのサイズに従って使用します
respons.write user_id:&rs(id)&<br>
respons.write user_name:&rs(user_name)&<br> <br>
rs.movenext 'レコードポインターが下に移動します
rs.eofの場合、レコードセットの下部に到達した場合、ループを除去するために終了します
次
ifを終了します
'ページターンボタンを表示します
ページ> 1の場合
respons.write <a href =&request.servervariables(document_name)&?page = 1> page 1 </a>
respons.write <a href =&request.servervariables(document_name)&?page =&(page-1)&>前のページ</a>
ifを終了します
page <> rs.PageCountの場合
respons.write <a href =&request.servervariables(document_name)&?page =&(page+1)&>次のページ</a>
respons.write <a href =&request.servervariables(document_name)&?page =&rs.pagecount&>最後のページ</a>
ifを終了します
Response.Writeページ番号:&ページ&/&rs.PageCount
'オブジェクトを閉じて、メモリを解放します
rs.close
rs = Nothingを設定します
conn.close
conn =何も設定しません
%>
考えている:ページングプロセス中にどのような追加属性が使用されますか?