12.4 添加RSS频道功能 (征服ASP.NET 2.0 Ajax——Web开发技术详解 )

2024-03-07 11:38

本文主要是介绍12.4 添加RSS频道功能 (征服ASP.NET 2.0 Ajax——Web开发技术详解 ),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

--------------http://book.csdn.net/bookfiles/305/10030512726.shtml 

12.4  添加RSS频道功能

添加RSS频道的功能虽然简单,但由于牵扯到数据库和局部更新的问题,所以为了理清开发的思路,本例给出了实现添加功能的流程,如图12-6所示。

图12-6  实现添加功能的流程

12.4.1  添加频道到数据库的方法

为了方便的将数据添加到数据库中,需要设计一个RSS操作类,其中包含一个实现添加功能的方法,实现此功能的步骤如下:

(1)打开Web.Config文件。

(2)添加数据库连接字符串,否则无法建立与数据库的连接,字符串如下,其中包括了连接字符串的名称、要连接的服务器和数据库等信息。

         <connectionStrings >

                   <add name="connRSS" connectionString="Data Source=CGJ-57F90CCA64C/SQLEXPRESS;Initial Catalog=RssReader;Integrated Security=True"/>

         </connectionStrings>

(3)在网站根目录下添加一个类,命名为“RssManager.cs”,当单击“添加”按钮时,系统会询问是否将类存放在“App_Code”目录下,选择“是”,因为此目录下的类在保存后自动编译。

(4)在类中首先设置一个变量,用来获取连接字符串。本例使用的是ConfigurationManager类中的 “ConnectionStrings”方法。代码如下:

    private string connectionString = ConfigurationManager.ConnectionStrings["connRSS"].ConnectionString;

(5)由于本例需要使用操作SQL Server的类,所以必须引用命名空间“SqlClient”,引用代码如下:

using System.Data.SqlClient;

(6)设计添加频道的方法“AddRss”,代码如清单12-3所示。

代码清单12-3  添加频道的方法

    /// <summary>

    /// 定义添加rss到数据库中的方法

    /// </summary>

    /// <param name="name">rss的名字</param>

    /// <param name="url">rss的链接地址</param>

    public void  AddRss(string name,string url)

    {

        //初始化sql命令

        SqlCommand cmd = new SqlCommand();

        //在一个范围内执行sql命令,范围结束后,释放所有对象

        using (SqlConnection conn = new SqlConnection(connectionString))

        {

            //定义命令属性

            //判断数据库连接状态

            if (conn.State != ConnectionState.Open)

                conn.Open();

            cmd.Connection = conn;

            cmd.CommandType = CommandType.Text;

            cmd.CommandText = "INSERT INTO RssStore VALUES('" +name +"','" +url +"')";

            //执行命令

            cmd.ExecuteNonQuery();

        }

    }

(7)按“Ctrl+S”保存设计的代码。

12.4.2  异步发送添加请求的客户端实现

在用户单击“添加RSS”按钮后,为了提高运行速度,本例将使用XMLHttpRequest实现数据的提交工作,异步功能实现的原理如图12-7所示。

图12-7  异步提交的原理图

实现的步骤如下:

(1)打开Default.aspx页。

(2)为“添加RSS”按钮添加click事件,事件调用方法“addrss”。

(3)在head元素内添加脚本代码,方法“addrss”的代码如清单12-4所示。其中需要创建一个XMLHttpRequest对象。

代码清单12-4  添加按钮调用的方法

    <script type="text/javascript">

    var xmlhttp;

    function createXMLHttp()

    {

           //未考虑除IE外其他浏览器-创建异步对象

           xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

    }

    function addrss()

    {

          createXMLHttp();

           //判断异步对象状态的方法

           xmlhttp.onreadystatechange=statechange;

           //获取添加的RSS属性

           var name=document.getElementById("txtRssName").value;

           var url=document.getElementById("txtRssUrl").value;

           //加载服务器页并发送数据请求

           xmlhttp.open("GET","addRssNamePage.aspx?name="+escape(name) +"&url="+escape(url),true);

           xmlhttp.send(null);

}

</script>

注意:传递参数时,如果参数为中文,必须使用escape方法包装。

(4)在创建XMLHttpRequest对象的过程中,使用方法“statechange”判断事件的状态,此方法的设计代码如清单12-5所示。主要目的:是当请求成功完成后,调用方法“handleStr”实现页面的局部刷新。

