… … … 一 {一一 … J 目f …~ 实用第一 智慧密集 … … …… … … … … 两页 铡潮动 锾 接的 实鹰 刘友生 摘 要:在分析网站网页关键词自动超链接应用的基础上,提出了使用ASP.NET技术实现关键词 超链接的解决方案,为使程序具有通用性,所有实现都通过类来完成。详细介绍了实现步骤和设 计ASP.NET程序,实现了网页关键词自动超链接。 关键词:ASP.NET程序;网页关键词;构件类;超链接 1 引言 在一些新闻系统,访客阅读新闻或文章时,提供相关或相 似新闻或文章的链接.或者在网页主要内容文本区域内为相关 关键词自动创建超链接.以方便访客对感兴趣的内容随时点击 超链接而转到相关页面浏览,方便了访客的阅读;在些旅游网 ID 4 网址 http://www.yeah.net 关键阋 yeah 排序儿) 4 5 6 http://wwv(.sina.com.ca 新浪 http://www.hotmail.com Hotmail 5 6 7 http://www.tom.oom LiuYouSheng 9 站内,为一些地名、风景区或关键词设置超链接,读者可以随 时关注或转向相应风景区:在一些财经网站.也经常为一些股 票和关键词设置超链接,以便为访客转向合理的页面提供了方 便.这些设计在方便读者阅读的同时.也能延长访客在网站的 停留时间,提高了网站的访客粘度,下面以ASP.NET2.0为例 来介绍它的实现方法。 8 http://www.baiduD.com 百度最大 lO 9 l0 l1 http://www.baidu.tom http:llwww.XXX.oom http://www.gdsspt.net 百度 哺乳动物 广东松山职业技术学院 l1 O 0 2数据库的设计 数据库的设计很简单,只需要添加一个表,表名为“yx”, 用于存储关键词。表的结构如表1所示。 表1 yx表结构 字段名 ID 网址 3程序设计与实现 3.1 类的设计 (1)创建一个网站 在当前网站中创建一个名称为MyReplace.的类。在类中创 字段宽度 2 50 字段类型 自动编号(数字) 文本 建3个类函数:第一个是循环遍历数据库中所有关键词的类函 数GetKeyWord:第二个函数是用来获取数据库中指定文章内 容的函数GetArticle;第三个是用来实现关键词替换的函数 ReplaceKeyWord。 (2)在类中定义连接数据库的链接字符串代码 关键词 排序ID 文本 长整型数字 80 private string COnnectionString= Provider=Microsoft.Jet. 4 OLEDB.4.0;Data Source= +HttpContext.Current.Server. MapPath( test。mdb”): 为了测试需要,先添加几条记录,如表2所示。 表2添加记录 ID 1 (3)GetArticle函数 代码如下: 网址 http://www.163.com 关键词 网易 排序ID 1 pubIiC string GetArtic!e{string Tablename,string FieldName, Int32 lD) { string SQL: select frOm“+Tablename+”where lD=“+lD: 2 3 http://www.qq.com http://www.126.com QQ 126 2 3 OIeDbConnection dtConn=new OIeDbConnection …… _删ORK&C0啊啊UNlC盯iON……………… …………………………… ……………… ……………………… (connectionString);OleDbDataAdapter dtCmd=new OleDbDataAdapter (SQL,dtConnl:: DataSet dtSet=new DataSet0; dtCmd。Fill(dtSet); string outstr= : DataTableReader objreader=dtSetCreateDataReader(): while(objreader.Read()) { for(int j=O j<;objreader.FieIdCount一1:j++) { if(objreader.GetName(j).ToString0==FieldName) {outstr=objreader,GetValue(j):ToString0:) ) ) return outstr; ) GetArticle函数的传人参是数有3个,Tablename表示存放 文章的表名,FieldName表示存放文章对应字段名,ID表示存 放文章对应ID号。返回stirng型的文章内容 (4)GetKeyWord函数 代码如下: public string GetKeyWord(string instr) { string SQL= select from yx order by扫#序lD : 可以试试“select from yx order by排序ID DESC 0IeDbConnection dtConn=new OleDbConnection (connectionString); OleDbDataAdapter dtCmd=new OleDbDataAdapter 《SQL,dtConn);: DataSet dtSet=new DataSet0; dtCmd.Fill(dtSet); string outstr=instr; StringBuilder{KeyS=new StringBuilder0; DataTableReader objreader=dtSet.CreateDataReader0; while Iobjreader.Read()) { Keys.Append(objreader.GetValue(2)…ToString0); _f((!obireader.GetValue(2).ToString0 Contains(KeyS. ToString0)))∥注意,不要此条件可能会重复替换 {outstr=IReplaceKeyWord(outstr,objreader. GetValue(2).ToString0,objreader.GetValue(1). roString())=J ) return OUtStr: } GetKeyWord函数的传人参是数instr,它是要编辑加工的 文章,测试实例中是从数据库中读取的文章。返回加工后的 string型的文章outstr。 (5)ReplaceKeyWord函数 代码如下: public string ReplaceKeyWord(string strlnput,string ReplaceStr,string ReplaceLink) { string strResult; strResult:System.Text.RegularExpressions.Regex. Replace(strlnput,ReplaceStr,”<a href=”4-ReplaceLink 4- > +ReplaceStr 4-“</a>“ System.Text.RegularExpressions. RegexOptionS.IgnoreCase): return strResu!t; ) GetKeyWord函数的传人参有3个,strInput表示要替换的 文章或字符串,ReplaceStr表示替换的关键词,ReplaceLink表 示关键词对应超链接。返回stirng型超链接文本。 3.2界面 (1)在当前网站添加一个名称为“Test.aspx”的Web窗体。 (2)在窗体上添加3个控件:一个ID=”TextBoxl”, TextMode=”MultiLine”的Web服务器控件TextBox。一个ID=” Button1”.Text=”生成页面”的Button名称为“TextBoxl”的 Web服务器控件TextBox和一个ID=”lblMessage”的Web服务 器控件Label。设计界面如图1所示。 图1 Test.aspx页面的设计效果图 3.3事件代码 事件处理代码相对比较简单,首先创建类的实例: MvReplace myrep:new MyReplace0; 然后在Page_Load事件中将文章加载到文本框中: protected void Page_Load(object sender EventArgs e) { if(1lsPostBack) {TextBox1.Text=myrep.GetArticle(“ArticleC , Content“,4521).ToString0;) ) 单击按钮时,生成带关键词链接的网页: protected VOid Button 1一Click(object sender,EventArgs e) { lblMessage.Text:myrep.GetKeyWord(TextBox1.Text): ) (下转第91页) 鳙 …… C0啊P硼TIRSECURITY^_Ⅱ啊AINTENANCE,…………………… ………… …一……一一 …~一 …一…… break; 定时任务的主要动作: (1)从主机列表中逐个取出需要监控的节点,循环2,3做 处理。 ) ) (2)检测该节点的状态,记录访问时问并对故障情况进 行描述。 5-2收到响应或者其他异常的处理 repTime=System.EnvironmentSickCount—repTime; (3)根据访问结果刷新界面窗口,若存在网络中断、超 时这些错误,弹出主窗体以提醒操作人员注意。 }j访同计时 if(nBytes>0) { 5 ICMP发送报文返回结果的处理 5.1 超时、出错情况的识别 首先需要对Socket对象设置超时时间。若在报文发出后的 Msg=“访问成功“ )else { Msg=“超时或者存在错误 ffnBype会记录错误代码,若需 /腰可转换 } 指定时间里仍未收到反馈,会触发TimedOut错误,俘获此类 错误返回即可: socket.ReceiveTimeout=2000;//设置为2秒 try 6 结语 在ICMP的报文头定义中定义了4l中类型,实现Ping使 用了type=8这种类型.traceroute使用type=1l发送包含有特殊 的1TrL的包,接收ICMP超时消息和目标不可达消息来实现 的。从技术角度来说,ICMP就是一个“错误侦测与回报机 制”,这个特点决定了可以简单地应用于攻击网络上的主机和 网络设备,作为一个简单的实践。 { nBytes=socket.Receive(ReceiveBuffer)://nB、,tes记录接 删殳数据的长度 } catch(SocketExceptionl Err) { switch fErr.SocketErrorCode) { case SocketError.TimedOut://超时错误 Msg: 超时 +IP.ToStringO 4-一4-Err.Message; 参考文献 【1]互联网控制消息协议:维基百科,http://zh.wikipedia.org wiki,ICMP. ,/返回错误信息字符串 timeout=-40; break; 【2】Socket class:MSDN,http://msdn.microsoft.com/en-us/library/ hh423570.aspx. default_,,其他错误 timeout=一100: (收稿日期:2012—04—23) Msg=IP。ToStr ng()4-~+Err.Message: (上接第67页) 程序运行效果如图2所示。 知识或资讯.使得访客在有疑问时总能找到合适链接点转到疑问 点的解答页面。同时通过内容的聚集.可以引导访客进入网站不 同主题页面,或者友好链接网站进行继续浏览,因此,对提高网 站的访客粘度,提高网站的内容浏览量和停留时间将大有好处。 参考文献 【1]刘友生,等.构件化Web项目开发(ASP.NET C#).北 京:清华大学出版社.2011. [2】刘友生,等.ASP・NET项目实训.北京:研究出版社,2010. [3】刘友生,陈一平,胡浪.基于数据表的动态表单处理技术 图2生成带超链接网页 【J].计算机工程与应用.2004. [4]刘友生,陈剑平,陈一平.自适应Web后台数据管理构件 的设计与实现fJ1.西安科技大学学报.2008. (收稿日期:2012—05—23) 4结语 网页关键词自动超链接的主要目的是方便访客深人阅读相关 瓣