1. المعرفة الأساسية لـ ASP
1. ASP هو اختصار صفحات الخادم النشطة ، وهي لغة البرمجة النصية المفسرة ؛
2. يتطلب ASP تشغيل نظام التشغيل Windows ، ويجب تثبيت PWS تحت 9x ؛
3. علامات البرنامج النصي لـ ASP و JSP هي <٪٪> ، بينما بالنسبة لـ PHP ، يمكنك ضبطها على أنواع متعددة ؛
4. رمز تعليق ASP هو "؛
5. استخدم الوظائف الإضافية لتوسيع وظائف ASP.
من www.knowsky.com
مثال:
Helloworld_1.asp
<٪ = مرحبًا ، World ٪>
تأثير:
مرحبا بالعالم
Helloworld_2.asp
<٪
لأني = 1 إلى 10
الرد. write مرحبا ، العالم
التالي
٪>
تأثير:
مرحبا بالعالم
مرحبا بالعالم
مرحبا بالعالم
مرحبا بالعالم
مرحبا بالعالم
مرحبا بالعالم
مرحبا بالعالم
مرحبا بالعالم
مرحبا بالعالم
مرحبا بالعالم
ملاحظة: يمكن استخدام متغيرات ASP غير حساسة.
2. استخدام الكائنات المدمجة ASP:
يمكن استخدام أي كائنات مدمجة في ASP أدناه دون الحاجة إلى إعلانها على وجه التحديد في البرنامج النصي ASP.
1. طلب:
التعريف: يمكن استخدام هذا الكائن للوصول إلى معلومات الطلب المرسلة من المتصفح إلى الخادم.
تعيين:
ملفات تعريف الارتباط: القيمة التي تحتوي على المتصفح
النموذج: يحتوي على قيم في حقول نموذج HTML
QueryString: قيمة تحتوي على سلسلة الاستعلام
ServerVariables: يحتوي على قيم في متغيرات الرأس والبيئة
مثال:
request_url.asp
<٪
احصل على متغيرات إدخال المستخدم وتخزينها
user_id = request.querystring (user_id)
user_name = request.querystring (user_name)
"احكم على ما إذا كانت مدخلات المستخدم صحيحة
إذا user_id = ثم
استجابة. user_id خالية ، يرجى التحقق من ذلك
استجابة
إنهاء إذا
إذا user_name = ثم
استجابة. write user_name فارغ ، يرجى التحقق منه
استجابة
إنهاء إذا
'طباعة المتغيرات
استجابة. write user_id & <br>
استجابة. write user_name
٪>
تأثير:
عند الوصول إلى http://10.1.43.238/course/request_url.asp؟user_name=J:
user_id فارغ ، يرجى التحقق منه
عند الوصول إلى http://10.1.43.238/course/request_url.asp؟user_name=j&user_id=my_id:
my_id
ي
التفكير: كيف يتم تمرير المتغيرات في عناوين URL ويتم الحصول عليها بواسطة صفحات ASP؟
request_form.htm
<نوع النمط = text/css>
<!-
.input {background-color: #FFFFF; border-bottom: black 1px solid;border-left: black 1px solid; border-right: black 1px solid; border-top: black 1px solid; color: #000000;font-family : جورجيا
A: Link {Color: #1B629C ؛
A: Hover {color: #ff6600 ؛
ج: زيارة {text-decoration: none}
->
</style>
<centre>
<اسم النموذج = إجراء الدورة = request_form.asp method = post>
user_id: <إدخال نوع = اسم النص = user_id maxLength = 20 class = input> <br> <br>
user_name: <إدخال نوع = اسم النص = user_name maxLength = 30 class = input>
</form>
<br> <br>
<a href = javaScript: document.cource.submit () ؛> إرسال </a>
</center>
request_form.asp
<٪
احصل على متغيرات إدخال المستخدم وتخزينها
user_id = request.form (user_id)
user_name = request.form (user_name)
"احكم على ما إذا كانت مدخلات المستخدم صحيحة
إذا user_id = ثم
استجابة. user_id خالية ، يرجى التحقق من ذلك
استجابة
إنهاء إذا
إذا user_name = ثم
استجابة. write user_name فارغ ، يرجى التحقق منه
استجابة
إنهاء إذا
'طباعة المتغيرات
استجابة. write user_id & <br>
استجابة. write user_name
٪>
ملاحظة: ما هو الفرق بين الإجراء الذي يشير إلى النموذج ، request_form.asp و request_url.asp في رمز المصدر؟
2. إجابة:
التعريف: يستخدم لإرسال المعلومات إلى المتصفح ، واستخدم هذا الكائن لإرسال الإخراج من البرنامج النصي إلى المتصفح.
تعيين:
ملفات تعريف الارتباط: أضف ملف تعريف ارتباط إلى متصفحك
طريقة:
النهاية: إنهاء معالجة البرنامج النصي
إعادة التوجيه: قم بتشغيل المتصفح على صفحة جديدة
اكتب: أرسل سلسلة إلى المتصفح
ملكية:
المخزن المؤقت: ذاكرة التخزين المؤقت ASP
Cachecontrol: يتم التحكم في ذاكرة التخزين المؤقت بواسطة خادم الوكيل
ContentType: يحدد نوع المحتوى للاستجابة
انتهاء الصلاحية: يستخدم المتصفح الوقت النسبي للتحكم في ذاكرة التخزين المؤقت
Expiresabsolute: يستخدم المتصفح الوقت المطلق للتحكم في ذاكرة التخزين المؤقت
مثال:
استجابة _redirect.asp
<٪
اذهب إلى Google وألقي نظرة
Response.redirect http://www2.google.com
استجابة
٪>
استجابة _cookies.asp
<٪
قم بتعيين ملفات تعريف الارتباط وقراءة
استجابة. cookies (time_now) = الآن ()
Response.write request.cookies (time_now)
٪>
تأثير:
عند الوصول إلى http://10.1.43.238/course/response_cookies.asp:
2002-9-1 16:20:40
استجابة _buffer.asp
<٪ 'response.buffer = true ٪>
<a href = a> a </a>
<٪ response.redirect request_form.htm ٪>
تأثير:
①. عند إيقاف تشغيل وظيفة التخزين المؤقت الخاصة بـ IIS ، حدث خطأ أثناء الوصول إلى هذه الصفحة
أ
رد كائن خطأ "ASP 0156: 80004005"
رأس خاطئ
/course/response_buffer.asp ، السطر 3
تمت كتابة رأس HTTP إلى متصفح العميل. يجب أن يكون أي تعديل لرؤوس HTTP قبل كتابة محتوى الصفحة.
②. عند إيقاف تشغيل وظيفة التخزين المؤقت الخاصة بـ IIS وإزالة التعليقات على السطر الأول من الملف ، فإن إعادة توجيه الصفحة ناجحة
③. عند تشغيل وظيفة التخزين المؤقت الخاصة بـ IIS ، سيكون إعادة توجيه الصفحة ناجحًا بغض النظر عما إذا كان يتم إزالة التعليق على السطر الأول من الملف أم لا ،
3. الخادم
التعريف: يمكن استخدام وظائف كيان مختلفة على الخادم ، مثل التحكم في وقت تنفيذ البرنامج النصي قبل وصول الوقت. يمكن أيضًا استخدامها لإنشاء كائنات أخرى.
طريقة:
CreateObject: إنشاء مثيل كائن
htmlencode: تحويل السلاسل لاستخدام أحرف HTML الخاصة
Mappath: تحويل المسارات الافتراضية إلى مسارات فعلية
urlencode: تحويل السلاسل إلى عنوان URL
ScriptTimeout: عدد الثواني المسموح له بالركض قبل الإنهاء قبل الإنهاء
مثال:
server_htmlencode.asp
<٪
'HTML تشفير
استجابة. server.htmlencode (atime_now)
٪>
تأثير:
atime_now
عند عرض الملف المصدر ، يبدو أنه: atime_now
التفكير: لماذا ليس مثل هذا التأثير مثل atime_now؟ ما الخطأ في الملف المصدر؟
server_mappath.asp
<٪
ماباث
استجابة. write server.mappath (server_mappath.asp)
٪>
تأثير:
g: /asp_www/test/course/server_mapath.asp
التفكير: كيف تحصل على المسار الفعلي إلى دليل الجذر للموقع؟ كيف تحصل على المسار الفعلي إلى الدليل؟
server_urlencode.asp
<٪
url encode
استجابة. write server.urlencode (a/time_now)
٪>
تأثير:
٪ 5ctime ٪ 5fnow
4. طلب
التعريف: يستخدم لتخزين وقراءة معلومات التطبيق من قبل المستخدمين.
طريقة:
القفل: منع المستخدمين الآخرين من الوصول إلى مجموعات التطبيقات
إلغاء القفل: يمكّن المستخدمين الآخرين من الوصول إلى مجموعة التطبيق
حدث:
بصل: تسبب في إنهاء خادم الشبكة وتغيير ملف Global.ASA
ONSTART: تسبب في أول تطبيق لصفحة ويب في التطبيق
مثال:
application_counter.asp
<٪
"عداد بسيط مصنوع باستخدام التطبيق
application.lock
التطبيق (نقرات) = التطبيق (نقرات) +1
application.unlock
استجابة. الكتابة أنت الأول والتطبيق (نقرات) وزوار هذا الموقع!
Response.write <br> <br> أنت من & request.servervariables (Remote_addr)
٪>
تأثير:
أنت أول زائر لهذا الموقع!
أنت من 10.1.43.238
التفكير: ما هي وظائف القفل وفتح في هذا المثال؟
5. حصة
التعريف: قم بتخزين وقراءة معلومات محادثة مستخدم محددة ، مثل تخزين معلومات وصول المستخدم إلى الموقع ، ويتم فقد المعلومات بعد إعادة تشغيل الخادم.
طريقة:
التخلي: بعد معالجة الصفحة الحالية ، قم بإنهاء جلسة المستخدم
ملكية:
مهلة: مدة جلسة المستخدم (دقائق)
حدث:
بصل: وقت مهلة الجلسة الخارجية ، لم يعد المستخدم يتقدم بطلب للصفحة لتشغيل الحدث
ONSTART: تسبب في أول تطبيق للمستخدم لصفحة الويب
مثال:
Session_counter.asp
<٪
"عداد بسيط مصنوع باستخدام الجلسة
الجلسة (نقرات) = الجلسة (نقرات) +1
Response.write أنت أول زائر لهذا الموقع والجلسة (نقرات) و!
Response.write <br> <br> أنت من & request.servervariables (Remote_addr)
٪>
تأثير:
أنت أول زائر لهذا الموقع!
أنت من 10.1.43.238
التفكير: بما أن كل من الجلسة والتطبيق يمكن أن يحسب ، ما هو الفرق بينهما؟ كيف تبدأ في العد مرة أخرى إذا كنت تريد الحصول على أكثر من 100؟
3. استخدم ASP لتشغيل قاعدة البيانات:
1. الفرق بين الاتصال من خلال ODBC أو OLE؟
هناك الآن طريقتان للاتصال بقاعدة البيانات. من ناحية ، يمكن إنشاء اتصال باستخدام ODBC ، وهو متوافق مع أي قاعدة بيانات مع محرك ODBC (أي جميع قواعد البيانات في السوق بشكل أساسي) ؛
أي مزود يجب أن أستخدمه؟ استخدم مزود OLE DB الأصلي كلما كان ذلك ممكنًا ، حيث يوفر وصولًا أكثر كفاءة إلى البيانات. تقوم Microsoft باستبدال معيار ODBC تدريجياً بـ OLE DB ويجب استخدام ODBC فقط بدون مزود OLE DB الأصلي.
⑴. الاتصال بخادم SQL باستخدام ODBC:
①. تكوين ODBC
②. رمز الاتصال:
conn_odbc.asp
<٪
تعيين conn = server.createBject (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 لديها أذونات تشغيلية على قاعدة البيانات هذه).
⑵. الاتصال بخادم SQL باستخدام OLE:
conn_ole.asp
<٪
تعيين conn = server.createBject (adodb.connection)
Conn.Open Provider = sqloledb ؛ مصدر البيانات = 10.1.43.238،2433 ؛
٪>
2. قاعدة بيانات التشغيل: الاتصال وموسم السجلات
استخدم الاتصال وسجلات السجل لتشغيل قاعدة البيانات ، أو استخدام الاتصال فقط لتشغيل قاعدة البيانات.
مثال:
⑴. استخدم الاتصال وسجلات لتشغيل قاعدة البيانات معًا
use_db_1.asp
<٪
set conn = server.createObject (adodb.connection) 'قم بإنشاء كائن يتصل بقاعدة البيانات
conn.open course_dsn ، course_user ، course_password 'استخدم هذا الكائن للاتصال بقاعدة البيانات
اضبط RS = Server.CreateObject (ADODB.RecordSet)
RS.Open SELECT * من user_info ، conn ، 1،1 'فتح قاعدة بيانات باستخدام كائن مجموعة السجلات
إذا كان Rs.RecordCount> 0 ثم لا يوجد سجل
استجابة. write user_iduser_name <br>
ل I = 1 إلى Rs.RecordCount 'حلقة لقراءة جميع السجلات
Response.write rs (id) && rs (user_name) & <br>
"حقول سجل الإخراج إلى المتصفح
Rs.Movenext 'مؤشر ينقل سطر واحد لأسفل
إذا كان Rs.eof ثم الخروج من أجل الحلقة إذا تم الوصول إلى أسفل مجموعة السجلات
التالي
إنهاء إذا
٪>
تأثير:
user_iduser_name
1Ahyi
3Test
⑵. استخدم الاتصال فقط لتشغيل قاعدة البيانات:
use_db_2.asp
<٪
set conn = server.createObject (adodb.connection) 'قم بإنشاء كائن يتصل بقاعدة البيانات
conn.open course_dsn ، course_user ، course_password 'استخدم هذا الكائن للاتصال بقاعدة البيانات
conn.execute حذف من user_info
٪>
تأثير:
تم حذف جميع البيانات في جدول user_info
التفكير: هل هناك أي اختلافات بين الطريقتين؟ في أي مناسبات يستخدمون؟
3. كيفية استخدام المعاملات والإجراءات المخزنة ووجهات النظر؟
⑴. باستخدام الإجراءات المخزنة
①. تحديد الإجراءات المخزنة
إنشاء إجراء [output_1]
sid int الإخراج
مثل
تعيين @SID = 2
إنشاء إجراء [return_1]
(user_name varchar (40) ،@password varchar (20))
مثل
إذا كان موجودًا (حدد معرفًا من user_info حيث user_name =@user_name و password =@password)
العودة 1
آخر
إرجاع 0
إنشاء إجراء [user_info_1]
(user_name varchar (40) ،@password varchar (20))
مثل
حدد المعرف من user_info حيث user_name =@user_name و password =@password
إنشاء إجراء [user_info_2]
(user_name varchar (40) ،@password varchar (20))
مثل
اضبط Xact_abort على
ابدأ الصفقة
حذف من user_info حيث user_name =@user_name و password =@password
ارتكاب الصفقة
تعيين Xact_abort قبالة
إنشاء إجراء [user_info_3] كـ
حدد * من user_info
②. ودعا في ASP
use_proc.asp
<!-#include افتراضية =/adovbs.inc->
<٪
تعيين conn = server.createBject (adodb.connection)
conn.open course_dsn ، course_user ، course_password
"إجراءات المكالمات المخزنة مع معلمتين إدخالين ومجموعة سجل الإرجاع باستخدام مجموعة السجلات
"إنشاء إجراء [user_info_1]
'(user_name varchar (40) ،@password varchar (20))
'مثل
"حدد المعرف من user_info حيث user_name =@user_name و password =@password
Response.Write طريقة الاتصال العادية: <br>
تعيين rs = server.createBject (adodb.recordset)
sql = user_info_1 '& request.querystring (user_name) &' ، '& request.querystring (password) &'
Rs.Open SQL ، Conn ، 1،1
استجابة. write rs (id) & <br>
Rs.close
"استخدم مجموعة السجلات لاستدعاء الإجراءات المخزنة دون معلمات الإدخال ، ومجموعة سجل الإرجاع ، يمكنك استخدام RecordCount والسمات الأخرى
"إنشاء إجراء [user_info_3] كـ
حدد * من user_info
Response.write <br> إرجاع مجموعة السجلات ، يمكنك استخدام RecordCount وغيرها من الخصائص:
sql = exec user_info_3
Rs.Open SQL ، Conn ، 1،1
لأني = 1 إلى Rs.RecordCount
استجابة. write <br> & rs (user_name)
Rs.Movenext
التالي
Rs.close
تعيين روبية = لا شيء
استخدم الأمر لاتصال الإجراءات المخزنة مع معلمات الإخراج
'إنشاء إجراء [output_1]
'sid int الإخراج
'مثل
"تعيين @SID = 2
استجابة. write <br> <br> استدعاء الإجراءات المخزنة مع معلمات الإخراج: <br>
تعيين cmd = server.createBject (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)
استجابة. write bbb & <br>
تعيين cmd = لا شيء
"استخدم الأمر لاستدعاء الإجراءات المخزنة مع معلمتين للإدخال وقيمة الإرجاع
"إنشاء إجراء [return_1]
'(user_name varchar (40))
'مثل
إذا كان موجودًا (حدد معرفًا من user_info حيث user_name =@user_name)
"العودة 1
'آخر
"العودة 0
استجابة. write <br> استدعاء إجراء مخزن مع معلمتين للإدخال وقيمة الإرجاع: <br>
تعيين cmd = server.createBject (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)
استجابة. write rrr
تعيين cmd = لا شيء
conn.close
تعيين conn = لا شيء
٪>
تأثير:
عند زيارة http://10.1.43.238/course/use_proc.asp؟user_name=ahyi&password=tt ، يلي ما يلي
طريقة الاتصال العادية:
12
العودة إلى مجموعة السجلات ، يمكنك استخدام RecordCount وغيرها من الخصائص:
Ahyi
تيت
توث
إجراءات الاستدعاء المخزنة مع معلمات الإخراج:
2
استدعاء إجراء مخزن مع معلمتين إدخال وقيمة الإرجاع:
1
ملاحظة: إذا لم تكن هناك معلمات في الإجراء المخزن ، فإن عبارة SQL تسمى مباشرة اسم الإجراء المخزن ، والمعلمة واحدة هي معلمة اسم الإجراء المخزنة. . ، المعلمة N ؛ .
⑵. استخدام معالجة المعاملات
①. دعم المعاملات المدمجة ASP
مثال:
use_transaction_1.asp
<٪
'استخدام المعاملات في ASP
تعيين conn = server.createBject (adodb.connection)
conn.open course_dsn ، course_user ، course_password
conn.begintrans'Start المعاملة
SQL = حذف من user_info
تعيين rs = server.createBject (adodb.recordset)
Rs.Open SQL ، Conn ، 3،3
إذا كان conn.errors.count> 0 ثم لا يوجد خطأ
Conn.Rollbacktrans 'التراجع
تعيين روبية = لا شيء
conn.close
تعيين conn = لا شيء
استجابة. فشل المعاملة وتراجعت إلى الحالة قبل التعديل!
استجابة
آخر
Conn.CommitTrans معاملة الالتزام
تعيين روبية = لا شيء
conn.close
تعيين conn = لا شيء
استجابة. كانت المعاملة ناجحة!
استجابة
إنهاء إذا
٪>
②. المعاملات على مستوى قاعدة البيانات
أنا. إنشاء إجراءات مخزنة
إنشاء إجراء [user_info_2]
(user_name varchar (40) ،@password varchar (20))
مثل
اضبط Xact_abort على
ابدأ الصفقة
حذف من user_info حيث user_name =@user_name و password =@password
ارتكاب الصفقة
تعيين Xact_abort قبالة
الثاني. ودعا في ASP
use_transaction_2.asp
<٪
تعيين conn = server.createBject (adodb.connection)
conn.open course_dsn ، course_user ، course_password
sql = user_info_2 '& request.querystring (user_name) &' ، '& request.querystring (password) &'
تعيين rs = server.createBject (adodb.recordset)
Rs.Open SQL ، Conn ، 1،1
تعيين روبية = لا شيء
conn.close
تعيين conn = لا شيء
٪>
مناقشة: مزايا وعيوب الطريقتين؟
⑶. باستخدام العرض
بعد تحديد العرض في قاعدة البيانات ، استخدم العرض في ASP كما لو كان استخدام جدول
4. مثال على ترحيل قاعدة البيانات
db_page.asp
<٪
عند استئناف الخطأ التالي
set conn = server.createObject (adodb.connection) 'قم بإنشاء كائن يتصل بقاعدة البيانات
conn.open course_dsn ، course_user ، course_password 'استخدم هذا الكائن للاتصال بقاعدة البيانات
تعيين rs = server.createBject (adodb.recordset)
SQL = SELECT * من user_info order by id desc
Rs.Open SQL ، Conn ، 1،1
إذا كان Rs.RecordCount> 0 ثم لا يوجد سجل
rs.pagesize = 2'A يتم عرض سجلين كحد أقصى لكل صفحة
"احصل على الصفحة ليتم عرضها من عنوان URL
الصفحة = cint (طلب (صفحة))
"معلمة المعلمة المعلمة معالجة
إذا الصفحة = ثم الصفحة = 1
إذا الصفحة <1 ثم الصفحة = 1
إذا كانت الصفحة> = rs.pageCount ثم الصفحة = rs.pageCount
rs.absolutePage = الصفحة 'الصفحة الحالية هي الصفحة المحددة بواسطة معلمة الصفحة
بالنسبة إلى i = 1 إلى rs.pagesizize'cycle السجلات في الصفحة الحالية وفقًا لحجم المعلمة pagesize
استجابة. write user_id: & rs (id) & <br>
استجابة. user_name: & rs (user_name) & <br> <br>
يتحرك مؤشر سجل Rs.Movenext إلى أسفل
إذا كان Rs.eof ثم الخروج من أجل الحلقة إذا تم الوصول إلى أسفل مجموعة السجلات
التالي
إنهاء إذا
"إظهار زر تشغيل الصفحة
إذا صفحة> 1 ثم
Response.write <a href = & request.servervariables (document_name) &؟ page = 1> الصفحة 1 </a>
Response.write <a href = & request.servervariables (document_name) &؟ page = & (page-1) &> الصفحة السابقة </a>
إنهاء إذا
إذا كانت الصفحة <> rs.pageCount ثم
Response.write <a href = & request.servervariables (document_name) &؟ page = & (page+1) &> الصفحة التالية </a>
Response.write <a href = & request.servervariables (document_name) &؟ page = & rs.pageCount &> الصفحة الأخيرة </a>
إنهاء إذا
Response.write رقم الصفحة: و Page &/& Rs.PageCount
أغلق الكائن وأطلق الذاكرة
Rs.close
تعيين روبية = لا شيء
conn.close
تعيين conn = لا شيء
٪>
التفكير: ما هي السمات الإضافية المستخدمة أثناء عملية الترحيل؟