|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
本文介绍如何建立基于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 smallint identity primary key, dtDate smalldatetime not null, vcEvent varchar(100) not null ) go -- 存储过程 create procedure GetSchedule (@nMonth tinyint, @nYear smallint) as select 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) go create procedure AddEvent (@vcDate varchar(20), @vcEvent varchar(100)) as insert Schedule select @vcDate, @vcEvent go create procedure DeleteEvent (@idSchedule smallint) as delete Schedule where idSchedule = @idSchedule go 设计ASP客户端 下图是Web日历的主要用户界面,用户可以看到哪些事件是已安排的。另外,使用底部的链接可以在日历中按月前后翻动。 [sayyes]http://www.ccidnet.com/tech/web/2001/08/31/image/10831c31.jpg[/sayyes] ASP的实现代码如下: header.asp <@ LANGUAGE="VBSCRIPT" ENABLESESSIONSTATE = False %> <% \\\' 目的:表头包括用来启动所有页的文件 \\\' 还包括全局函数 Option Explicit Response.Buffer = True Response.Expires = 0 sub Doheader(strTitle) %> <html> <head> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312"> <title>Event Calendar - <%= strTitle %></title> </head> <body bgcolor="white" link="blue" alink="blue" vlink="blue"> <basefont face="Verdana, Arial"> <center><h1>Event Calendar</h1> <h3><%= strTitle %></h3> <% 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 优化 ASP 解释的主要优化方式将是利用高速缓存页面,以便无需每次读取都对它们进行解释。做到这一点的最简朴的方式是借助 ASP Application 对象。要做到这一点,你只需将HTML保存到含有月份和年份名称的应用程序变量(例如 Calendar07-2000)中。然后,当显示 Event Calendar 页时,你首先检查一下看看日历是否已经保存在应用程序变量中,假如是,则只需检索它,这种方法会大大加快网站的查询过程。下面的代码显示了这个工作过程: <<do header>> ShowCalendar(nMonth, nYear) <<do Footer>> sub ShowCalendar(nMonth, nYear) if Application("Calendar" && nMonth && "-" && nYear) = "" then <<Build Calendar>> Application("Calendar" && nMonth && "-" && nYear) = <<Calendar>> End if Response.Write Application("Calendar" && nMonth && "-" && nYear) End sub 当然,在 Events.asp 页更改某个月份的事件时,你需要清空该月份的应用程序变量,以便反映这些事件的更改状况。 安全性 有几种方式可实现此站点上的安全性。对于 Intranet 站点,基于Windows NT的验证是最轻易设置的,其原因是你的用户将很可能已经登录到网络。你可让所有用户查看 Event Calendar 页,但是只有治理员能访问Add/Remove Events 页。 假如关心审计,你可以轻易地修改 AddEvent 和 DeleteEvent 过程将其信息保存到审计表中。你还可以确保 IIS 为每个页命中的查询字符串和用户进行日志记录,然后逐个分析日志以确定何人于何时做了什么,这是异常简朴的。 本文演示了建立基于 Web 日历的基本过程,该程序虽然简朴,但是可以很轻易地将其扩展为功能完备的站点。限于篇幅,笔者不再深入介绍,感爱好的读者可到InfoCD第八期光盘中找到详细实现步骤。 返回类别: 教程 上一教程: WEB打印设置解决方案一(通过修改注册表改变IE打印设置) 下一教程: 完整的访问统计程序(二 程序篇) 您可以阅读与"用ASP和SQL实现基于WEB的事件日历"相关的教程: · 用WEB(ASP)方法实现SQL SERVER 数据库的备份和恢复 · 关于如何保障Winnt+asp +sql web站点安全经验 · asp实现在web中显示电子表格数据(一)显示数据表格的应用 · ASP实现在WEB中显示电子表格数据(一)显示数据表格的应用 · asp实现在web中显示电子表格数据(四)创建文件选择列表 |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |