基于Web的待办事项列表应用开发

在日常工作中,经常需要记住各种项目或需要修复的错误。然而,作为人类,偶尔会忘记一些重要的事情。因此,当开始使用安装了IIS的Windows XP Professional时,决定创建一个Web“待办事项列表”,以提醒所有需要完成的重要事项。

本可以将这个Web应用程序限制在浏览器窗口中,但认为能够最终利用Active Desktop会非常酷。待办事项列表将始终显示在桌面上!

假设

当然,要使Web应用程序工作,必须拥有一个Web服务器。这个项目使用Internet Information Server和Active Server Pages来执行大部分功能。

待办事项存储在数据库中(使用的是Sybase ASA 7),作为Web服务器机器上的服务运行。只有两个表,分别是:

  • item
  • user

以下是ToDoLists数据库的详细说明:

Item表:

  • item_num:整数,主键
  • description:字符(256)
  • status:字符(1)
  • user_id:字符(10)
  • date_entered:日期
  • date_due:日期
  • priority:字符(1)

User表:

  • user_id:字符(10),主键
  • name:字符(80)
  • password:字符(20)

使用多个ASP页面来更新和显示ToDoLists数据库项。首先,新用户被引导到login.asp,他们在那里输入用户ID、名称和密码。

HTML代码如下:

<form id="FORM1" name="FORM1" action="default.asp" method="get"> <table> <tr> <td>User ID:</td> <td> <input name="U" size="5" maxlength="10"> </td> </tr> <tr> <td>Password:</td> <td> <input type="password" name="P" size="10" maxlength="20"> </td> </tr> <tr> <td>Name:</td> <td> <input name="N" size="20" maxlength="80"> </td> </tr> <tr> <td colspan="2"> <input type="submit" name="submit" value="Log In"> </td> </tr> </table> </form>

FORM标签的action值将表单数据提交到default.asp,然后添加新用户,或登录现有用户,并处理应用程序的主用户界面。

用户通过default.asp登录后,可以执行三个主要功能:

  • 插入新项目
  • 更新现有项目
  • 删除已完成的项目

这些功能分别在单独的ASP页面上执行,完成后将用户重定向回default.asp以更新主用户界面。

当用户填写“输入新项目”表单并单击“保存”按钮时,表单数据被发送到insertitem.asp,然后添加到item数据库表中。然后用户被重定向到主页面。

VBScript代码如下:

strUser = Request.QueryString("U") strPwd = Request.QueryString("P") strName = Request.QueryString("N") strDesc = Request.QueryString("description") strDueDate = Request.QueryString("due_date") strPriority = Request.QueryString("priority") If Len(strDesc) > 255 Then strDesc = Left(strDesc, 255) End If strSelect = "INSERT INTO item (description, date_entered, date_due, priority, status, user_id) VALUES ('" + strDesc + "', today(), '" + strDueDate + "', '" + strPriority + "', 'O', '" + strUser + "')" ... Response.Redirect("default.asp?U=" + strUser + "&P=" + strPwd + "&N=" + strName)

每个列出的项目都显示在一个嵌套在表单中的表格中。表格有三个单元格,一个用于“完成”复选框,一个用于优先级指示器(低=无,中=*,高=!),一个用于项目的描述。(目前,用户只能通过复选框更新项目是否已完成。)当用户想要标记项目为已完成时,他/她勾选复选框,表单被提交到updateitem.asp。项目在数据库中更新,然后用户被重定向到主页面。

VBScript代码如下:

strUser = Request.QueryString("U") strPwd = Request.QueryString("P") strName = Request.QueryString("N") strSelect = "SELECT item_num FROM item WHERE user_id = '" + strUser + "'" Set adorItems = Server.CreateObject("ADODB.RecordSet") adorItems.Open strSelect, Cnxn While Not adorItems.EOF strStatus = Request.QueryString(CStr(adorItems("item_num"))) If strStatus = "on" Then strUpdate = "UPDATE item SET status = 'C' WHERE item_num = " & CStr(adorItems("item_num")) + " AND user_id = '" + strUser + "'" Else strUpdate = "UPDATE item SET status = 'O' WHERE item_num = " & CStr(adorItems("item_num")) + " AND user_id = '" + strUser + "'" End If Set adorCmd = Server.CreateObject("ADODB.Command") Set adorCmd.ActiveConnection = Cnxn adorCmd.CommandText = strUpdate adorCmd.Execute() Set adorCmd = Nothing adorItems.MoveNext() Wend ... Response.Redirect("default.asp?U=" + strUser + "&P=" + strPwd + "&N=" + strName)

当用户单击“删除已完成项目”按钮时,用户ID、名称和密码被发送到deletecompleted.asp,主页面上所有选中的项目将从数据库中删除。然后用户再次被重定向到主页面。

VBScript代码如下:

strUser = Request.QueryString("U") strPwd = Request.QueryString("P") strName = Request.QueryString("N") strDelete = "DELETE FROM item WHERE status = 'C' AND user_id = '" + strUser + "'" Set adorCmd = Server.CreateObject("ADODB.Command") Set adorCmd.ActiveConnection = Cnxn adorCmd.CommandText = strDelete adorCmd.Execute() ... Response.Redirect("default.asp?U=" + strUser + "&P=" + strPwd + "&N=" + strName)

要利用Active Desktop,不得不创建一个Channel Definition Format (CDF)文件,该文件用于将Web页面植入桌面。由于不希望始终看到登录页面,default.asp将通过在URL中发送用户ID、名称和密码来登录用户。这种额外的便利性使得无法为每个人提供一个通用的CDF,因此在用户登录后重写CDF文件,使CDF特定于该用户。

VBScript代码如下:

Dim objFileSys, objTextStream Dim sText Set objFileSys = Server.CreateObject("Scripting.FileSystemObject") Set objTextStream = objFileSys.OpenTextFile("drive:yourpath\todolists\todolists_ad\activedesktop.cdf", ForWriting, True) sText = "" & _ "" & _ "" & _ "ToDo List" & _ "" & _ "" & _ "" & _ "" & _ "" objTextStream.Write sText objTextStream.Close

如果用户A在用户B登录之前登录并添加了Active Desktop频道,然后用户B登录,那么用户A的Active Desktop频道将以用户B的身份登录……这可能会引起问题,它并不完美。

要将频道添加到Active Desktop,用户单击主页面底部的“添加到Active Desktop”按钮,然后就可以了!每次用户重新启动时,待办事项列表都会清晰可见。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485