用ASP和SQL实现基于Web的事件日历_ASP教程-查字典教程网
用ASP和SQL实现基于Web的事件日历
用ASP和SQL实现基于Web的事件日历
发布时间:2016-12-29 来源:查字典编辑
摘要:本文介绍如何建立基于Web的日历,同时为不熟悉ActiveServerPages(ASP)、SQL和ADO的开发者提供建立Web站点的过程介...

本文介绍如何建立基于Web的日历,同时为不熟悉ActiveServerPages(ASP)、SQL和ADO的开发者提供建立Web站点的过程介绍,也为有经验的开发者提供了Web站点可伸缩性方面的技巧。

随着网络应用的发展,基于Web的日历越来越受到人们的重视,对于显示诸如最后期限或日程安排之类的重要事件,或显示谁在什么时候休假,基于Web的日历都是有用的。本文描述了如何使用IIS和SQLServer内的ASP建立一个非常简单的基于Web的日历,并允许你与其他人共享你的日程表或管理一组人员的日历。

建立SQL服务器端

对Web日历而言,我们在服务器端仅需保存表明事件性质的一个文本字符串即可,字符串最长为100个字符。设计源代码如下:

Calendar.sql

--创建表

createtableSchedule

(

idSchedulesmallintidentityprimarykey,

dtDatesmalldatetimenotnull,

vcEventvarchar(100)notnull

)

go

--存储过程

createprocedureGetSchedule(@nMonthtinyint,@nYearsmallint)

as

selectidSchedule,convert(varchar,datepart(dd,dtDate))'nDay',vcEvent

fromSchedule

wheredatepart(yy,dtDate)=@nYearanddatepart(mm,dtDate)=@nMonth

orderbydatepart(dd,dtDate)

go

createprocedureAddEvent(@vcDatevarchar(20),@vcEventvarchar(100))

as

insertSchedule

select@vcDate,@vcEvent

go

createprocedureDeleteEvent(@idSchedulesmallint)

as

deleteSchedulewhereidSchedule=@idSchedule

go

设计ASP客户端

下图是Web日历的主要用户界面,用户可以看到哪些事件是已安排的。另外,使用底部的链接可以在日历中按月前后翻动。

ASP的实现代码如下:

header.asp

<@LANGUAGE="VBSCRIPT"

ENABLESESSIONSTATE=False%>

<%

'目的:表头包括用来启动所有页的文件

'还包括全局函数

OptionExplicit

Response.Buffer=True

Response.Expires=0

subDoheader(strTitle)

%>

<html>

<head>

<METAHTTP-EQUIV="Content-Type"CONTENT="text/html;charset=gb2312">

<title>EventCalendar-<%=strTitle%></title>

</head>

<bodybgcolor="white"link="blue"alink="blue"vlink="blue">

<basefontface="Verdana,Arial">

<center><h1>EventCalendar</h1>

<h3><%=strTitle%></h3>

<%

endsub

functionGetDataConnection()

dimoConn,strConn

SetoConn=Server.CreateObject("ADODB.Connection")

strConn="Provider=SQLOLEDB;DataSource=adspm;InitialCatalog=TeamWeb;"

strConn=strConn&&"UserId=TeamWeb;Password=x"

oConn.OpenstrConn

setGetDataConnection=oConn

endfunction

%>

利用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优化

ASP解释的主要优化方法将是利用高速缓存页面,以便无需每次读取都对它们进行解释。做到这一点的最简单的方法是借助ASPApplication对象。要做到这一点,你只需将HTML保存到含有月份和年份名称的应用程序变量(例如Calendar07-2000)中。然后,当显示EventCalendar页时,你首先检查一下看看日历是否已经保存在应用程序变量中,如果是,则只需检索它,这种方式会大大加快网站的查询过程。下面的代码显示了这个工作过程:

<<doheader>>

ShowCalendar(nMonth,nYear)

<<doFooter>>

subShowCalendar(nMonth,nYear)

ifApplication("Calendar"&&nMonth&&"-"&&nYear)=""then

<<BuildCalendar>>

Application("Calendar"&&nMonth&&"-"&&nYear)=<<Calendar>>

Endif

Response.WriteApplication("Calendar"&&nMonth&&"-"&&nYear)

Endsub

当然,在Events.asp页更改某个月份的事件时,你需要清空该月份的应用程序变量,以便反映这些事件的更改状况。

安全性

有几种方法可实现此站点上的安全性。对于Intranet站点,基于WindowsNT的验证是最容易设置的,其原因是你的用户将很可能已经登录到网络。你可让所有用户查看EventCalendar页,但是只有管理员能访问Add/RemoveEvents页。

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新ASP教程学习
    热门ASP教程学习
    编程开发子分类