分享ASP網(wǎng)頁開發(fā)過程中的小技巧
ASP是Microsoft公司推出的一種用以取代通用網(wǎng)關(guān)接口的技術(shù),英文全稱Active Server Pages。它是一個Web服務(wù)器端的運(yùn)行環(huán)境。ASP本身包含了VBScript和javascript引擎,使得腳本可以直接嵌入HTML中?,F(xiàn)將我們在ASP運(yùn)用過程中的幾個小技巧與大家分享。
一、新聞欄
大多數(shù)網(wǎng)頁上有新聞欄,用以顯示最近新聞的主題,點(diǎn)擊此主題即可查看詳細(xì)報道。倘若每天都一條條寫在網(wǎng)頁上,再依次建立鏈接太過麻煩。如何讓其可以根據(jù)文件自動更新呢?
1.預(yù)備工作
1)建一個文件夾,起名為"news",假設(shè)存于D:/ASP/目錄下;
2)把每條新聞的詳細(xì)內(nèi)容寫入文件,且此文件的命名形式為:x (newstime).htm。其中x為此條新聞的主題,newstime為此條新聞發(fā)布的時間(按年-月-日順序?qū)懀?。為什么要這樣寫呢?看了下面的算法思想和源程序就知道了。
2.算法思想
對于news文件夾中的文件,依據(jù)它們文件名中新聞發(fā)布的時間(即括號內(nèi)的內(nèi) 容),從大到小排序。這樣一來,最新的新聞排在最上面,只要在網(wǎng)頁相應(yīng)位置顯示 news文件夾中最上面的若干個文件名,因為文件名的命名方式如1中所述,就可以在新聞欄中顯示最新新聞了。
3.源程序段(用VBScript編寫的)
以下為引用的內(nèi)容:
- <%
- Dim fs, f, f1, fc, filenum
- dim count
- dim i,j,t1,t2
- dim file(100)
- dim mystr(100) '標(biāo)志文件中日期的字符串
- count=0
- Set fs = CreateObject("Scripting.FileSystemObject")
- Set f = fs.GetFolder("D:/ASP/news ")
- Set fc = f.Files
- for each f1 in fc
- count=count+1 '計文件個數(shù)
- file(count)=fs.getbasename(f1) '標(biāo)記文件基名
- mypos=InStr(1, file(count), "(") ')在文件基名中的位置
- '文件基名中的日期字符串
- mystr(count) = Mid(file(count), mypos + 1, Len(file(count)) - (mypos + 1))
- next
- for i=1 to count
- for j=1 to count-i
- if mystr(j)<mystr(j+1) then
- t1=file(j)
- file(j)=file(j+1
- file(j+1)=t1
- t2=mystr(j)
- mystr(j)=mystr(j+1)
- mystr(j+1)=t2
- end if
- next
- next
- j=1
- if count<10 then '新聞欄中共顯示10條新聞
- temcount=count
- else
- temcount=10
- end if
- do while j<=temcount%>
- <a href="file:///D:/ASP/news/<%=file(j)%>.htm" target="new_window"><%=file(j)%> </a>
- <%
- j=j+1
- loop
- %>
4.新聞欄內(nèi)容更新
只要養(yǎng)成良好的書寫習(xí)慣,使得新聞的名稱遵照1的要求,再把寫好的文件存入news文件夾,新聞欄就會自動顯示出最新的10條新聞了。
二、公告欄
除了新聞欄之外,較常用的就是公告欄了,公告欄主要用來顯示一些重要的通知。當(dāng)然這些通知是要經(jīng)常變化的。讓用戶每次更改公告內(nèi)容時都到源程序里去修改嗎?當(dāng)然不行,我們必須提供一個維護(hù)的界面給用戶,使得用戶只要輸入通知,網(wǎng)頁上的公告欄里自然就會顯示通知內(nèi)容了。
1.解決這一問題的關(guān)鍵在于靈活應(yīng)用FileSystemObject對象和TextStream對象。
在實際應(yīng)用中,你無需自行建立TextStream對象,因為只要利用FileSystemObject對象打開了文件,系統(tǒng)便自動建立TextStream對象。也就是說,一旦調(diào)用OpenTextFile或CreateTextFile方法,便會傳回TextStream對象。
2.所需相關(guān)文件有三個
更新.asp、公告.asp、維護(hù)文本.txt,把它們存入d:/ASP/maintain目錄下。
3.三個文件的主要功能和源程序段:
1)更新.asp
主要功能是讓用戶輸入欲顯示的公告,檢驗輸入內(nèi)容是否為空,若不為空,則提交給”公告.asp”程序處理。
以下為引用的內(nèi)容:
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
- <meta name="GENERATOR" content="Microsoft FrontPage 4.0">
- <meta name="ProgId" content="FrontPage.Editor.Document">
- <title>更新公告欄內(nèi)容</title>
- </head>
- <body>
- <script language=vbscript>
- function datacheck()
- dim msg,errflag
- errflag=true
- if len(trim(maintain.t1.value))=0 then
- focusto(0)
- errflag=false
- msg="請輸入需提交的公告內(nèi)容"
- end if
- if (errflag=false) then
- msgbox msg,64,"oh no!"
- exit function
- end if
- datacheck=errflag
- maintain.submit
- end function
- sub focusto(x)
- document.maintain.elements(x).focus()
- end sub
- </script>
- ①<form method="POST" action="公告.asp" name="maintain">
- <p><input type="text" name="t1" size="84"><input type="reset" value="重寫" name="B2">
- <input type="button" value="提交" name="B1" onclick="datacheck()"></p>
- <hr color=#FF99FF size=1>
- </form>
- </body>
- </html>
語句①中的action="公告.asp"部分,指出了在form提交后要啟動的程序為“公告.asp”。
2)公告.asp
通過FileSystemObject對象和TextScream對象對"維護(hù)文本.txt"文件進(jìn)行讀寫操作,使得此文件最上面5行的內(nèi)容為要在公告欄里顯示的公告。
以下為引用的內(nèi)容:
- <%
- dim str
- str=request.form(t1)
- dim s(5)
- const forreading=1,forwriting=2
- dim fso,myfile
- set fso=server.createobject("scripting.FileSystemObject")
- set myfile=fso.opentextfile("維護(hù)文本.txt",forreading)'以Reading模式打開文件
- for i=1 to 5 '公告欄共顯示5條公告
- s(i)=myfile.readline'讀取文件內(nèi)容
- next
- myfile.close
- set myfile=fso.opentextfile("維護(hù)文本.txt",forwriting,true) '以writing模式打開文件
- myfile.writeline str
- for i=1 to 4
- myfile.writeline s(i) '將數(shù)據(jù)寫回文件
- next
- myfile.close
- %>
3)維護(hù)文本.txt
此文件開始為空,從”更新.asp”顯示的界面輸入公告后,此文件內(nèi)容被自動寫入。
4.在主頁文件(通常是default.asp)欲顯示公告位置的代碼段中加入如下代碼,即可顯示出更新后的公告。
以下為引用的內(nèi)容:
- <marquee scrollamount="2" scrolldelay="50" direction="up" width="223"
- height="133" id="a" onmouseover="a.stop()" onmouseout="a.start()">'公告欄上下滾動
- <%
- Dim s(20)
- Dim fso, MyFile
- Set fso = CreateObject("Scripting.FileSystemObject")
- Set MyFile = fso.OpenTextFile("D:/ASP/maintain/維護(hù)文本.txt",1,true)
- for i=1 to 5
- ReadLineTextFile=MyFile.ReadLine
- s(i)=ReadLineTextFile
- response.write "★ " & s(i)
- response.write "<br>"
- next
- %>
- </marquee>
上述兩個小技巧舉一反三,可以解決很多此類問題。網(wǎng)頁設(shè)計愛好者們不妨一試。
【編輯推薦】