代码清单12-5  判断请求状态的方法

   function statechange()

    {

     //如果请求已经完成

     if(xmlhttp.readystate==4)

     {

        //判断请求是否成功返回

        if(xmlhttp.status==200)

        {

           //返回的是字符串,进行处理后显示在客户端

           handleStr(xmlhttp.responseText);

        }

     }

(5)设计实现局部刷新的方法,代码如清单12-6所示。

代码清单12-6  更新频道列表的方法

    function handleStr(list)

    {

       //获取频道列表所在的div

       var oldcontent=document.getElementById("namelist").innerHTML;

       //更新div中的内容

       var newcontent=oldcontent+list;

       //显示新的div

       document.getElementById("namelist").innerHTML=newcontent;

    }

以上是客户端需要实现的技术,那么当XMLHttpRequest对象请求服务器处理时,应该怎么在服务器端实现处理功能呢?

12.4.3  添加请求的服务器端实现

当处理完客户端的技术后,可以发现,客户端要求服务器端返回的是字符串,本例就介绍如何返回客户端需要的数据内容,同时又将数据添加到服务器中。

(1)在网站根目录下,添加一个Web窗体,命名为“addRssNamePage.aspx”。

(2)将页面的HTML源代码界面内容全部删除,只保留最上面一行代码,此操作主要是删除掉返回操作中的多余字符。保留代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="addRssNamePage.aspx.cs" Inherits="addRssNamePage" %>

(3)按F7进入页面的代码视图。

(4)在Page_Load事件中处理两个功能:返回客户端数据和将数据添加到数据库。代码如清单12-7所示。注意返回客户端的是一段用字符串连接的HTML代码。

代码清单12-7  服务器端处理添加数据的代码

    protected void Page_Load(object sender, EventArgs e)

    {

        //获取页面传递参数并参加记录到数据库中

        //获取参数;

        string name = Request.QueryString["name"];

        string url = Request.QueryString["url"];

        //先生成返回的字符串

        StringBuilder mystr = new StringBuilder();

        mystr.Append("<a href=javascript:loadContent(' "+url +  "');>"+name+"</a>" );

        mystr.Append("<br/>");

        Response.Write(mystr);

        //后台再处理添加到数据库的操作

        RssManager myrss = new RssManager();

        myrss.AddRss(name, url);

    }

(5)按“Ctrl+S”保存代码。

(6)将“Default.aspx”设置为起始页,按F5运行程序,测试频道的添加功能。当输入频道名称和频道URL后,单击“添加RSS”功能,此时运行的速度很快,频道列表中立刻显示出了刚刚添加的频道名称。运行效果如图12-8所示。

图12-8  添加频道成功后效果图

这篇关于12.4 添加RSS频道功能 (征服ASP.NET 2.0 Ajax——Web开发技术详解 )的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/783376

相关文章

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

🌈个人主页: 南桥几晴秋 🌈C++专栏: 南桥谈C++ 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据库学习专栏: 南桥谈MySQL 🌈Qt学习专栏: 南桥谈Qt 🌈菜鸡代码练习: 练习随想记录 🌈git学习: 南桥谈Git 🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈�

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

Java Web指的是什么

Java Web指的是使用Java技术进行Web开发的一种方式。Java在Web开发领域有着广泛的应用,主要通过Java EE(Enterprise Edition)平台来实现。  主要特点和技术包括: 1. Servlets和JSP:     Servlets 是Java编写的服务器端程序,用于处理客户端请求和生成动态网页内容。     JSP(JavaServer Pages)

6.1.数据结构-c/c++堆详解下篇(堆排序,TopK问题)

上篇:6.1.数据结构-c/c++模拟实现堆上篇(向下,上调整算法,建堆,增删数据)-CSDN博客 本章重点 1.使用堆来完成堆排序 2.使用堆解决TopK问题 目录 一.堆排序 1.1 思路 1.2 代码 1.3 简单测试 二.TopK问题 2.1 思路(求最小): 2.2 C语言代码(手写堆) 2.3 C++代码(使用优先级队列 priority_queue)

如何在Visual Studio中调试.NET源码

今天偶然在看别人代码时,发现在他的代码里使用了Any判断List<T>是否为空。 我一般的做法是先判断是否为null,再判断Count。 看了一下Count的源码如下: 1 [__DynamicallyInvokable]2 public int Count3 {4 [__DynamicallyInvokable]5 get

2、PF-Net点云补全

2、PF-Net 点云补全 PF-Net论文链接:PF-Net PF-Net (Point Fractal Network for 3D Point Cloud Completion)是一种专门为三维点云补全设计的深度学习模型。点云补全实际上和图片补全是一个逻辑,都是采用GAN模型的思想来进行补全,在图片补全中,将部分像素点删除并且标记,然后卷积特征提取预测、判别器判别,来训练模型,生成的像

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码