นี่เป็นครั้งแรกที่ฉันเขียนบทความใน CSDN ความสามารถทางวรรณกรรมและความรู้ทางทฤษฎีของฉันมีจำกัด ฉันยินดีแก้ไขหากฉันเขียนไม่ถูกต้อง จริงๆ แล้ว มีบทความมากมายเกี่ยวกับการสร้าง ASP บนอินเทอร์เน็ต วิธีการหนึ่งคือวิธีสร้าง ASP+XML แม้ว่าข้อดีประการหนึ่งคือคุณสามารถอ้างอิงซอร์สโค้ดต้นฉบับของเพจที่จะสร้างขึ้นได้โดยตรงโดยไม่ต้องเขียนเทมเพลต โปรแกรม แต่ฉันทดสอบวิธีนี้ ในเวลานั้น ฉันพบว่าความเสถียรของมันไม่ดีและความต้องการความเร็วเครือข่ายสูง (แน่นอนว่ามันไม่ได้อยู่บนเซิร์ฟเวอร์) โดยเฉพาะอย่างยิ่งในพื้นที่เสมือน ข้อผิดพลาดมักถูกรายงาน อาจเนื่องมาจากการประมวลผลโค้ดของฉันไม่เพียงพอในวิธีนี้ เพื่อให้เรื่องสั้นสั้น บทความนี้ใช้วิธีอื่นที่ใช้กันทั่วไป ASP+FSO เฟรมเวิร์กยังใช้ที่นี่เพื่อลดเวลาการสร้างเมื่อประมวลผลเพจจำนวนมาก วิธีการนี้ใช้สำหรับไฟล์ ASP บางไฟล์ที่มีปริมาณเพจมาก
ที่นี่ฉันยกตัวอย่างง่ายๆ: (อีคอมเมิร์ซการเดินทาง) หน้าคงที่ของแอปพลิเคชันโรงแรม (htm) ในเมืองใหญ่ ๆ ทั่วประเทศจะแสดงในเพจ
1 สภาพแวดล้อมของระบบแอปพลิเคชัน: win2000+ASP+MSSQL/ACCESS (โดยพื้นฐานแล้วฐานข้อมูลไม่เกี่ยวข้อง) +iis5.0
2.1 รายการเมือง (CityHtml): รวมสามฟิลด์ที่กำหนดชื่อ html แบบคงที่ (รหัสเมือง (หมายเลขอัตโนมัติ), ชื่อเมือง (CityName เช่น Beijing), ชื่อคำนำหน้า HTML ที่สร้างขึ้น (HtmlStartName เช่น beijing))
3.1 รายชื่อโรงแรมระดับประเทศ ( โรงแรม): ที่นี่ฉันสร้างเพียงสามฟิลด์เท่านั้น (รหัสโรงแรม (หมายเลขอัตโนมัติ) ชื่อเมือง (เมือง) ชื่อโรงแรม (HotelName)) เพื่ออำนวยความสะดวกในการอ้างอิงไปยังอินสแตนซ์
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,conn,1,1
ทำจนกระทั่ง rs.eof' วนรอบเมืองใหญ่%>
<!--กรอบงานแอปพลิเคชันต่อไปนี้เปิดเพจที่สร้าง ToHtml-->
<ชื่อ IFRame="LoadRcHtm<%=j%>" frameborder=0 width=100% height=30 scrolling=no src="ToHtml.asp?City=<%=cstr(rs("city"))%>&HtmlStartName =<%=rs("HtmlStart")%>"></IFrame>
<%rs.movenext
loop%>
สร้างหน้าโปรแกรม: ToHtm.asp ฉันอาจจะเขียนความคิดเห็นในซอร์สโค้ด **
<!--#include file="conn.asp"-->'data Connection file
-
เมื่อเกิดข้อผิดพลาด ดำเนินการต่อ ถัดไป'การประมวลผลการยอมรับข้อผิดพลาด
คำจำกัดความของ Dim City ทำให้เมืองสร้างเพจได้
City=Request.Querystring("City")' รับค่าโรงแรมในเมืองที่สร้างขึ้นที่ส่งผ่านจากกรอบงาน ซึ่งจะถูกนำมาใช้ในภายหลัง
HtmlStartName=Request.Querystring("HtmlStartName")'รับคำนำหน้าชื่อไฟล์ html ที่สร้างขึ้น
สตริงการค้นหา Dim sql ที่นี่ฉันจะเปิดตารางโดยตรงโดยไม่ต้องค้นหาตัวแปร เพียงแค่เขียนเงื่อนไขการค้นหาด้วยตัวเอง
sql = "select * จากโรงแรมโดยที่ [เมือง] = '" & เมือง & "' "
ออบเจ็กต์การดำเนินการข้อมูลของ Dim oRs
Dim PageCounts'หากต้องการใช้การสร้างเพจ คุณต้องทราบว่ามีกี่เพจ
ตั้งค่า oRs = Server.CreateObject("ADODB.Recordset")
oRs.Open Sql,oConn,1,1'ค้นหาตารางที่เปิดโรงแรมเท่ากับตัวแปร City
oRs.pagesize=10'สิบเรคคอร์ดเป็นหนึ่งหน้า
PageCounts=oRs.pagecount' เพื่อดูจำนวนเพจที่จะสร้าง ให้ใช้เพจในการสร้าง
Dim fs' กำหนดวัตถุไฟล์ fso
Dim Folders' ชื่อของโฟลเดอร์ที่เก็บเพจแบบคงที่
Dim Filestart' กำหนดคำนำหน้าสำหรับการสร้างไฟล์ htm
ตั้งค่า fs=Server.CreateObject("Scripting.FileSystemObject")
ดิม ไอ
สำหรับ i=1 ถึง PageCounts' จะเริ่มต้นสร้างเพจแบบวนซ้ำ นั่นคือ การสร้างเพจจะถูกสร้างขึ้น
หน้า=ฉัน
oRs.absolutepage=i'หมายเลขหน้า
rowcount=oRs.pagesize'Number of records on the current page
โฟลเดอร์=server.mappath("CityHtml")
ถ้า (fs.FolderExists(folders)) ให้พิจารณาว่ามีโฟลเดอร์อยู่หรือไม่
อื่น
fs.CreateFolder(folders)' จะสร้างโฟลเดอร์ CityHtml หากไม่มีอยู่
สิ้นสุดถ้า
ถ้า i=1 แล้ว
Filestart=HtmlStartName'หากเป็นหน้าแรก ให้กำหนดชื่อไฟล์และส่งผ่านชื่อค่า ตัวอย่างเช่น beijing คือ beijing.htm
อื่น
Filestart=HtmlStartName&i'If หน้าสองคือ beijing+1 เช่น ถ้ามีสองหน้า i เท่ากับ 2 ก็คือ beijing2.htm เป็นต้น...(เติมคำต่อท้าย .htm ต่อท้าย)
สิ้นสุดถ้า
ไฟล์ Dim' กำหนดตัวแปรชื่อไฟล์ข้อความที่สร้างขึ้น
Dim filez'define ตัวแปรชื่อพาธของไฟล์
files=Filestart&".txt"'ชื่อของไฟล์นี้
filez=folders&""&"เส้นทางไฟล์ข้อความของไฟล์
'ลบไฟล์
Dim checkfile'ตรวจสอบว่ามีไฟล์ข้อความอยู่แล้วหรือไม่ หากมีให้ลบออก
checkfile=server.mappath("CityHtml"&Filestart&".htm")'ตรวจสอบว่ามีไฟล์ htm อยู่แล้วหรือไม่ หากมี ให้ลบออก
if (fs.FileExists(checkfile)) แล้ว 'ตรวจสอบว่ามีไฟล์ htm อยู่แล้วหรือไม่ ถ้ามีให้ลบออก
Dim df'define file object *ลบไฟล์โดยใช้*
ตั้งค่า df=fs.GetFile(checkfile)'กำหนดไฟล์ที่จะลบ
df.delete' ลบไฟล์
สิ้นสุดถ้าสิ้นสุดการตัดสิน
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 cellspacing=0 cellpadding=0 align=center>"&vbcrlf&_
"<TR><TD width='100%'>"&vbcrlf)
'เริ่มเอาต์พุตเพจ
'ฉันจะไม่ลงรายละเอียดเกี่ยวกับหลักการของโปรแกรมเพจดิจิทัลที่นี่ เพื่อนๆ ที่ไม่เข้าใจสามารถค้นหาบนอินเทอร์เน็ตได้
หน้าสลัว' หน้าปัจจุบัน
Dim Page2'ตัวแปรเพจดิจิทัล
ตัวแปรการแบ่งหน้าดิจิทัลของ Dim
ถ้าหน้า = 1 แล้ว
ts.write (" [หน้าแรก] [หน้าก่อนหน้า] ")
อื่น
ts.write (" <a href="&HtmlStartName&".htm"&" class=blue>[หน้าแรก]</a> <a href="&HtmlStartName&Replace(page-1,1,"")&".htm"& " class=blue>หน้าก่อน</a> ")
สิ้นสุดถ้า
page2=(หน้า-(หน้า mod 10))/10
ถ้า page2<1 แล้ว page2=0
สำหรับ s=page2*10-1 ถึง page2*10+10
ถ้า s>0 แล้ว
ถ้า s=cint(page) แล้ว
ts.write (" <font color='#000000'>["& s & "]</font>")
อื่น
ถ้า s=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 แล้ว
ออกเพื่อ
สิ้นสุดถ้า
สิ้นสุดถ้า
ต่อไป
ถ้า cint(page)=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("Thai_Name")&"</TD></TR>"&vbcrlf)
หรือRs.movenenext
rowcount=rowcount-1'เมื่อจำนวนบันทึกบนเพจเป็น -1 วนซ้ำ
ts.write("</Table></body></html>"&vbcrlf)
ts.ปิด
set ts=nothing 'ปล่อยวัตถุ'
Dim EditFile' กำหนดการเขียนตัวแปรไฟล์ใหม่
ตั้งค่า EditFile = fs.GetFile(filez)'ตั้งค่าวัตถุไฟล์เขียนใหม่
EditFile.name= left(EditFile.name,len(EditFile.name)-4)&".htm" 'เขียนไฟล์ข้อความใหม่เป็น htm
ถัดไป 'การสร้างลูปสิ้นสุด (การสร้างเพจ)
set EditFile=nothing 'ปล่อยวัตถุ'
set fs=nothing'release วัตถุ
ถ้า err.number<>0 ดังนั้น 'จัดการข้อผิดพลาดที่สร้างขึ้น
Response.write(City&"เกิดข้อผิดพลาดที่ไม่ทราบสาเหตุขณะอัปเดต <A href=ToHtml.asp?City="&City&"&HtmlName="&HtmlStartName&">อัปเดตใหม่</A>")
อื่น
Response.Write(เมือง&"อัปเดตโรงแรมเสร็จสมบูรณ์"&ตอนนี้())
สิ้นสุดถ้า
-