هذه هي المرة الأولى التي أكتب فيها مقالًا في CSDN. إن موهبتي الأدبية ومعرفتي النظرية محدودة. وأرحب بالتصحيحات إذا كتبت بشكل غير صحيح. في الواقع، هناك بالفعل العديد من المقالات حول إنشاء ASP لـ HTML على الإنترنت. إحدى الطرق هي طريقة إنشاء ASP+XML، على الرغم من أن إحدى المزايا هي أنه يمكنك الرجوع مباشرة إلى كود المصدر الأصلي للصفحة التي سيتم إنشاؤها دون كتابة قالب برنامج ولكني اختبرت هذه الطريقة في ذلك الوقت وجدت أن استقراره كان ضعيفًا وأن متطلبات سرعة الشبكة الخاصة به عالية (بالطبع لم يكن موجودًا على الخادم). غالبًا ما يتم الإبلاغ عن الأخطاء، خاصةً في الفضاء الافتراضي، وقد يكون ذلك بسبب عدم كفاية معالجة التعليمات البرمجية بهذه الطريقة. لإختصار القصة الطويلة، تستخدم هذه المقالة طريقة أخرى شائعة الاستخدام ASP+FSO، ويتم استخدام إطار العمل هنا أيضًا لتقليل وقت الإنشاء عند معالجة عدد كبير من صفحات الترحيل.
أقتبس هنا مثالًا بسيطًا: يتم عرض الصفحات الثابتة لتطبيقات الفنادق (التجارة الإلكترونية للسفر) (htm) في المدن الكبرى في جميع أنحاء البلاد في الترحيل
1. بيئة نظام التطبيق: win2000+ASP+MSSQL/ACCESS (قاعدة البيانات غير ذات صلة بالأساس) +iis5.0
2.1 قوائم المدن (CityHtml): بما في ذلك ثلاثة حقول تحدد أسماء html الثابتة (معرف المدينة (الرقم التلقائي)، اسم المدينة (CityName مثل بكين)، اسم بادئة html التي تم إنشاؤها (HtmlStartName مثل بكين))
3.1 قوائم الفنادق الوطنية (الفندق): هنا أقوم فقط بإنشاء ثلاثة حقول (معرف الفندق (الرقم التلقائي)، اسم المدينة (المدينة)، اسم الفندق (اسم الفندق)) لتسهيل الرجوع إلى المثيل.
4.1 صفحات ASP (ToHtm.asp) (تستخدم لإنشاء htm)
5.1 صفحات إطار الحلقة (IframeToHtm.asp)، إطار عمل التطبيق لإنشاء htm دفعة
فيما يلي الكود المصدري لصفحتين من
إطار الحلقة لإنشاء دفعة من الصفحات: IFrameToHtm .asp
<!--#include file="conn.asp"-->'الاتصال بقاعدة البيانات
<%
المخفتات، SQL، J
مجموعة rs=Server.CreateObject("adodb.recordset")
sql="select * from CityHtml"'افتح قائمة المدن في جميع أنحاء البلاد
rs.open SQL، كون، 1،1
افعل ذلك حتى حلقة rs.eof عبر المدن الكبرى%>
<!--يفتح إطار عمل التطبيق التالي صفحة ToHtml التي تم إنشاؤها-->
<IFRame name="LoadRcHtm<%=j%>" إطار الحدود=0 العرض=100% الارتفاع=30 التمرير=لا src="ToHtml.asp?City=<%=cstr(rs("city"))%>&HtmlStartName =<%=rs("HtmlStart")%>"></IFrame>
<%rs.movenext
Loop%>
إنشاء صفحة البرنامج: ToHtm.asp ربما أكتب تعليقًا في الكود المصدري **
<!--#include file="conn.asp"-->'ملف اتصال البيانات
<%
عند استئناف الخطأ التالي'معالجة التسامح مع الأخطاء
تعريف Dim City يجعل المدينة تنشئ الصفحة
City=Request.Querystring("City")' يحصل على قيمة فندق المدينة التي تم إنشاؤها والتي تم تمريرها من إطار العمل، والتي سيتم تقديمها لاحقًا
HtmlStartName=Request.Querystring("HtmlStartName")'احصل على بادئة اسم ملف html الذي تم إنشاؤه
Dim sql' search string، هنا سأفتح الجدول مباشرة دون البحث عن المتغيرات، فقط قم بكتابة شروط البحث بنفسك.
sql="select * from Hotel Where [City] = '" & City & "' "
كائن تشغيل بيانات Dim oRs
Dim PageCounts'لتنفيذ إنشاء الترحيل، يجب أن تعرف عدد الصفحات الموجودة
مجموعة oRs = Server.CreateObject("ADODB.Recordset")
oRs.Open Sql,oConn,1,1'ابحث عن الجدول الذي يفتح الفندق والذي يساوي متغير المدينة
oRs.pagesize=10'عشرة سجلات هي صفحة واحدة
PageCounts=oRs.pagecount' للحصول على عدد الصفحات التي سيتم إنشاؤها، استخدمها في حلقة لإنشاء
يحدد Dim fs كائن ملف fso
المجلدات الخافتة هي اسم المجلد الذي يتم تخزين الصفحات الثابتة فيه
يحدد Dim Filestart البادئة لإنشاء ملفات htm
تعيين fs=Server.CreateObject("Scripting.FileSystemObject")
خافت ط
بالنسبة لـ i=1 to PageCounts، يبدأ في إنشاء صفحات في حلقة، أي يتم إنشاء ترحيل الصفحات.
page=i
oRs.absolutepage=رقم الصفحة
rowcount=oRs.pagesize'عدد السجلات في الصفحة الحالية
المجلدات=server.mappath("CityHtml")
إذا كان (fs.FolderExists(folders)) ثم حدد ما إذا كان المجلد موجودًا أم لا
آخر
ينشئ fs.CreateFolder(folders)' مجلد CityHtml إذا لم يكن موجودًا
نهاية إذا
إذا كنت = 1 ثم
Filestart=HtmlStartName'إذا كانت هي الصفحة الأولى، فحدد اسم الملف وقم بتمرير اسم القيمة. على سبيل المثال، beijing هو beijing.htm
آخر
Filestart=HtmlStartName&i'إذا كانت الصفحة الثانية هي beijing+1، على سبيل المثال، إذا كان هناك صفحتان، i يساوي 2، فهي beijing2.htm وهكذا...(تتم إضافة لاحقة .htm في النهاية)
نهاية إذا
تحدد الملفات الخافتة متغير اسم الملف النصي الذي تم إنشاؤه
خافت filez'تحديد متغير اسم مسار الملف
files=Filestart&".txt"'اسم هذا الملف
filez=folders&""&"مسار الملف النصي للملفات
'حذف الملفات
يقوم برنامج Dim checkfile بالتحقق مما إذا كان الملف النصي موجودًا بالفعل أم لا، وإذا كان الأمر كذلك، فاحذفه
checkfile=server.mappath("CityHtml"&Filestart&".htm")'تحقق مما إذا كان ملف htm موجودًا بالفعل، وإذا كان الأمر كذلك، فاحذفه
إذا كان (fs.FileExists(checkfile)) ثم تحقق مما إذا كان ملف htm موجودًا بالفعل، وإذا كان الأمر كذلك، فاحذفه
Dim df'define file object *حذف الملف باستخدام*
قم بتعيين df=fs.GetFile(checkfile)'تحديد الملف المراد حذفه
df.delete' حذف الملف
نهاية if'end الحكم
يحدد Dim ts كائن ملف الكتابة
set ts = fs.createtextfile(filez,true) 'تمكين كتابة محتوى الملف ** أنا فقط أكتب اسم الفندق وعرض الترحيل الثابت في النص **
ts.write("<Html><Head><Title>Generate"&City&"City Hotel</Title>"&vbcrlf)' بعد ذلك، سيتم إنشاء محتوى الملف الرئيسي واستخدام Response.write
ts.write("<META http-equiv=Content-Type content=text/html; charset=gb2312>"&vbcrlf)
ts.write("<meta name=keywords content="&city&"hotel>"&vbcrlf)
ts.write("<link href='/Style/style.css' rel='stylesheet' type='text/css'></head><body topmargin=0>"&vbcrlf)
ts.Write("<TABLE WIDTH=760 cellpacing=0 cellpadding=0 align=center>"&vbcrlf&_
"<TR><TD width='100%'>"&vbcrlf)
'بدء إخراج الترحيل
'لن أخوض في تفاصيل حول مبدأ برنامج الترحيل الرقمي هنا، ويمكن للأصدقاء الذين لا يفهمونه البحث عنه على الإنترنت.
تعتيم الصفحة الحالية
Dim Page2'متغير الترحيل الرقمي
متغير ترقيم الصفحات الرقمي لـ Dim s
إذا كانت الصفحة = 1 ثم
ts.write (" [الصفحة الرئيسية] [الصفحة السابقة] ")
آخر
ts.write (" <a href="&HtmlStartName&".htm"&" class=blue>[الصفحة الرئيسية]</a> <a href="&HtmlStartName&Replace(page-1,1,"")&".htm"& " class=blue>الصفحة السابقة</a> ")
نهاية إذا
page2=(page-(page mod 10))/10
إذا كانت الصفحة 2 <1 فإن الصفحة 2 = 0
من أجل s=page2*10-1 إلى page2*10+10
إذا كان s>0 إذن
إذا كان s=cint(page) إذن
ts.write (" <font color='#000000'>["& s & "]</font>")
آخر
إذا ق = 1 ثم
ts.write (" <a href="&HtmlStartName&replace(s,1")&".htm"&" class=blue>["& s &"]</a>")
آخر
ts.write ("<a href="&HtmlStartName&s&".htm"&" class=blue>["& s &"]</a>")
نهاية إذا
نهاية إذا
إذا s=ors.pagecount ثم
الخروج ل
نهاية إذا
نهاية إذا
التالي
إذا سينت(صفحة)=ors.pagecount ثم
ts.write ("[الصفحة التالية] [الصفحة الأخيرة]")
آخر
ts.write (" <a href="&HtmlStartName&page+1&".htm"&" class=blue>[الصفحة التالية]</a> <a href="&HtmlStartName&ors.pagecount&".htm"&" class=blue> [ الصفحة الأخيرة]</a>")
نهاية إذا
ts.write("</TD></TR>")
"نهاية إخراج الترحيل."
افعل بينما لا ors.eof وrowcount>0 'اسم الفندق الناتج
ts.write("<TR><TD width='100%'>"&oRs.Fields("Chinese_Name")&"</TD></TR>"&vbcrlf)
oRs.movenext
rowcount=rowcount-1'عندما يكون عدد السجلات في الصفحة هو -1 حلقة
ts.write("</Table></body></html>"&vbcrlf)
ts.إغلاق
تعيين ts=لا شيء 'تحرير الكائن
يحدد Dim EditFile إعادة كتابة متغيرات الملف
Set EditFile = fs.GetFile(filez)'تعيين كائن ملف إعادة الكتابة
EditFile.name= left(EditFile.name,len(EditFile.name)-4)&".htm" 'أعد كتابة الملف النصي إلى htm
ينتهي إنشاء الحلقة التالية (إنشاء الترحيل)
تعيين EditFile = لا شيء 'تحرير الكائن
تعيين fs=لا شيء'حرر الكائن
إذا كان err.number<>0 ثم "التعامل مع الأخطاء التي تم إنشاؤها".
Response.write(City&"حدث خطأ غير معروف أثناء تحديث <A href=ToHtml.asp?City="&City&"&HtmlName="&HtmlStartName&">إعادة التحديث</A>")
آخر
Response.Write(المدينة&"اكتمل تحديث الفندق"&الآن())
نهاية إذا
%>