




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章构建Web2.0网络应用的根底工程本书共介绍了6个Web2.0时代比较流行的网络应用程序。它们是RSS、Blog、WebTags、WebStore、XMLBBS、ASPNET2AjaxMail。这6个网络应用程序被组织在同一个解决方案——Web2ASPNET2中。并且,笔者还为这6个网络应用程序提供了3个根底工程,具体描述如下。工程OperateSqlServer,主要封装和实现了对数据库的操作,如检索、选择、添加、修改、删除、排序、过滤等。工程CommonOperation,主要封装和实现了网络应用程序的通用操作,如数据类型转换、字符串处理、数据缓存等。7.1解决方案Web2ASPNET2解决方案Web2ASPNET2共包括6个网络应用程序〔RSS、Blog、WebTags、WebStore、XMLBBS和ASPNET2AjaxMail〕和3个根底工程〔OperateSqlServer、CommonOperation和UserCommonOperation〕。在VisualStudio2005中翻开解决方案Web2ASPNET2,在【解决方案资源管理器】面板中查看该解决方案,7.2操作数据库的工程OperateSqlServer工程OperateSqlServer包含两个类文件:OperateDatabase.cs和DataCommon.cs。其中,第一个文件定义了与数据库操作相关的方法和属性。第二个文件中定义了快捷执行数据库操作的方法和属性。在VisualStudio2005的【解决方案资源管理器】面板中查看该工程,7.2.1获取配置数据库连接字符串的标识在下述程序代码中,类OperateDatabase定义了两个属性:ReturnValueString和ConnectionStringNameInWebConfig。第一个属性为保存执行数据库操作返回值的参数标识。第二个属性为从配置文件Web.Config中获取数据库连接字符串的标识。它的值和配置文件Web.Config中的connectionstrings元素的Name属性的值相等。定义这两个属性的程序代码如下所示。7.2.2管理数据库的连接在下述程序代码中,类OperateDatabase定义方法CreateSqlConnection()来创立连接。该方法首先从Cache中获取数据库连接字符串。如果为空,那么从配置文件Web.Config中获取数据库连接字符串,同时缓存获取的字符串。然后创立一个新的连接对象SqlConnection。该方法的程序代码如下所示。7.2.3创立存储过程的参数在下述程序代码中,类OperateDatabase定义了4个创立存储过程参数的方法,如下所示。〔1〕privatestaticSqlParameterCreateParam〔stringParamName,SqlDbTypeDbTypeInt32Size,ParameterDirectionDirection,objectValue〕。〔2〕publicstaticSqlParameterCreateInParam(stringParamName,SqlDbTypeDbType,intSize,objectValue)。〔3〕publicstaticSqlParameterCreateOutParam(stringParamName,SqlDbTypeDbType,intSize)。7.2.4创立执行存储过程的命令和适配器在下述程序代码中,类OperateDatabase定义了两个创立执行存储过程的命令和适配器的方法,如下所示。〔1〕privatestaticSqlCommandCreateSqlCommand〔stringprocName,paramsSqlParameter[]prams〕;〔2〕privatestaticSqlDataAdapterCreateSqlDataAdapter〔stringprocName,paramsSqlParameter[]prams〕。7.2.5获取记录的数量在下述程序代码中,类OperateDatabase定义了两个获取记录的数量的方法,如下所示。〔1〕publicstaticintRunProcScalar〔stringprocName〕。〔2〕publicstaticintRunProcScalar〔stringprocName,paramsSqlParameter[]prams〕。7.2.6使用SqlDataReader对象从数据库中读取数据在下述程序代码中,类OperateDatabase定义了两个使用SqlDataReader对象从数据库中读取数据的方法,如下所示。〔1〕publicstaticvoidRunProc〔stringprocName,outSqlDataReaderdr〕。〔2〕publicstaticvoidRunProc〔stringprocName,outSqlDataReaderdr,paramsSqlParameter[]prams〕。7.2.7获取数据并填充DataSet对象在下述程序代码中,类OperateDatabase定义了4个获取数据并填充DataSet对象的方法,如下所示。〔1〕publicstaticvoidRunProc〔stringprocName,refDataSetds〕。〔2〕publicstaticvoidRunProc〔stringprocName,refDataSetds,paramsSqlParameter[]prams〕。7.2.8对数据库执行插入、更新和删除操作在下述程序代码中,类OperateDatabase定义了两个对数据库执行插入、更新和删除操作的方法,如下所示。〔1〕publicstaticintRunProc〔stringprocName〕。〔2〕publicstaticintRunProc〔stringprocName,paramsSqlParameter[]prams〕。7.2.9快捷执行数据库的操作工程OperateSqlServer定义了类DataCommon,它提供了6个快捷执行数据库操作的方法。它们分别是:〔1〕publicstaticSqlDataReaderGetDataByReader〔stringprocName〕。〔2〕publicstaticDataSetGetDataByDataSet〔stringprocName〕。〔3〕publicstaticSqlDataReaderGetDataByReaderIDParam〔stringprocName,intidValue〕。7.2.10数据缓存工程OperateSqlServer定义了类Cache,它提供了缓存数据的功能。在下述程序代码中,该类定义了用来保存数据的HashTable对象、缓存数据的方法CachingData〔stringkey,objectvalue〕和获取数据的方法GetData〔stringkey〕。7.3通用操作的工程CommonOperation工程CommonOperation包含两个类文件:CommonOperation.cs和CustomCache.cs。其中,第一个文件定义了系统通用操作的方法和属性。第二个文件中定义了缓存系统数据相关的方法和属性。在VisualStudio2005的【解决方案资源管理器】面板中查看该工程,7.3.1转换数据类型在下述程序代码中,类DataTypeConvert定义了4个转换数据类型的静态方法,如下所示。〔1〕publicstaticintConvertToInt〔stringvalue〕,把一个字符串转换为一个整数。〔2〕publicstaticDateTimeConvertToDateTime〔stringvalue〕,把一个字符串转换为一个时间对象〔DateTime〕。7.3.2处理字符串在下述程序代码中,类DataTypeConvert定义了两个处理字符串的静态方法,如下所示。〔1〕publicstaticstringCreatedStringByTime(),把系统当前时间转换为一个字符串。该字符串由当前时间的年、月、日、小时、分钟、秒和毫秒的字符串组成。〔2〕publicstaticstringFormatStringLength〔stringstr,intlength〕,把一个字符串转换为一个指定最大长度的字符串。其中,最大长度由参数length指定。如果被转换的字符串超过了参数length指定的长度,那么只显示长度为length的字符串,并在最后添加“...〞。7.3.3设置按钮可用性在下述程序代码中,类ButtonEnable定义了3个设置按钮可用性的静态方法。它们是:〔1〕publicstaticvoidControlButtonEnable〔Buttonbutton,int[]idList〕,根据整数数组设置按钮的可用性。如果该数组中存在一个小于0的数,那么该按钮不可用。〔2〕publicstaticvoidControlButtonEnable〔Buttonbutton,paramsListControl[]listControl〕,根据列表控件〔ListControl〕数组设置按钮的可用性。如果该数组中存在一个列表控件的选择项为空,那么该按钮不可用。7.3.4绑定控件数据在下述程序代码中,类DataBinder定义了9个绑定控件〔列表控件、GridView控件和DataList控件〕数据的静态方法。其中,绑定列表控件数据的方法如下所示。〔1〕publicstaticvoidBindListData〔ListControllist,SqlDataReaderdataSource,stringdataTextField,stringdataValueField〕。其中,数据源为SqlDataReader对象,列表控件的值域和文本域分别由dataValueField和dataTextField参数指定。7.3.5设置列表选择项在下述程序代码中,类ListSelectedItem定义了两个设置列表控件的选择项的静态方法如下所示。〔1〕publicstaticvoidListSelectedItemByValue〔ListControllist,stringvalue〕。如果列表控件list中某一个选择项的Value属性的值等于value参数的值,那么设置该选择项为列表控件list的选择项。〔2〕publicstaticvoidListSelectedItemByText〔ListControllist,stringtext〕。如果列表控件list中某一个选择项的Text属性的值等于text参数的值,那么设置该选择项为列表控件list的选择项。7.3.6缓存系统数据在下述程序代码中,类CustomCache定义了两个与缓存系统数据相关的方法,如下所示。〔1〕publicvoidAddValue〔stringkey,objectvalue〕。将被缓存的数据添加到Cache中。其中,键值由参数key指定,缓存的数据由参数value指定。〔2〕publicobjectGetValue〔stringkey〕。从Cache中获取缓存的数据。其中,键值由参数key指定。7.3.7弹出网页对话框在下述程序代码中,类Dialog定义了两个弹出网页对话框的静态方法,如下所示。〔1〕publicstaticvoidOpenDialog〔HttpResponseresponse,stringmessage〕。在普通Web窗体页中,弹出一个对话框。并且,该对话框中显示的消息为参数message的值。〔2〕publicstaticvoidOpenDialogInAjax〔Controlc,stringmessage〕。在ASP.NETAJAX环境中的Web窗体页中,弹出一个对话框。并且,该对话框中显示的消息为参数message的值。7.4管理用户信息的工程UserCommonOperation工程UserCommonOperation包含一个类文件:UserCommonOperation.cs。该文件定义了与用户信息相关的方法和属性。在VisualStudio2005的【解决方案资源管理器】面板中查看该工程,7.4.1封装用户登录信息在下述程序代码中,类UserInfo封装了与用户登录相关的信息,如用户ID、用户名称、登录时间等。类UserInfo定义了3个属性,分别表示用户的ID、名称和登录时间。该类还定义了四个构造函数,如下所示。〔1〕publicUserInfo(),默认构造函数。〔2〕publicUserInfo〔intuserID〕,初始化用户的ID值。7.4.2存储用户登录信息在下述程序代码中,类UserCommonOperation定义了4个存储用户登录相关信息的静态方法,如下所示。〔1〕publicstaticvoidStoreUserInfo〔HttpSessionStatesession,intuserID0,存储用户的ID值。〔2〕publicstaticvoidStoreUserInfo〔HttpSessionStatesession,intuserID,stringusername〕,存储用户的ID值和用户名称。7.4.3获取用户登录信息在下述程序代码中,类UserCommonOperation定义了一个获取用户登录相关信息的静态方法:publicstaticUserInfoGetUserInfo〔HttpSessionStatesession〕。该方法根据给定的键值从Session对象中获取用户登录信息,并把获取的信息保存在UserInfo对象。7.4.4取消用户会话在下述程序代码中,类UserCommonOperation定义了一个取消用户会话的静态方法:ClearAndAbandon〔HttpSessionStatesession〕。该方法清空Session对象中的数据,并停止当前会话。第8章RSSRSS是Web2.0的重要元素。RSS是ReallySimpleSyndication的简称,它是一种网页内容联合格式〔WebContentSydicationFormat〕。本章将介绍RSS文档的标准、如何创立一个简单的RSS文档、订阅RSS源的方法,并创立一个基于Web的RSS阅读器来阅读订阅的RSS源。其中,该RSS阅读器的效果,本章网络应用程序〔网站〕的名称为RSS。8.1什么是RSS本小节将介绍RSS的根底知识。内容包括RSS的定义、RSS文档的格式、RSS的技术标准,以及目前比较流行的RSS的阅读器。8.1.1RSS概述RSS文档也是一种XML文档。因此,RSS文档都必须遵循XML1.0标准〔该标准发布在W3C网站上〕。目前,RSS存在多个版本:0.91〔2000年〕、0.92〔2000年12月〕、0.94〔2002年8月〕、〔2002年〕等。在每一个RSS文档的开头处,存在一个<rss>元素。该元素包含属性version,该属性指定RSS文档的版本。下面代码标识了RSS文档的版本为2.0版本。<rssversion="2.0">8.1.2RSS技术标准本小节将介绍RSS文档的技术标准,主要包括RSS文档的数据类型和元素。1.数据类型2.元素8.1.3目前流行的RSS阅读器随着RSS摘要数量的增加,RSS阅读器已经成为了Web2.0世界里面的一个必需品。它可以帮助用户发现和组织感兴趣的频道列表,并提供统一的阅读界面。下面将介绍国内外目前比较流行的RSS阅读器。1.看天下〔〕2.新闻蚂蚁〔〕3.周博通〔〕4.资讯通〔〕5.新浪点点通8.2总体功能设计和数据库设计应用程序RSS主要实现RSS订阅、RSS阅读器两大功能。其中,RSS订阅包括订阅互联网上包含RSS新闻的页面等功能。RSS阅读器包括读取RSS页面的内容,并解释该页面的功能。8.2.1总体功能设计应用程序RSS主要实现了RSS订阅和RSS阅读器两大功能。其中,RSS订阅主要处理RSS源。RSS阅读器主要处理RSS页面的内容。具体说明如下:1.RSS订阅2.RSS阅读器8.2.2表设计应用程序RSS的数据库比较简单,它仅仅包含一个表——RSSUrl。该表存储RSS页面的链接地址。RSS阅读器将读取该表中存储地址的页面的内容。下面对RSS外链接地址表RSSUrl作下介绍。8.3应用程序RSS本小节主要介绍应用程序RSS的组成,及其通用模块的设计。其中,该应用程序由Web窗体页、类文件、主题文件、资源文件等组成。通用模块包括一个名称为“模块标题〞的用户控件ModuleTitle.ascx,它存放在UserControl目录下。8.3.1应用程序RSS的组成应用程序RSS包含Admin、App_Code、App_Themes、Bin、Portal和UserControl目录,以及页面Default.aspx、配置文件Web.Config、全局文件Global.asax等。展开Admin和Portal目录,在【解决方案资源管理器】面板中查看应用程序RSS组成,如图8.3所示。应用程序RSS的各个目录和文件的功能具体说明如下:Admin目录,主要包含超级管理员使用的后台管理页面,如注册新用户、用户管理等页面。8.3.2配置文件Web.Config应用程序RSS的配置文件Web.Config放置在其根目录下。笔者在该文件中配置了访问数据库Web2ASPNET2DB的链接字符串“datasource=localhost;userid=sa;pwd=123456;database=Web2ASPNET2DB〞。同时还配置了应用程序RSS的验证方式为“Windows〞。8.3.3添加应用程序的引用文件应用程序RSS使用了3个根底工程〔第2章已经详细介绍过〕中的功能。在此,笔者该应用程序中添加了这三个引用〔即文件的后缀名为.dll〕。它们具体为:。。。8.3.4主页Default.aspx应用程序RSS的主页Default.aspx特别简单。该页面在Page_Load〔objectsender,EventArgse〕事件中重定向到用户登录页面UserLogin.aspx。程序代码如下所示。protectedvoidPage_Load(objectsender,EventArgse){Response.Redirect("~/Portal/UserLogin.aspx");///重定向到登录页面}8.3.5通用模块设计应用程序RSS中的通用模块设计只包含一个名称为“模块标题〞的用户控件。实现该控件的文件为ModuleTitle.ascx,它的代码隐藏文件为。该用户控件的设计界面,8.4关键技术详解本小节将介绍应用程序RSS中的关键技术——创立一个简单的RSS页面。在此,笔者定义了名称为SampleRss的类,它专门用来创立一个简单的RSS页面。类SampleRss定义了创立RSS页面的头部、Item项、尾部,以及输出RSS页面等方法。具体方法如下所示。〔1〕privateXmlTextWriterWriteRSSHeader(XmlTextWriterwriter),创立RSS页面的头部。〔2〕privateXmlTextWriterWriteRSSItem(XmlTextWriterwriter,stringtitle,stringlink,stringdescription),创立RSS页面的Item项。8.4.1创立RSS页面的头部方法WriteRSSHeader(XmlTextWriterwriter)创立RSS页面的头部。它通过XmlTextWriter对象writer输出RSS页面必须的内容,如RSS页面的标志〔rss〕、版本、频道的标题、频道的链接、频道的描述、版权信息等。8.4.2创立RSS的Item项方法WriteRSSItem(XmlTextWriterwriter,stringtitle,stringlink,stringdescription)和方法WriteRSSItem(XmlTextWriterwriter,RSSItemitem)都是创立RSS页面的Item项。其中,第一个方法只向页面输出Item的标题、链接和描述。第二个方法可以输出Item的所有属性。8.4.3创立RSS页面的尾部方法WriteRSSTailer(XmlTextWriterwriter)创立RSS页面的尾部。它通过XmlTextWriter对象writer输出RSS页面的结尾内容,如RSS页面的结束标志〔</rss>〕等。程序代码如下所示。8.4.4输出RSS页面方法CreateSampleRss(HttpResponseresponse,paramsRSSItem[]items)创立一个RSS页面,即在网页上输出RSS页的内容。它首先调用方法WriteRSSHeader(XmlTextWriterwriter)创立RSS页面的头部;然后调用方法WriteRSSItem(XmlTextWriterwriter,RSSItemitem)创立RSS页面的Item项;最后调用方法WriteRSSTailer(XmlTextWriterwriter)创立RSS页面的尾部。8.4.5创立一个简单的RSS页面页面SampleRSS.aspx创立一个简单RSS页面,它的代码隐藏文件为。该页面的最终效果,RSS页面SampleRSS.aspx在Page_Load(objectsender,System.EventArgse)事件中创立了两个Item项,并设置了每一个Item项的Title、Link、Description属性的值。最后调用SampleRss类的方法CreateSampleRss(HttpResponseresponse,paramsRSSItem[]items)输出这两个Item项,即创立为一个简单RSS页面。Page_Load(objectsender,System.EventArgse)事件的程序8.5订阅RSS本小节主要介绍应用程序RSS中与订阅RSS相关的功能,如订阅RSS源、修改已经订阅的RSS源、RSS源管理等。8.5.1数据访问层设计类Url定义了订阅RSS功能的数据访问层的操作。该类定义的方法如下:publicDataSetGetUrls(),获取所有订阅的RSS源。publicSqlDataReaderGetSingleUrl(inturlID),获取单个订阅的RSS源。publicintAddUrl(stringname,stringurl),订阅RSS源。publicintUpdateUrl(inturlID,stringname,stringurl),修改订阅的RSS源。publicintDeleteUrl(inturlID),删除订阅的RSS源。8.5.2存储过程小节中的类Url使用了5个存储过程。这5个存储都操作RSSUrl表,说明如下所示。Pr_GetRSSUrls,获取所有订阅的RSS源。Pr_GetSingleRSSUrl,获取单个订阅的RSS源。Pr_AddRSSUrl,订阅RSS源。Pr_UpdateRSSUrl,修改订阅的RSS源。Pr_DeleteRSSUrl,删除订阅的RSS源。8.5.3订阅RSS源订阅RSS源由页面AddUrl.aspx实现,它的代码隐藏文件为。该页面实现功能如下。输入新RSS源的名称和URL。添加新RSS源,并把新RSS源的信息提交到数据库中。返回到RSS源管理页面UrlManage.aspx。8.5.4修改RSS源修改RSS源由页面UpdateUrl.aspx实现,它的代码隐藏文件为。该页面实现功能如下。编辑RSS源的名称和URL。修改RSS源,并把修改后的RSS源信息提交到数据库中。返回到RSS源管理页面UrlManage.aspx。8.5.5RSS源管理RSS源管理由页面UrlManage.aspx实现,它的代码隐藏文件为。该页面实现功能如下。以列表形式显示RSS源的信息。提供重定向到添加和修改RSS源页面的按钮。提供删除RSS源的功能。8.6RSS阅读器本小节主要介绍应用程序RSS中与RSS阅读器相关的功能,如订阅RSS的频道、读取RSS的频道、订阅RSS的Item、读取RSS的Item等。在此,笔者定义了类RSSItem和RSSChannel实现上述功能。这两个类都被定义在命名空间Web2ASPNET2.WebRSS中,8.6.1定义RSS的Item在下述程序代码中,类RSSItem用来表示RSS的Item。它属于Web2ASPNET2.WebRSS命名空间。RSSItem类定义了一个字典字段attributes。它是一个集合,用来保存Item的子元素的名称及其值。另外,该字典在类RSSItem的构造函数中初始化,并通过属性Attributes公开该字典。8.6.2定义RSS的频道在下述程序代码中,类RSSChannel用来表示RSS的频道〔Channel〕。它被定义在命名空间Web2ASPNET2.WebRSS中。注意:类RSSChannel继承于RSSItem类,并且还定义了保存RSS源的URL的私有字段url。类RSSChannel也定义了一个字典字段items。它是一个集合,用来保存Channel的子元素〔如Item、Name等〕的名称及其值。另外,该字典在类RSSChannel的构造函数中初始化,并通过属性Items公开该字典。8.6.3读取RSS的Item在下述程序代码中,类RSSChannel定义了读取RSS的Item的私有方法privateRSSItemReadItem(XmlTextReaderreader,stringname)。该方法读取Item的每一个子元素的值,并创立一个RSSItem对象最为方法的返回结果。8.6.4读取RSS频道在下述程序代码中,类RSSChannel定义了读取RSS频道的方法ReadChannel()。该方法根据字段url获取网站的数据,并检索每一个频道的数据。其具体步骤如下:〔1〕根据URL创立读取网页内容的XmlTextReader对象reader。〔2〕调用reader的方法Read()读取内容中的每一个元素。〔3〕如果元素的名称为“item〞,那么调用方法ReadItem(XmlTextReaderreader,stringname)该其值,并添加到到字典items中。8.6.5在网页中显示RSS内容RSS阅读器使用了三个Web窗体页:Index.aspx、LeftUrl.aspx和ViewRSS.aspx。其中,第一个页面为母页面,它的左边放置页面LeftUrl.aspx,右边放置页面ViewRSS.aspx。页面LeftUrl.aspx显示被订阅的RSS源名称。页面ViewRSS.aspx将显示页面LeftUrl.aspx中被选择的RSS源的内容。RSS阅读器的最终效果,第9章Blog随着Blog〔博客〕的快速开展,Blog已经成为朋友、家庭之间越来越盛行的沟通工具,是当今网络不可缺少的一局部。同时,Blog也逐渐被应用在企业、公司或集团内部的网络〔Intranet〕中。本章将介绍如何创立一个Blog系统〔或网络应用程序〕。用户可以在该系统中创立属于自己的Blog空间,从而发表自己的文章和链接,以及文章和链接的评论等。Blog系统的前台主页面的效果,后台主页面效果,本章系统〔网络应用程序〕的名称为Blog。9.1什么是Blog“博客〞〔Blog或Weblog〕的全名为WebLog〔网络日志〕,后来缩写为Blog。起初,它是一种十分简易的傻瓜化个人信息发布方式,使得任何人都可以创立个人主页,并且可以发表和更新自己的文章和图片,或其他信息。如果把论坛〔BBS〕比喻为开放的广场,那么博客就是个人开放的私人房间。9.1.1Blog概述博客〔Blogger〕就是写Blog的人,即使用特定的软件,在网络上出版、发表和张贴个人文章的人。简单地说,博客是一类习惯于在网上写日记的人。Blog就是一种表达个人思想、网络链接、内容,按照时间顺序排列,并且不断更新的出版方式。Blog是继E-mail、BBS、ICQ之后出现的第4种网络交流方式。它是网络时代的个人“读者文摘〞。它是以超级链接为武器的网络日记。它是代表着新的生活方式和新的工作方式,更代表着新的学习方式。9.1.2Blog开展历史Blog经过10多年的开展,已经开展成为网络不可缺少的一局部。下面根据时间对它的开展过程中一些重要纪事作简单介绍。1993年6月,最古老的Blog原型——NCSA的“What'sNewPage〞网页〔〕,该网页主要是罗列网络上新兴的网站索引。该网页起始于1993年6月,一直更新到1996年6月。9.2总体功能设计和数据库设计本小节将介绍Blog系统的总体功能设计和数据库设计,以及数据库中各个表之间的关系设计。9.2.1总体功能设计Blog系统实现的主要功能如下:1.用户和角色管理功能2.文章分类管理功能3.文章发布及其管理功能4.链接收藏及其管理功能5.Blog前台功能9.2.2表设计Blog系统主要包括用户、角色、文章分类、文章、文章的评论、文章的访问来源、链接地址,以及Blog系统前台的配置参数等数据。在此,笔者共创立了9个表,具体说明如下。1.角色表Role2.用户表User3.分类表BlogCatalog4.文章表BlogArticle5.链接表BlogUrl6.访问来源表BlogArticleSource7.文章评论表BlogComment8.皮肤表BlogSkin9.收藏表BlogFavorite9.2.3表关系设计Blog系统的数据库比较简单,各个表之间的关系,其中,文章表BlogArticle和链接表BlogUrl分别引用分类表BlogCatalog的ID字段作为外键;皮肤表BlogSkin引用用户表User的ID字段作为外键;访问来源表BlogArticleSource引用文章表BlogArticle的ID字段作为外键;文章评论表BlogComment分别引用用户表User、文章表BlogArticle的ID字段作为外键。9.3应用程序Blog本小节主要介绍应用程序Blog的组成,及其通用模块的设计。其中,该应用程序由Web窗体页、类文件、主题文件、资源文件等组成。通用模块包括一个名称为“模块标题〞的用户控件ModuleTitle.ascx。它存放在UserControl目录下。9.3.1应用程序Blog的组成应用程序Blog包含Admin、App_Code、App_Themes、Bin、Face、Index、Portal、UserControl目录,以及页面Default.aspx、配置文件Web.Config、全局文件Global.asax等。展开Index和Portal目录,在【解决方案资源管理器】面板中查看应用程序Blog,它的组成如图9.4和图9.5所示。9.3.2系统配置文件Web.Config应用程序Blog的配置文件Web.Config放置在其的根目录下。笔者在该文件中配置了访问数据库Web2ASPNET2DB的链接字符串“datasource=localhost;userid=sa;pwd=123456;database=Web2ASPNET2DB〞;同时还配置了应用程序Blog的验证方式为“Windows〞。9.3.3添加应用程序的引用笔者向应用程序Blog添加了3个引用文件〔文件的后缀名为.dll〕。它们具体为:;;。9.3.4主页Default.aspx应用程序Blog的主页Default.aspx特别简单。该页面在Page_Load(objectsender,EventArgse)事件中重定向到Blog应用程序的前台首页Index.aspx〔其中,该页面放置在Index目录下〕。程序代码如下所示。protectedvoidPage_Load(objectsender,EventArgse){Response.Redirect("~/Portal/Index.aspx");///Blog应用程序的前台首页}9.3.5通用模块设计该应用程序中的通用模块和应用程序RSS的通用模块相同,它们的具体实现请参见小节。9.3.6应用程序初始化应用程序Blog在全局文件Global.asax中初始化系统。其中,初始化操作由类WebBlog实现。它定义了用于系统初始化的静态方法publicstaticvoidSystemInit(HttpContextcontext)和两个属性:BoardFilePath和Face。其中,BoardFilePath属性保存Blog前台配置文件的访问地址;Face属性保存系统当前皮肤的名称。9.3.7数据访问层设计在应用程序Blog的数据访问层中,笔者定义了操作与Blog内容〔如文章、文章分类、回复、链接等〕的类Blog。类Blog定义的操作或方法可以分为以下4种类型:与文章相关的操作。与链接相关的操作。与评论和访问来源相关的操作。与Blog前台皮肤相关的操作。9.4关键技术详解本小节主要介绍Blog系统中的关键技术。这些技术包括Blog前台实现原理、Blog前台首页、Blog前台显示文章页面、动态调整Blog前台皮肤、收集文章访问来源、读取Blog前台的配置文件、评论文章等。9.4.1Blog前台组成应用程序Blog的前台主要由两个页面和7个用户控件组成。其中,页面为Index.aspx和ShowArticle.aspx。用户控件为AddCommentUC.ascx、ArticleUC.ascx、CalendarUC.ascx、CatalogUC.ascx、SetSkinUC.ascx、ShowArticleUC.ascx和ShowCommentUC.ascx。上述页面和用户控件都放置在Index文件夹中,9.4.2文章分类用户控件文章分类用户控件CatalogUC.ascx显示文章的分类信息。文件为它的代码隐藏文件。该用户控件添加了一个GridView控件,其ID属性的值为gvCatalog。该控件显示系统中的文章分类信息。用户控件CatalogUC.ascx的设计界面,9.4.3日历用户控件日历用户控件CalendarUC.ascx显示日历信息。文件为它的代码隐藏文件。该用户控件添加了一个日历控件,其ID属性的值为cDate。用户控件CalendarUC.ascx的设计界面,9.4.4文章列表用户控件文章列表用户控件ArticleUC.ascx以列表形式显示文章的信息。文件为它的代码隐藏文件。该用户控件添加了一个GridView控件,其ID属性的值为gvArticle。该控件以列表形式显示文章的信息,包括文章的标题、摘要、评论数量、发布时间等。用户控件ArticleUC.ascx的设计界面,9.4.5显示文章用户控件显示文章用户控件ShowArticleUC.ascx显示文章的具体信息,如文章的标题、评论次数、发表时间、发表用户等。文件为它的代码隐藏文件。该控件未添加任何效劳器端控件,它的设计界面,9.4.6显示评论用户控件显示评论用户控件ShowCommentUC.ascx显示文章的评论。文件为它的代码隐藏文件。该用户控件添加一个GridView控件,ID属性的值为gvComment。该控件显示当前文章的评论。用户控件ShowCommentUC.ascx的设计界面,9.4.7评论用户控件评论用户控件AddCommentUC.ascx可以添加文章的评论。文件为它的代码隐藏文件。该用户控件添加3个TextBox控件、一个Button控件和两个非空验证控件。它们的ID属性的值分别为tbName、tbUserName、tbBody、btnAdd、rfBody和rfName。tbName和tbBody控件分别用来输入评论的标题和内容。tbUserName控件用来显示用户的名称。btnAdd控件实现添加评论的功能。rfName和rfBody控件分别对用户输入评论的标题和内容进行非空验证。用户控件AddCommentUC.ascx的设计界面9.4.8Blog前台页面的实现原理Blog前台页面的均由两局部组成:左版面和右版面。每一个版面包括其根本属性和模块列表,9.4.9Blog前台页面的配置文件Blog前台页面的配置文件为一个XML文件,名称为Default.xml。它存放在Face文件夹下。该配置文件包括<Faces>、<Default>〔为皮肤的名称,由具体皮肤的名称确定〕、<Index>〔页面的版面〕、<Modules>〔版面的模块〕、<Module>〔具体模块〕等5个级别的元素。9.4.10读取Blog前台配置文件读取Blog前台配置文件的功能由类OperateXmlFile实现。它定义了3个静态方法,具体描述如下:〔1〕publicstaticArrayListGetFaces(),获取系统已经定义的皮肤。〔2〕publicstaticTableCellBase[]GetIndexPage(stringface),获取Blog前台的首页的配置。〔3〕publicstaticTableCellBase[]GetShowArticlePage(stringface),获取Blog前台的显示文章页面的配置。9.4.11动态加载Blog前台的首页Blog前台的首页由页面Index.aspx实现,它的代码隐藏文件为。该页面将显示文章分类、收藏日历、调整皮肤下拉选择框、文章列表等内容。页面Index.aspx的最终效果,9.4.12动态加载Blog前台的显示文章页面Blog前台的显示文章页面由页面ShowArticle.aspx实现,文件为它的代码隐藏文件。该页面将显示文章分类、收藏日历、文章具体信息、文章评论和提供评论的内容输入框等。页面ShowArticle.aspx的最终效果,9.4.13动态调整Blog平台皮肤动态调整Blog平台皮肤功能由用户控件SetSkin.ascx实现,文件为它的代码隐藏文件。该用户控件添加了一个DropDownList控件,ID属性的值为ddlSkin。它显示系统中已经存在的皮肤。注意:ddlSkin控件定义了SelectedIndexChanged事件,并且设置AutoPostBack属性的值为true。假设当用户改变ddlSkin控件的选择项时,将触发SelectedIndexChanged事件,并提交到效劳器。9.4.14收集文章访问来源收集文章访问来源功能由函数CollectArticleSource(intarticleID)实现。它将用户的请求地址、IP地址等信息保存到数据库。函数CollectArticleSource(intarticleID)的程序代码如下所示。9.5用户登录和管理维护用户信息包括注册新用户、修改用户信息、修改用户密码和用户管理等功能。实现这些功能的页面〔如AddUser.aspx、UpdateUser.aspx等〕都保存在文件夹“Admin〞下。用户登录功能验证访问网站的用户是否为合法用户,实现该功能的页面保存在文件夹“Portal〞下。9.6文章分类及其管理本小节主要介绍应用程序Blog中与文章分类相关的功能,如添加新的文章分类、文章分类管理和修改文章分类等。在此,笔者定义了类Catalog,它实现上述功能中的与数据库相关的操作。类Catalog定义了5个与文章分类相关的数据访问层的操作。这5个方法的具体说明如下:publicSqlDataReaderGetCatalogs(),获取所有文章分类。publicSqlDataReaderGetSingleCatalog(intcatalogID),获取单个文章分类。9.6.1添加新分类添加新分类由页面AddCatalog.aspx实现,它的代码隐藏文件为。该页面实现功能如下。输入新分类的名称。添加新分类,并把新分类的信息提交到数据库中。返回到分类管理页面CatalogManage.aspx。9.6.2修改文章分类修改分类由页面UpdateCatalog.aspx实现,它的代码隐藏文件为。该页面实现功能如下。修改分类的名称和公开程度。修改分类,并把修改后的分类信息提交到数据库中。返回到分类管理页面CatalogManage.aspx。9.6.3文章分类管理分类管理由页面CatalogManage.aspx实现,它的代码隐藏文件为。该页面实现功能如下。以列表形式显示分类的信息。提供重定向到添加和修改分类页面的按钮。提供删除分类的功能。9.7文章发布及其管理本小节主要介绍应用程序Blog中与文章相关的功能,如添加新的文章、修改文章、文章管理、关联文章访问来源和评论等。9.7.1添加新文章添加新文章由页面AddArticle.aspx实现,它的代码隐藏文件为。该页面实现功能如下。输入新文章的标题和内容。设置新文章的所属分类,以及文章的公开程度。添加新文章,并把新文章的信息提交到数据库中。返回到文章管理页面ArticleManage.aspx。9.7.2修改文章修改文章由页面UpdateArticle.aspx实现,它的代码隐藏文件为。该页面实现下面4个功能。编辑文章的标题和内容。修改文章的公开程度。修改文章,并把修改后的文章信息提交到数据库中。返回到文章管理页面ArticleManage.aspx。9.7.3文章管理文章管理由页面ArticleManage.aspx实现,它的代码隐藏文件为。该页面实现功能如下。以列表形式显示文章的信息。提供重定向到管理文章访问来源、管理文章评论、修改文章等页面的按钮。提供删除文章的功能。提供重定向到添加新文章的页面的按钮。9.7.4管理文章访问来源访问来源管理由页面ArticleSourceManage.aspx实现,文件为它的代码隐藏文件。该页面实现功能如下。以列表形式显示文章的访问来源信息。提供删除访问来源的功能。页面ArticleSourceManage.aspx以列表形式显示文章的访问来源信息,如访问来源的URL、IP地址等。9.7.5管理文章评论文章评论管理由页面ArticleCommentManage.aspx实现文件为它的代码隐藏文件。该页面实现功能如下。以列表形式显示文章评论的信息。提供删除文章评论的功能。9.8链接及其管理本小节主要介绍应用程序Blog中与链接相关的功能,如添加新的链接、链接管理和修改链接地址等。9.8.1链接管理链接管理由页面UrlManage.aspx实现,它的代码隐藏文件为。该页面实现功能如下。以列表形式显示链接的信息。提供重定向到添加和修改链接页面的按钮。提供删除链接的功能。9.8.2添加新链接添加链接由页面AddUrl.aspx实现,它的代码隐藏文件为。该页面实现功能如下。输入新链接的名称和地址。添加新链接,并把新链接的信息提交到数据库中。返回到链接管理页面UrlManage.aspx。9.8.3修改链接地址修改链接地址由页面UpdateUrl.aspx实现,它的代码隐藏文件为。该页面实现功能如下。编辑链接的名称和地址。修改链接,并把修改后的链接信息提交到数据库中。返回到链接管理页面UrlManage.aspx。第10章社会标签——TagsTags,即社会标签〔Bookmark〕。它是一种更为灵活、有趣的文章或图片等信息的分类方式。用户可以为每篇文章或每张图片,或每条信息添加一个或多个标签,从而根据这些标签把这些文章或图片或信息进行分类。本章将介绍如何创立一个社会标签——Tags系统。用户可以在系统中创立自己的标签,也可以对文章或链接使用标签来标记。10.1什么是Tags简单地,用户可以把一个标签〔Tags〕理解为一个文章或图片的分类。标签,又被称为软分类,即根据文章或者图片或者信息的意义,由信息的组织者为信息指定一个或者多个“标签〞。传统的分类,又称为硬分类,即就是发布文章或图片或信息时,所选择的系统现有的固定的分类。标签和分类相比,具有以下特点或优点:分类一般是事先预定好的。即文章或图片属于哪一个分类,事先就已经规定好了。而标签不同,它是在文章或图片完成之后,再由用户添加的。10.2总体功能设计和数据库设计本小节将介绍社会标签——Tags系统的总体功能设计和数据库设计,以及数据库中各个表之间的关系设计。10.2.1总体功能设计应用程序WebTags实现的主要功能如下:1.用户和角色管理功能2.标签及其分类管理功能3.文章收藏及其管理功能4.链接收藏及其管理功能10.2.2表设计应用程序WebTags主要包括用户、角色、标签分类、标签、文章、链接地址等数据。在此,笔者共创立了4个表〔其中,用户和角色表已经在Blog系统中介绍过,在此不再介绍〕,它们的具体说明如下。1.分类表TagCatalog2.标签表Tag3.文章表TagArticle4.链接表TagUrl10.2.3表关系设计应用程序WebTags的数据库比较简单,各个表之间的关系如图10.3所示。其中,标签表Tag引用标签分类表TagCatalog的ID字段作为外键;文章表TagArticle和链接表TagUrl分别引用标签表Tag的ID字段作为外键。10.3应用程序WebTags本小节主要介绍应用程序WebTags的组成,及其通用模块的设计。其中,该应用程序由Web窗体页、类文件、主题文件、资源文件等组成。通用模块包括一个名称为“模块标题〞的用户控件ModuleTitle.ascx。它存放在UserControl目录下。10.3.1应用程序WebTags的组成应用程序WebTags包含Admin、App_Code、App_Themes、Bin、Portal、UserControl目录,以及页面Default.aspx、配置文件Web.Config、全局文件Global.asax等。展开Portal目录,在【解决方案资源管理器】面板中查看应用程序WebTags,10.3.2系统配置文件Web.Config应用程序WebTags的配置文件Web.Config放置在其的根目录下。笔者在该文件中配置了访问数据库Web2ASPNET2DB的链接字符串“datasource=localhost;userid=sa;pwd=dorient;database=Web2ASPNET2DB〞;同时还配置了应用程序WebTags的验证方式为“Windows〞。10.3.3添加应用程序的引用文件笔者向应用程序WebTags添加了三个引用文件〔文件的后缀名为.dll〕。它们具体为:。。。10.3.4主页Default.aspx应用程序WebTags的主页为Default.aspx页面。在该页面上,用户可以查看所有标签、热门标签,以及搜索标签。主页Default.aspx的最终效果,10.3.5通用模块设计该应用程序中的通用模块只包括模块标题用户模块,它的实现方法和应用程序RSS中的通用模块相同。10.3.6数据访问层设计在应用程序WebTags的数据访问层中,笔者定义了操作与Tag相关内容〔如标签、文章、链接等〕的类Tag。类Tag定义的操作或方法可以分为以下4种类型:与标签分类相关的操作。与标签相关的操作。与文章相关的操作。与链接相关的操作。10.4关键技术详解本小节主要介绍应用程序WebTags的关键技术,如创立新标签、编辑标签属性、查看标签、标签排行、移动标签、搜索标签等。10.4.1创立新标签创立新标签由页面AddTag.aspx实现,它的代码隐藏文件为。用户可以在该页面上设置新标签的名称、选择新标签所属的标签种类和公开程度。该页面的最终效果,10.4.2编辑标签属性编辑标签属性由页面UpdateTag.aspx实现,它的代码隐藏文件为。用户可以在该页面上编辑标签的名称、选择标签所属的标签种类和公开程度。该页面的最终效果,10.4.3查看标签查看标签由页面ViewTag.aspx实现,它的代码隐藏文件为。用户可以在该页面上查看标签收藏的文章和链接。该页面的最终效果,10.4.4标签排行标签排行由用户控件ShowTags.ascx实现,它的代码隐藏文件为。用户可以在该用户控件上查看按浏览次数排序的标签。10.4.6搜索标签搜索标签由用户控件SearchTag.ascx实现,它的代码隐藏文件为。用户可以在该用户控件上搜索给定关键字的标签。10.4.7管理标签管理标签由页面TagManage.aspx实现,它的代码隐藏文件为。用户可以在该页面上以列表形式查看所有标签,并且还可以对标签进行添加、编辑和删除等操作。该页面的最终效果,10.4.8管理标签分类管理标签分类由页面CatalogManage.aspx实现,它的代码隐藏文件为。用户可以在该页面上以列表形式查看所有标签分类,并且还可以对标签分类进行添加、编辑和删除等操作。该页面的最终效果,10.4.9添加新的标签分类添加新的标签分类由页面AddCatalog.aspx实现,它的代码隐藏文件为。用户可以在该页面上设置新标签分类的名称。该页面的最终效果,10.4.10编辑标签分类属性编辑标签分类属性由页面UpdateCatalog.aspx实现,它的代码隐藏文件为。用户可以在该页面上编辑标签分类的名称。该页面的最终效果,10.5用户登录和管理本小节主要介绍应用程序WebTags中与用户相关的功能,如注册新用户、用户登录、用户管理、修改用户信息、修改密码、退出系统等。10.5.1注册新用户注册新用户由页面AddUser.aspx实现,它的代码隐藏文件为。用户可以在该页面上设置新用户的名称、密码和电子邮件。该页面的最终效果,10.5.2用户登录用户登录由页面UserLogin.aspx实现,它的代码隐藏文件为。用户可以通过该页面登录到应用系统的后台。该页面的最终效果,10.5.3用户管理用户管理由页面UserManage.aspx实现,它的代码隐藏文件为。用户可以在该页面上以列表形式查看所有用户,并且还可以对用户进行添加、编辑和删除等操作。该页面的最终效果,10.5.4修改用户信息修改用户信息由页面UpdateUser.aspx实现,它的代码隐藏文件为。用户可以在该页面上修改用户的电子邮件。该页面的最终效果,10.5.5修改密码修改密码由页面UpdateUserPwd.aspx实现,它的代码隐藏文件为。用户可以在该页面上修改用户的密码。该页面的最终效果,10.5.6退出平台退出平台由页面UserLogoff.aspx实现,它的代码隐藏文件为。用户可以通过该页面来退出应用系统。页面UserLogoff.aspx在载入时触发的事件Page_Load(objectsender,EventArgse)中初始化该页面,实现功能如下。〔1〕调用UserCommonOperation类的静态方法ClearAndAbandon()清空Session对象中保存的用户信息,并停止当前会话;〔2〕重定向到用户登录页面UserLogin.aspx。10.6收藏标签的文章和链接本小节主要介绍应用程序WebTags中与标签的文章和链接相关的功能,如收藏文章、收藏链接、管理收藏的文章、管理收藏的链接等。10.6.1收藏新的文章收藏新文章由页面AddArticle.aspx实现,它的代码隐藏文件为。用户可以在该页面上设置新文章的名称和具体内容,以及选择新文章所属的标签。该页面的最终效果,10.6.2编辑文章属性编辑文章属性由页面UpdateArticle.aspx实现,代码隐藏文件为。用户可以在该页面上修改文章的名称和具体内容。该页面的最终效果,10.6.3管理收藏的文章管理收藏的文章由页面ArticleManage.aspx实现,它的代码隐藏文件为。用户可以在该页面上以列表形式查看所有文章,并且还可以对文章进行添加、编辑和删除等操作。该页面的最终效果,10.6.4查看文章查看文章由页面ViewArticle.aspx实现,它的代码隐藏文件为。用户可以在该页面上查看指定文章的详细信息,如文章的标题、具体内容等。该页面的最终效果,10.6.5收藏新的链接收藏新的链接由页面AddUrl.aspx实现,它的代码隐藏文件为。用户可以在该页面上设置新链接的名称和地址,以及选择新链接所属的标签。该页面的最终效果,10.6.6编辑链接属性编辑链接属性由页面UpdateUrl.aspx实现,它的代码隐藏文件为。用户可以在该页面上修改链接的名称和链接地址。该页面的最终效果,10.6.7管理收藏的链接管理收藏的链接由页面UrlManage.aspx实现,它的代码隐藏文件为。用户可以在该页面上以列表形式查看所有链接,并且还可以对链接进行添加、编辑和删除等操作。该页面的最终效果,第11章提供Web效劳的网络存储系统目前,WebService〔Web效劳〕已经在互联网上有着广泛的应用。通过Web效劳可以将互联网的效劳提供给互联网的任何一个地方。本章将介绍如何创立一个提供Web效劳的网络存储系统。用户通过Web效劳来管理〔如上载、下载等〕该系统中的文件和目录。该系统的主页面的效果,本章系统〔网络应用程序〕的名称为WebStore。11.1什么是Web效劳Web效劳〔WebService〕就是一套编程标准。它用来让不同类型的软件可以通过网络彼此联系。Web效劳共同使用3种编程语言:可扩展标记语言〔XML〕、标准对象访问协议〔SOAP〕和Web效劳描述语言〔WSDL〕。XML是用来描述Web效劳的根本语言。如果Web效劳提供的功能或信息是一封新的具体内容,那么SOAP就是虚拟信封。它描述该信件内容、寄到何处。WSDL那么提供让不同类型的软件直接联系对方的方式。11.1.1Web效劳概述虽然,Web效劳可以在整个互联网上应用,然而,不同公司〔如微软、SUN、IBM等〕对Web效劳的描述不尽相同。1.微软公司对Web效劳的描述2.SUN公司对Web效劳的描述3.IBM公司对Web效劳的描述4.BEA公司对Web效劳的描述11.1.2.NET中的Web效劳技术微软.NET中提供了基于XML的Web效劳技术,并称为XMLWeb效劳。在微软的MSDN帮助文档中是这样描述XMLWeb效劳的:“XMLWeb效劳是提供特定功能元素〔如应用程序逻辑〕的可编程实体,任何数量的、可能是完全不同的系统都可以用常见的Internet标准〔如XML和HTTP〕进行访问。XMLWeb效劳在很大程度上依赖于对XML和其他Internet标准的广泛接受,由此创立的支持应用程序互操作性的根底结构,才得以解决许多以前阻碍此类尝试的问题。〞11.1.3创立Web效劳MyWebService本小节介绍在Sample_11_01中创立Web效劳MyWebService,并在该效劳中定义4个方法:Add、Sub、Multiply和Divide。这4个方法分别执行加、减、乘和除操作。运行该Web效劳之后,如图11.2所示。单击【Add】链接,调用方法Add(),操作界面,11.1.4引用Web效劳MyWebService本小节介绍将上述创立的Web效劳MyWebService添加到应用程序Sample_11_01中。具体操作步骤如下。〔1〕在【解放方案资源管理器】面板中,右击【D:\...\Sample_11_01\】节点,并选择【添加Web引用】命令,11.1.5Web效劳MyWebService的发现机制Web效劳MyWebService的发现机制提供了发现Web效劳的相关信息,如引用Web效劳的链接地址、支持的协议等。11.1.6Web效劳MyWebService的发现地图Web效劳MyWebService的发现机制地图提供了Web效劳结果相关的信息,如类型、引用地址、发现机制文档等。11.1.7Web效劳MyWebService的效劳描述语言文档Web效劳的效劳描述语言〔WebServiceDescriptionLanguage,简称为WSDL〕比较复杂。它是一种用于描述Web效劳或者网络端点的基于XML的语言。它一般描述Web效劳之间的消息处理机制、Web效劳的位置、Web效劳之间的通讯协议等。11.2总体功能设计和数据库设计本小节将介绍提供Web效劳的网络存储系统的总体功能设计和数据库设计,以及数据库中各个表之间的关系设计。11.2.1总体功能设计应用程序WebStore实现的主要功能如下。1.用户和角色管理功能2.网络文件目录及其管理功能3.网络存储系统平台4.网络存储系统的Web效劳11.2.2表设计应用程序WebStore主要包括用户、角色、目录、文件、文件内容、文件链接等数据。在此,笔者共创立了4个表〔其中,用户和角色表已经在Blog系统中介绍过,在此不再介绍〕,它们的具体说明如下。1.目录表WebDirectory2.文件表WebFile3.文件内容表WebFileData4.文件链接表WebFileUrl11.2.3表关系设计应用程序WebStore的数据库比较简单,各个表之间的关系,其中,文件表WebFile引用目录表WebDirectory的ID字段作为外键;文件内容表WebFileData和文件链接表WebFileUrl分别引用文件表WebFile的ID字段作为外键。11.3应用程序WebStore本小节主要介绍应用程序WebStore的组成,及其通用模块的设计。其中,该应用程序由Web窗体页、类文件、主题文件、资源文件等组成。通用模块包括一个名称为“模块标题〞的用户控件ModuleTitle.ascx。它存放在UserControl目录下。11.3.1应用程序WebStore的组成应用程序WebStore包含Admin、App_Code、App_Themes、Bin、App_WebReferences、Portal、UserControl、WebStore目录,以及页面Default.aspx、配置文件Web.Config、全局文件Global.asax等。展开Admin、App_WebReferences和Portal目录,在【解决方案资源管理器】面板中查看应用程序WebStore,11.3.2系统配置文件Web.Config应用程序WebStore的配置文件Web.Config放置在其的根目录下。笔者在该文件中配置了访问数据库Web2ASPNET2DB的链接字符串“datasource=localhost;userid=sa;pwd=123456;database=Web2ASPNET2DB〞;同时还配置了应用程序WebStore的验证方式为“Windows〞。11.3.3添加应用程序的引用文件笔者向应用程序WebStore添加了3个引用文件〔文件的后缀名为.dll〕。它们如下所示。。。。11.3.4主页Default.aspx应用程序WebStore的主页Default.aspx特别简单。该页面在Page_Load(objectsender,EventArgse)事件中定向到用户登录页面UserLogin.aspx。程序代码如下。protectedvoidPage_Load(objectsender,EventArgse){Response.Redirect("~/Portal/UserLogin.aspx");///重定向到登录页面}11.3.5通用模块设计该应用程序中的通用模块只包括模块标题用户模块,它的实现方法和应用程序RSS中的通用模块相同。11.3.6定义系统常量应用程序WebStore在类WebStore中定义了3个常量:TextStringLength、NormalRoleID和WebStoreProjectID。11.4关键技术详解本小节主要介绍网络存储系统WebStore中的关键技术,如创立网络存储系统的Web效劳〔包括上载文件、下载文件等效劳〕、添加Web效劳、普通上载文件技术、使用Web效劳上载或下载文件等。11.4.1创
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教育平台内容策略的核心多元教学资源的整合与利用
- 教育空间的智能声学系统研究
- 提升学习兴趣的教育游戏化实践案例
- 开启智能学习新时代-教育机器人人机交互技术详解
- 江西省吉安市峡江县峡江中学2025年高二物理第二学期期末学业质量监测模拟试题含解析
- 教育机器人技术推动教育行业的数字化转型
- 2025届山东省莱芜市物理高二下期末经典试题含解析
- 教育APP在提升学习效果中的角色
- 2025届河北省普通高中物理高一第二学期期末考试模拟试题含解析
- 教育大数据驱动的教学内容创新
- SY-T 5037-2023 普通流体输送管道用埋弧焊钢管
- 2024-2025年全国初中化学竞赛试卷及答案
- 肝硬化合并肝性脑病护理查房课件
- 2023年中卫市中宁县社区工作者招聘考试真题
- 无人机反制系统方案
- 体育中国学习通超星课后章节答案期末考试题库2023年
- 猜歌名教学讲解课件
- 氨法脱硫技术培训课件
- 民事检察监督申请书(参考范文)
- 转租房合同转租房合同
- 唐顿庄园第一季剧本(全)
评论
0/150
提交评论