本文介紹如何建立基於web的日曆,同時為不熟悉active server pages(asp)、sql和ado的開發者提供建立web站點的過程介紹,也為有經驗的開發者提供了web站點可伸縮性方面的技巧。
隨 著網路應用的發展,基於web的日曆越來越受到人們的重視,對於顯示諸如最後期限或日程安排之類的重要事件,或顯示誰在什麼時候休假,基於web的日曆都 是有用的。本文描述了如何使用iis和sql server內的asp建立乙個非常簡單的基於web的日曆,並允許你與其他人共享你的日程表或管理一組人員的日曆。
建立sql伺服器端
對web日曆而言,我們在伺服器端僅需儲存表明事件性質的乙個文字字串即可,字串最長為100個字元。設計源**如下:
calendar.sql
-- 建立表
create table schedule
(idschedule **allint identity primary key,
dtdate **alldatetime not null,
vcevent varchar(100) not null)go
-- 儲存過程
create procedure getschedule (@nmonth tinyint, @nyear **allint)
asselect idschedule, convert(varchar, datepart(dd, dtdate)) 'nday', vcevent
from schedule
where datepart(yy, dtdate) = @nyear and datepart(mm, dtdate) = @nmonth
order by datepart(dd, dtdate)
gocreate procedure addevent (@vcdate varchar(20), @vcevent varchar(100))
asinsert schedule
select @vcdate, @vcevent
gocreate procedure deleteevent (@idschedule **allint)
asdelete schedule where idschedule = @idschedule
go設計asp客戶端
下圖是web日曆的主要使用者介面,使用者可以看到哪些事件是已安排的。另外,使用底部的鏈結可以在日曆中按月前後翻動。
asp的實現**如下:
header.asp
<@ language="vbscript"
enablesessionstate = false %>
<%
' 目的:表頭包括用來啟動所有頁的檔案
' 還包括全域性函式
option explicit
response.buffer = true
response.expires = 0
sub doheader(strtitle)
%>
<%
end sub
function getdataconnection()
dim oconn, strconn
set oconn = server.createobject("adodb.connection")
strconn = "provider=sqloledb; data source=adspm; initial catalog=teamweb; "
strconn = strconn && "user id=teamweb; password=x"
oconn.open strconn
set getdataconnection = oconn
end function
%>
利 用ado,我們可以很容易地將 asp 頁面與 sql 資料庫相連線。首先我們要建立乙個到資料庫的連線。為了獲得記錄集,我們要呼叫 connection 物件的execute方法,將希望執行的命令的文字字串傳入,一旦有了記錄集,就可以在其中迴圈。header.asp 包含獲得資料連線的函式,這意味著如果資料來源有變化,我們只有乙個位置需要編輯連線資訊(伺服器、使用者和口令)。請注意,作為結果,我們必須在函式的末尾 使用set命令傳出新連線。
優化效能
asp使建立web頁面變得十分容易,但如果想建立乙個可以適應大量使用者的站點,你就需要仔細考慮編碼。下面筆者將為讀者介紹增強基於web日曆可伸縮性的幾種方法,這些方法也可用於提高任何基於asp的web站點的效能。
1.sql優化
提高站點效能的乙個簡單方法是給 schedule表的date欄位新增乙個索引,這樣,它會在給定日期之間進行查詢,因而將加快 getevents的儲存過程。
對 於小型站點,我們可以將 sql 與 iis 安裝在同一伺服器上,一旦站點訪問量開始增長,我們可將 sql 移動到其自身的伺服器上,當訪問量進一步增長時,我們可以新增均指向同一 sql 伺服器的多個 iis 伺服器。如果 sql 伺服器的通訊量過度增長時,還可以將資料分割到不同的伺服器上,我們可以將奇數月份分配到一台伺服器,將偶數月份分配到另一台伺服器上,當然,這需要修改 header.asp 中的 getdataconnection,以便它為你提供基於此月份的正確連線。
2.asp 優化
當然,在 events.asp 頁更改某個月份的事件時,你需要清空該月份的應用程式變數,以便反映這些事件的更改狀況。
安全性
有 幾種方法可實現此站點上的安全性。對於 intranet 站點,基於windows nt的驗證是最容易設定的,其原因是你的使用者將很可能已經登入到網路。你可讓所有使用者檢視 event calendar 頁,但是只有管理員能訪問add/remove events 頁。
用ASP實現WEB頁面分使用者許可權的訪問
前幾日上網,看到有在電腦報論壇的asp版提出如下的問題 我試著用asp的方法為網頁設定了口令,但 是使用者只要知道下一步鏈結的檔名,就可以在位址列輸入該檔名而繞過口令檔案直接瀏覽該檔案。怎樣才能達到真 正加密的目的 如果不輸入口令 使用者名稱就無法瀏覽網頁?上面的問題,是在基於internet in...
用的ASP防SQL注入程式
sql注入被那些菜鳥級別的所謂黑客高手玩出了滋味,發現現在大部分黑客入侵都是基於sql注入實現的。sql注入被那些菜鳥級別的所謂黑客高手玩出了滋味,發現現在大部分黑客入侵都是基於sql注入實現的,哎,誰讓這個入門容易呢,好了,不說廢話了,現在我開始說如果編寫通用的sql防注入程式一般的http請求不...
用ASP建立WEB頁面計數器
用asp建立web頁面的計數器通常有兩種簡單的方法,乙個是建立global.asa,另外乙個是直接寫乙個asp檔案來進行計數。一般使用乙個文件來儲存瀏覽數量。1 用global.asa來寫計數器寫乙個global.asa檔案,存放到虛擬目錄的根目錄下面,源 如下 呼叫計數器時候在網頁中寫入即可,不過...