能实现这个功能的软件是什么名字 一元二次方程求解软件

以下试题来自:
单项选择题窗体如图1所示。要求程序运行时,在文本框Text1中输入一个姓氏,单击"删除"按钮(名称为Command1),则可删除列表框List1中所有该姓氏的项目。若编写以下程序来实现此功能:
Private Sub Command1_Click()
n=Len(Text1.Text)
For k=0 To List1.ListCount-1
If Left(List1.List(k),n)=Text1.Text Then
List1.RemoveItem k End If Next k End Sub
在调试时发现,如输入"陈",可以正确删除所有姓"陈"的项目,但输入"刘",则只删除了"刘邦"、"刘备"2项,结果如图2所示。这说明程序不能适应所有情况,需要修改。正确的修改方案是把For k=0 To List1.ListCount-1改为______。
A) For k=0 To List1.ListCountB) For k=1 To List1.ListCountC) For k=1 To List1.ListCount-1D) For k=List1.ListCount-1 To 0 Step-1
为您推荐的考试题库
你可能感兴趣的试题
1A) 计算矩阵外围一圈元素的累加和B) 计算矩阵除外围一圈以外的所有元素的累加和C) 计算矩阵第一列和最后一列元素的累加和D) 计算矩阵第一行和最后一行元素的累加和2A) 在随机文件中,每个记录的长度是固定的B) 以Append方式打开的文件,既可以进行读操作,也可以进行写操作C) 以Output方式打开一个不存在的文件时,系统会自动建立一个文件再打开D) 不管是顺序文件还是随机文件,其打开的语句和打开方式都是不相同的3A) 0 1 2 3 4 5 B) 1 2 3 4 5 6C) 5 4 3 2 1 0 D) 6 5 4 3 2 14A) Private Sub Form_MouseMove(Button As Integer,Shift As Integer,X As Single,Y As Single) P1.Print X,Y
End SubB) Private Sub P1_MouseMove(Button As Integer,Sluft As Integer,X As Single,Y As Single) P1.PrintX,Y
End SubC) Private Sub P1_MouseMove(Button As Integer,Shift As Integer,X As Single,Y As Single) Print X,Y
End SubD) Private Sub P1_MouseDown(Button As Integer,Shift As Integer,X As Single,Y As Single) Picture,Print X.Y
End Sub5A) 窗体可以作为过程的参数B) 过程的参数可以是控件名称C) 调用过程时使用的实参的个数应与过程形参的个数相同D) 只有函数过程能够将过程中处理的信息返回到调用程序中
热门相关试卷
最新相关试卷> 求学员的考试成绩用C#语言编程实现下列程序:编写代码实现接收一个班级五名学员的姓名和三门课程的考试
求学员的考试成绩用C#语言编程实现下列程序:编写代码实现接收一个班级五名学员的姓名和三门课程的考试
india168 & &
发布时间: & &
浏览:348 & &
回复:18 & &
悬赏:0.0希赛币
求学员的考试成绩用C#语言编程实现下列程序:
编写代码实现接收一个班级五名学员的姓名和三门课程的考试成绩,计算每名学员三门课程的总成绩、平均成绩,并输出学员姓名、三门课程的考试成绩,总成绩和平均成绩,以及班级参加考试人数、三门课总和的最高分和平均分。
运行结果如下:
学员姓名:TOM
第1门成绩90
第2门成绩90
第3门成绩93
三门总成绩是273,平均成绩91
学员姓名:Jorry
第1门成绩76
第2门成绩59
第3门成绩98.5
三门总成绩是233.5,平均成绩76.83
学员姓名:Hely
第1门成绩80
第2门成绩85
第3门成绩90
三门总成绩是255,平均成绩85
我由于是初学者对于一些问题不是很懂,希望大家可以帮帮我!
找同学抄呗。。多快好省。。上这问的出来个p啊。。会也不告诉你。。okelee & &
& & (0)(2)该回复于 23:05:28被版主删除okeyes & &
& & (0)(0)nullokdong0 & &
& & (0)(0)回复等加分.inetuser & &
& & (0)(0)引用:  我由于是初学者对于一些问题不是很懂,希望大家可以帮帮我!
哪些问题不懂?infant002 & &
& & (0)(0)作业吧infant002 & &
& & (0)(0)作业贴?infante_0 & &
& & (0)(0)这题目还要求:
创建Student类,定义四个方法,分别用于实现初始化学员对象、接收学员成绩、计算学员总成绩和平均成绩、输出学员成绩。
创建Student类对象数组,分别存放五名学员的考试信息。
使用循环结构创建学员对象,获得考试信息,计算总成绩和平均成绩,并输出。
使用if结构计算班级的考试信息。
我还不知道该怎么做呢?看起来还比较麻烦
引用:  引用:
我由于是初学者对于一些问题不是很懂,希望大家可以帮帮我!
哪些问题不懂?indy123 & &
& & (0)(0)引用:  作业吧
想当年,我居然不知道作业可以来希赛问...infante_0 & &
& & (0)(0)哪个学校的?这里问还不如直接问你同学抄下infant002 & &
& & (0)(0)谁知道,这题该怎么做呀,火线求助,万分火急inetuser & &
& & (0)(0)会数学的四则运算吗???indy0495 & &
& & (0)(0)我要的是代码,这个和数学有什么关系呢?
引用:  谁知道,这题该怎么做呀,火线求助,万分火急infant002 & &
& & (0)(0)引用:  我要的是代码,这个和数学有什么关系呢?
谁知道,这题该怎么做呀,火线求助,万分火急
看来你没学过数学okdk222 & &
& & (0)(0)sql&语句okeyes & &
& & (0)(0)该回复于 23:05:52被版主删除okest & &
& & (0)(0)该回复于 23:05:31被版主删除okcyokcy & &
& & (0)(0)
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&Everything:速度最快的文件名搜索工具(201306更新) | 善用佳软
Everything:速度最快的文件名搜索工具(201306更新)
作者:   日期:   分类: ,    标签:
Everything V1.3.3.653b发布:增加64位版本;增加Home页;增加运行历史;增加最新变化。
简体中文语言包同步更新。
下载链接:
Everything(||)是速度最快的文件名搜索软件。其速度之快令人震惊,百G硬盘几十万个文件,可以在几秒钟之内完成索引;文件名搜索瞬间呈现结果。它小巧免费,支持中文,支持正则表达式,可以通过HTTP或FTP分享搜索结果。如果不满意Windows自带的搜索工具、、Google 桌面搜索或百度硬盘搜索,如果正在使用或放弃了Locate32,都值得推荐这款体积小巧、免安装、免费、速度极快(比Locate32更快)的文件搜索工具Everything!
【相关链接】、、、
【本文目录】
一、Everything简介
Everything是()开发的一款文件搜索工具,官网描述为“基于名称实时定位文件和目录(Locate files and folders by name instantly)”。它体积小巧,界面简洁易用,快速建立索引,快速搜索,同时占用极低的系统资源,实时跟踪文件变化,并且还可以通过http或ftp形式分享搜索。
– 只搜索文件名,不能搜索文件内容;
– 只适用NTFS文件系统,不适合FAT32;
– 完美支持中文(自V1.2.x开始)。
二、初级教程:Everything的基本用法
2.1 下载与安装
下载链接:
   (无论下载Everything还是其他任何软件,都推荐到官方网站)
版本选择:
  普通用户推荐稳定版:Everything-1.2.1.371
  高级用户可下载最新测试版:
  安装或解压Everything,即可开始使用。
2.2 首次运行
Everything在第一次运行时,会建立索引数据库。但你丝毫不用担心,其速度极快,生成的索引文件极小!看看本文下面的回复,你会充满信心。亲身体验之后,你或者也会为其速度震惊。或者,你根本没感觉到它需要建立索引。
索引之后,简洁的程序界面呈现在你的面前,程序状态栏中还会显示索引的文件数量。看到这个数字,你是否惊奇Everything的神速呢?
2.3 基本搜索
尽管Everything还处在英文界面,但这并不影响你的基本使用。只须在搜索框中,输入几个字母或汉字,搜索结果就会实时呈现在你的眼前。然后,可以直接双击某条结果,打开文件。也可以直接在结果中进行复制、删除等常见操作。
2.4 切换为中文界面
– 下载:xbeta简中语言包()(推荐)或官方多语言包();
– 解压:解压语言包内的Everything.lng到程序目录;
– 重启Everything(如果需要);
– 菜单:Tools→ Options→ General→ Language→ 简体中文。
说明1:官方多语言包 vs xbeta简中语言包
  - 前者包括了简体中文在内的更多种语言;当然,体积更大。
  - 前者的简体中文,也是来自xbeta的翻译;
  - 据网友反映,前者存在默认识别为日文的bug,所以,推荐xbeta自行发布的简中语言包;
  - 后者更新更加及时。
  切换语言后,需要重启Everything才能看到效果。而点击Everything窗口的关闭按钮后,它只是缩小为托盘图标,并没有真正关闭,所以,要右键退出。
2.5 视频演示
视频Flash演示:(Wink录制,500×320, 126KB)
三、Everything搜索技巧
3.1 高效搜索之“与”“或”
技巧:在Everything的搜索框中可以输入多个关键词,以空格分开,表示搜索结果要包括全部关键词。大家肯定对这种做法不会陌生,因为它正是搜索引擎的惯例。
举例:键入(不包括引号,下同)“李白 北京 08 jpg”,可以快速找出某些照片。
技巧:对应“与”的还有“或”(OR)运算,用半角竖线表示:|。当你不确信关键词的准确描述时,这种方式非常有用。
举例:“jpg 李白|libai 北京 08”、“免费|freeware”……
引伸:既然空格表示“与”,那么如何表示真正的空格呢?很简单,加英文半角引号,比如”program files”。
3.2 正则表达式
Everything支持正则表达式,或者说,支持一些简单的正则表达式。但对大多数用户而言,这已经足够了!Everything支持的正则表达式有:
| () ? * + . [] [^] ^ $ {m,n}
详见官方FAQ(|)。鸣谢朱晨刚、。
3.3 指定搜索范围
默认情况下,Everything索引、搜索所有本地NTFS磁盘的所有目录。但是你可以通过如下方式,限定搜索范围,以得到更易用的结果列表。
– 希望Everything永不索引某个磁盘,请在“选项”-“NTFS磁盘”中,选定相应盘符,取消“搜索本卷”或“包含在数据库中”。(注:可以取消前一项,这样后一项就自动变灰——但没发现这种做法与只取消后一项的差别。大家可以研究一下!)
– 希望永远排除某些目录,可以在“选项”-“排除列表”中设定。和上条方法一样,确认之后Everything会重新生成索引。
– 希望Everything只搜索某个目录,可以在资源管理器或Total Commander中,右击该目录,在弹出菜单上选“Search Everything…”。这时你会看到Everything的搜索框中,出现了带引号的目录名。
– 与上一方法相同,只是不用右击目录,而是直接输入带引号的目录名,再输入搜索关键词。需要注意的是:目录名一定是完整路径,且用半角双引号括起来,不能选中“使用正则表达式”。
– 还有一种方法,使用起来要头脑更清楚才行。比如,设定“匹配路径”后,输入 files/ .exe,看看搜到了什么结果,想想这是为什么。
3.4 网络分享
Everything内置了HTTP、ETP/FTP服务器。这意味着,你可以用它当作简单的服务器来用。何况,它的HTTP分享,仍然提供了强大的搜索功能。
HTTP分享:点击菜单“工具”-“HTTP服务器”后,就可以在浏览器访问 http://localhost 或输入本机IP进行访问了。在HTTP中,它的搜索功能一样强大。因此,你可以把它加入Firefox等浏览器的自定义搜索中,更加方便的进行搜索。
FTP功能类似,但不具备搜索功能。
相比而言,因为浏览器更为常用,并且支持搜索,默认的UTF-8编码识别率更高,所以推荐HTTP方式分享。无论是HTTP还是FTP,其端口、用户名、密码都是可以设定的。这样,你就可以在局域网内更放心的分享文件了。
除了与朋友分享之外,在文件服务器上运行Everything,然后用户就可以通过浏览器快速搜索了。这是一个很好的应用。
四、Everything与其他程序集成
Everything如此好用,所以很多网友探索了它与其他程序的集成方法,汇总如下。个人观点是,Everything与TC的集成具有很高实用性;另外几种集成可供参考和启发。
4.1 Everything与Total Commander集成
a. 双向集成的目标
  所谓Everything与Total Commander集成,到底指什么?善用佳软的实际使用中,实现了如下双向集成:
  ① 从TC到Everything:在Total Commander中,按下ctrl+alt+f则打开Everything进行搜索;
  ② 从Everything到TC:在Everything搜索结果上,双击目录,或在文件上右键菜单“打开路径”,则Total Commander进入此目录。需要说明的是,目前TC只能打开该目录,但不能自动选中搜索结果。
b. 从TC到Everything的集成方法
  依靠自己:“自己动手,丰衣足食”,虽然效率不一定高,但这是最可靠的方法,即利用Total Commander的标准功能调用Everything。其实现手段有多种,原理和视频操作可参见《TC学堂》中《》中相关内容,比如“4. 外部程序化为TC扩展命令”。
  依靠TC作者:最理想的方案当然是,TC作者针对Everything提供专门的、更优的集成方案。但是,坚持自己原则的Ghisler认为:尽管Everything效率极高,但由于NTFS格式限制,不具有通用性,所以,不会官方集成。
  依靠雷锋叔叔:除了TC作者,你还会期望网络上某个热心人开发一款相应插件。果然,俄罗斯网友为TC开发了FSE插件。优点:可以把搜索结果输出到TC的窗口里面处理。缺点:目前仅支持ASCII字符,即不支持中文。(作者表示,将在 Locate 支持Unicode之后,修复此bug。)所以,最终结论是:中文用户暂不推荐。
c. 从Everything到TC的集成方法
  以下内容由网友dracodoc于 1:17补充。
这次更新不仅仅是语言包,更重要的是可以支持其他文件管理器,已经可以和total commander集成了。有介绍。
我的修改:
explore_folder_command=$exec(“%SystemRoot%explorer.exe” /n,/e,+)
explore_folder_path_command=$exec(“%SystemRoot%explorer.exe” /n,/e,/select,+)
open_folder_path_command=$exec(“d:appwincmdTOTALCMD.EXE” “$parent(%1)”)
open_file_command=$exec()
open_folder_command=$exec(“d:appwincmdTOTALCMD.EXE” )
explore部分不用变,保留第二种选择。需要在tc里设定只打开一个tc实例,我试过用tc命令行的/o参数来不打开第二个实例,但是everything不认。
现在双击找到的文件会打开,双击目录会激活tc跳到该目录(如果你想设定在左边,右边或者新建一个tab可以尝试加上tc的命令行参数,不一定能用),右键选择文件,open path会用tc打开文件所在目录。
再在tc里或者其他全局hotkey设定程序里设定everything的激活热键就可以了(我不喜欢一直开着,随用随启动并不慢)
需注意的是,上述功能只适用于v1.2.0.323b及以后版本,请检查你的程序,或最新beta版。低版本Everything无法识别上述ini内容,会强行删除。“在tc里设定只打开一个tc实例”的做法有2种。一是图形化操作(推荐):配置 → 操作方式 → 主程序 → 只允许一个TC运行。二是直接在wincmd.ini中的[Configuration]段增加一句 onlyonce=1,并重启TC。
4.2 Everything代替Windows默认搜索
Windows自带的搜索程序功能不错,但速度偏慢。如果你希望把“开始”菜单中的搜索替换为Everything(或其他搜索软件),可以用修改工具进行设置。软件小巧,使用容易,、、先后都有介绍,此处从略。
4.3 Everything与Firefox集成
因为Everything自带了HTTP服务器功能——当然也拥有同样出色的搜索功能——因此,可以通过浏览器进行本地或网络计算机的搜索。当然,有一个前提:搜索目标机上Everything一直打开并且启用HTTP服务器。如果认为输入网址不方便,也可以集成的到浏览器的搜索框中。比如,Firefox可通过扩展加入到工具栏的搜索框引擎(可设定用户名/密码以保护安全),详见文章。
五、其他补充
5.1 everything的速度
Everything搜索工具的最大优点是速度。其速度不是快,是极快;用户不是满意,而是震惊。
第一个快速体现在索引速度。官网称,1分钟可索引100万个文件。笔者的NTFS文件系统共40G/近4万个文件,第一次启动时,根本没有感觉到建立索引需要时间。这种快速,是因为Everything的索引无需逐一扫描硬盘文件,而是直接读取NTFS文件系统的USN日志。这当然是既省力,又合理的做法。
第二个快速体现在搜索速度。在搜索框中键入字符后,搜索结果——或许称为过滤结果更准确——实时呈现。
总起来看,多篇测评和试用者认为,其速度超过了以前备受好评的。是否真有这么快?请各位读者反馈试用结果。目前收到的反馈都证明了这一点,对有些网友而言,速度已经快到令人震惊,甚至是愤怒了:凭什么可以这么快!
5.2 Everything资源占用
总起来讲,占用资源很少。
– 从安装(实际解压即可)来看,真正需要的只有一个主文件exe,约0.5MB。
– 索引数据库极小。笔者60G硬盘,索引文件0.7MB。
– 占用内存少,笔者使用为7MB。
5.3 Everything数据库更新
– 没有所谓更新频率的设定,因为更新是自动的。
– 每次重启Everything,都会自动更新;
– 每次设置Everything(比如设定排除列表)之后,都会自动更新;
– Everything运行时,会实时更新索引数据库。
5.4 Everything与windows管理员权限问题
问题1:非管理员用户,如何使用Everything?
  Everything的运行需要管理员权限 。但有时出于安全考虑,不应该(或不能)以管理员身份登录Windows。如何解决这一冲突呢?
思路1:权限法:
  “解铃还须系铃人”。如果认为此问题是windows的权限问题,则需要寻找通用的权限解决方案。比如:
  - Windows系统具备的run as。
  - 第3方软件,如 RunasSpc:;
  - 第3方软件,如 CPAU:、。
思路2:服务法:
  “解铃还须系铃人”。如果认为此问题是Everything的问题,则请到官方论坛搜索答案、向最新beta版寻求答案。论坛中:未来或许可以通过服务来解决。而的更新说明中显示:此功能已具备(added service parameters option)。
  下载v1.2.1.451a,关闭目前运行的Everything。稳妥起见,不妨也把其他db、xml、ini文件删除,即从零开始一个Everything程序。
  然后,运行 d:\soft\everything\Everything.exe -install_service ,就会增加Everything对应的服务了。说明:我在WinXP下,试图以非管理员身份运行 d:\soft\everything\Everything.exe -install_service ,似乎未成功安装服务——请大家帮助再次确认。
  (善用佳软于再次测试通过,WinXP SP2,Everything v1.2.1.451a)
  以管理员身份运行Everything后,在搜索结果中双击exe运行其他程序,会继承管理员权限。如何避免?
  暂无办法。
  Win7下面不能自启动的问题。
  不太了解,欢迎其他网友补充。
如果你经常需要按照文件名进行快速搜索,并且磁盘用了NTFS文件系统,则Everything是首荐工具。如果你需要远程搜索其他计算机上的文件,那么Everything的服务器共享功能更为适合。总之,这款不到1MB的搜索利器,很值得收藏试用。
1. 一个好软件是如何被大众了解的?
我一直对此传播过程充满好奇。我看到的Everything传播是这样的:lifehacker于9月25日发文介绍;网友读过上文后于26日在论坛发文;10月25日左右我读了DC文章并访问官网、联系作者并于10月28日得到作者回复。然后,11月1日freewaregenius发表了,簡睿隨筆 《科技篇》读过上文后于11月2日写了()。于是,我也在翻译完成之前先发此文,以便合力宣传everything。
其他网友的介绍文章:
  * 電腦玩物:
  * 小众软件:
  * 异次元世界:
2. 补充两款水木社区网友原创的同类软件
cygwin的,和bbinn的,这两位都是我很敬佩的高手。两款软件也是的关系,都是小巧、免费的佳作。bbinn还有一款文件查重小软件FindDump,也在上面的贴子中。
3. 文章更新记录
:增加最新中文语言包。
:增加Everything运行时关于管理员权限问题。
:补充Everything与其他程序的集成;为本文增加目录。
:软件升级到Everything-1.2.1.358b,提供了新选项:搜索时指定排除目录及文件(支持通配符)。同步更新了 。
:v1.2beta发布,Everything 集成Total Commander,真好!
:补入其他网友的相关介绍链接
:语言包已由官方发布;善用佳软提供语言包txt文本,供有兴趣者参考和改进。
:更新语言包,更新本文30%内容;
当前无热门评论ASP.NET中的HTTP模块和处理程序-.NET教程,Asp.Net开发-虚拟主机资讯|虚拟主机动态
产品服务快速通道
----------------
==域名注册==
英文域名注册
中文域名注册
==网站推广==
==虚拟主机==
----------------
双线路虚拟主机
基本型虚拟主机
商用型虚拟主机
论坛型虚拟主机
功能型虚拟主机
Vip合租虚拟主机
虚拟主机性能对比
虚拟主机免费试用
机房速度测试
----------------
==租用托管==
服务器租用
----------------
==企业邮局==
购买企业邮局
----------------
==付款方式==
----------------
==联系我们==
您当前位置:->-> ->
ASP.NET中的HTTP模块和处理程序-.NET教程,Asp.Net开发
作者:网友供稿
  西部数码-全国虚拟主机10强!20余项管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:&
介绍   在internet时代的开端,客户端的需求非常有限;.htm文件就可以满足他们的需求。但是,随着时间的流逝,客户端需求的扩充超越了.htm文件或静态文件所包含的功能。  开发者需要扩充或扩展web服务器的功能。web服务器厂商设计了不同的解决方案,但是都遵循同一个主题“向web服务器插入某些组件”。所有的web服务器补充技术都允许开发者建立并插入组件以增强web服务器的功能。微软公司提出了isapi(internet服务器api),网景公司提出了nsapi(网景服务器api)等等。  isapi是一种重要的技术,它允许我们增强与isapi兼容的web服务器(iis就是一种与isapi兼容的web服务器)的能力。我们使用下面的组件达到这个目的:  ? isapi扩展  ? isapi过滤器  isapi扩展是使用win32动态链接库来实现的。你可以把isapi扩展看作是一个普通的应用程序。isapi扩展的处理目标是http请求。这意味着你必须调用它们才能激活它们。 你可以认为isapi过滤器仅仅就是一个过滤器而已。客户端每次向服务器发出请求的时候,请求要经过过滤器。客户端不需要在请求中指定过滤器,只需要简单地把请求发送给web服务器,接着web服务器把请求传递给相关的过滤器。接下来过滤器可能修改请求,执行某些登录操作等等。  由于这些组件的复杂性,实现它们非常困难。开发者不得不使用c/c++来开发这些组件,但是对于很多人来说,使用c/c++进行开发简直就是痛苦的代名词。  那么asp.net提供什么东西来实现这些功能呢?asp.net提供的是httphandler(http处理程序)和httpmodule(http模块)。  在深入了解这些组件的详细信息之前,了解一下http请求经过http模块和http处理程序的时候的处理流程是有价值的。  建立示例应用程序  我建立了下面一些的c#项目以演示应用程序的不同组件:  ? newhandler (http处理程序)   ? webapp (演示http处理程序)   ? securitymodules (http模块)   ? webapp2 (演示http模块)   这些应用程序的安装步骤:  ? 解开attached zip文件中的所以代码。  ? 建立两个虚拟目录webapp和webapp2;把这两个目录指向webapp和webapp2应用程序的实际物理目录。  ? 把newhandler项目中的newhandler.dll文件复制到webapp应用程序的bin目录。  ? 把securitymodules项目中的securitymodules.dll文件复制到webapp2应用程序的bin目录中。  asp.net请求的处理过程  asp.net请求处理过程是基于管道模型的,在模型中asp.net把http请求传递给管道中的所有模块。每个模块都接收http请求并有完全控制权限。模块可以用任何自认为适合的方式来处理请求。一旦请求经过了所有http模块,就最终被http处理程序处理。http处理程序对请求进行一些处理,并且结果将再次经过管道中的http模块:
  请注意在http请求的处理过程中,只能调用一个http处理程序,然而可以调用多个http模块。  http处理程序  http处理程序是实现了system.web.ihttphandler接口的.net组件。任何实现了ihttphandler接口的类都可以用于处理输入的http请求。http处理程序与isapi扩展有些类似。http处理程序和isapi扩展的差别在于在url中可以使用http处理程序的文件名称直接调用它们,与isapi扩展类似。  http处理程序实现了下列方法:
processrequest
这个方法实际上是http处理程序的核心。我们调用这个方法来处理http请求。
isreusable
我们调用这个属性来决定http处理程序的实例是否可以用于处理相同其它类型的请求。http处理程序可以返回true或false来表明它们是否可以重复使用。  你可以使用web.config或者machine.config文件把这些类映射到http请求上。映射完成以后,当接收到相应请求的时候asp.net会实例化http处理程序。我们将解释如何在web.config和/或machine.config文件中定义所有这些细节信息。  asp.net还通过ihttphandlerfactory接口支持http处理程序的扩展。asp.net提供了把http请求路由到实现ihttphandlerfactory接口的类的对象上的能力。此外,asp.net还利用了factory设计模式。这种模式为建立一组相关对象而不提供具体类的功能提供了接口。简单的说,你可以把用于建立依赖传递进来的参数建立的http处理程序对象的类看作是factory(工厂)。我们不用指定需要实例化的特定的http处理程序;http处理程序工厂处理这种事务。这样做的优点在于如果未来实现ihttphandler接口的对象的实现方法发生了改变,只要接口仍然相同,客户端就不会受到影响。  下面是ihttphandlerfactory接口中的方法列表:
gethandler
这个方法负责建立适当的处理程序并把它的指针返回到调用代码(asp.net运行时)。这个方法返回的处理程序对象应该实现了ihttphandler接口。
releasehandler
这个方法负责在请求处理完成后释放http处理程序。factory 实现决定了它的操作。factory 实现可以是实际摧毁实例,也可以把它放入缓冲池供以后使用。  在配置文件中注册http处理程序和http处理程序工厂  asp.net在下面的配置文件中维护自己的配置信息:  ? machine.config   ? web.config   machine.config文件包含应用于计算机上安装的所有web应用程序的配置设置信息。  web.config文件对于每个web应用程序来说是特定的。每个web应用程序都有自己的web.config文件。web应用程序的任何子目录也可能包含自己的web.config文件;这使得它们能够覆盖父目录的设置信息。为了给我们的web应用程序添加http处理程序,你可以使用<httphandlers>和<add>节点。实际上,处理程序都带有<add>节点,列举在<httphandlers>和</httphandlers>节点之间。下面是添加http处理程序的一个普通的例子:
<httphandlers> <add verb="supported http verbs" path="path" type="namespace.classname, assemblyname" /><httphandlers>  在上面的xml中,  ? verb属性指定了处理程序支持的http动作。如果某个处理程序支持所有的http动作,请使用“*”,否则使用逗号分隔的列表列出支持的动作。因此如果你的处理程序只支持http get和post,那么verb属性就应该是“get, post”。  ? path属性指定了需要调用处理程序的路径和文件名(可以包含通配符)。例如,如果你希望自己的处理程序只有在test.xyz文件被请求的时候才被调用,那么path属性就包含“test.xyz”,如果你希望含有.xyz后缀的所有文件都调用处理程序,path属性应该包含“*.xyz”。  ? type属性用名字空间、类名称和部件名称的组合形式指定处理程序或处理程序工厂的实际类型。asp.net运行时首先搜索应用程序的bin目录中的部件dll,接着在全局部件缓冲(gac)中搜索。  asp.net运行时对http处理程序的使用方式  无论你是否相信,asp.net都使用http请求实现了大量的自己的功能。asp.net使用处理程序来处理.aspx、 .asmx、 .soap和其它asp.net文件。  下面是machine.config文件中的一个片段:
<httphandlers> <add verb="*" path="trace.axd" type="system.web.handlers.tracehandler"/> <add verb="*" path="*.aspx" type="system.web.ui.pagehandlerfactory"/> <add verb="*" path="*.ashx" type="system.web.ui.simplehandlerfactory"/> <add verb="*" path="*.config" type="system.web.httpforbiddenhandler"/> <add verb="get,head" path="*" type="system.web.staticfilehandler"/> . . . . . .  . . . . . .</httphandlers>  在上面的配置信息中你可以看到对.aspx文件的所有请求都由system.web.ui.pagehandlerfactory类来处理。与此类似,对.config文件和其它文件(它们不能被客户端直接访问)的所有请求都由system.web.httpforbiddenhandler类处理。你可能已经猜到,当访问这些文件的时候,该类简单地给客户端返回一个错误信息。  执行http处理程序  现在你将看到如何实现一个http处理程序。那么我们的新处理程序要做什么任务呢?前面我提到,处理程序大多数用于给web服务器添加新功能;因此,我将建立一个处理程序来处理新的文件类型――扩展名为.15seconds的文件。我们建立了这个处理程序并在我们的web应用程序的web.config文件中注册之后,所有对.15seconds文件的请求都将由这个新处理程序来处理。  你可能正在考虑这个处理程序的使用方法。如果你希望引入一种新的服务器脚本语言或动态服务器文件(例如asp、aspx)该怎么办呢?你可以为它编写一个自己的处理程序。类似地,如果你希望在iis上运行java小程序、jsp和其它一些服务器端java组件应该怎么办呢?一种方法是安装某些isapi扩展(例如allaire或macromedia jrun)。你也可以编写自己的http处理程序。尽管这对于第三方厂商(例如allaire和macromedia)来说是很复杂的事务,但是它却是个很有吸引力的选择,因为它们的http处理能够能够访问asp.net运行时暴露的所有新功能。  实现我们的http处理程序包含以下步骤:  1.编写一个实现ihttphandler接口的类。  2. 在web.config或machine.config文件中注册这个处理程序。  3.在internet服务管理器中把文件扩展(.15seconds)映射到asp.net isapi扩展dll(aspnet_isapi.dll)上。  第一步  在visual studio.net中建立一个新的c#类库项目,并把它命名为“myhandler”。visual studio.net将自动地给项目添加一个叫做“class1.cs”的类。把它改名为“newhandler”;在代码窗口中打开这个类,并把类的名称和构造函数的名称改成“newhandler”。  下面是newhandler类的代码:
using system.namespace myhandler{ public class newhandler : ihttphandler {  public newhandler()  {   // todo: 此处添加构造逻辑  }  #region implementation of ihttphandler  public void processrequest(system.web.httpcontext context)  {   httpresponse objresponse = context.   objresponse.write("<html><body><h1>hello 15seconds reader ") ;   objresponse.write("</body></html>") ;  }  public bool isreusable  {   get   {       }  }  #endregion }}  你在processrequest方法中可以看到,该http处理程序通过system.web.httpcontext对象访问了所有作为参数传递给它的asp.net内部对象。实现processrequest方法只需要简单地从context对象中提取httpresponse对象并把发送一些html给客户端。类似地,isreusable返回true,表明这个处理程序可以被重复用作处理其它的http请求。  我们编译上面的代码并把它放到webapp虚拟目录的bin目录之中。  第二步  在web.config文件中通过添加下面的文本来注册这个处理程序:
<httphandlers> <add verb="*" path="*.15seconds" type="myhandler.newhandler,myhandler"/></httphandlers>  第三步  由于我们已经建立了用于处理新扩展文件的处理程序了,我们还需要把这个扩展名告诉iis并把它映射到asp.net。如果你不执行这个步骤而试图访问hello.15seconds文件,iis将简单地返回该文件而不是把它传递给asp.net运行时。其结果是该http处理程序不会被调用。  运行internet服务管理器,右键点击默认web站点,选择属性,移动到home目录选项页,并点击配置按钮。应用程序配置对话框弹出来了。点击添加按钮并在可执行字段输入aspnet_isapi.dll文件路径,在扩展字段输入.15seconds。其它字段不用处理;该对话框如下所示:
  点击确认按钮关闭应用程序配置和默认web站点属性对话框。  现在我们运行internet explorer并输入url:http://localhost/webapp/hello.15seconds,看到的页面如下:
  http处理程序中的对话状态  维护对话状态是web应用程序执行的最通常的事务。http处理程序也需要访问这些对话状态。但是http处理程序的默认设置是没有激活对话状态的。为了读取和/或写入状态数据,需要http处理程序实现下面的接口之一:  ? irequiressessionstate   ? ireadonlysessionstate.   当http处理程序需要读写对话数据的时候,它必须实现irequiressessionstate接口。如果它只读取对话数据,实现ireadonlysessionstate接口就可以了。  这两个接口都是标记接口,并没有包含任何方法。因此,如果你希望激活newhandler处理程序的对话状态,要像下面的代码一样声明newhandler类:
public class newhandler : ihttphandler, irequiressessionstate  http模块  http模块是实现了system.web.ihttpmodule接口的.net组件。这些组件通过在某些事件中注册自身,把自己插入asp.net请求处理管道。当这些事件发生的时候,asp.net调用对请求有兴趣的http模块,这样该模块就能处理请求了。  http模块实现了ihttpmodule接口的下面一些方法:
这个方法允许http模块向httpapplication 对象中的事件注册自己的事件处理程序。
这个方法给予http模块在对象被垃圾收集之前执行清理的机会。  http模块可以向system.web.httpapplication对象暴露的下面一些方法注册:
acquirerequeststate
当asp.net运行时准备好接收当前http请求的对话状态的时候引发这个事件。
authenticaterequest
当asp.net 运行时准备验证用户身份的时候引发这个事件。
authorizerequest
当asp.net运行时准备授权用户访问资源的时候引发这个事件。
beginrequest
当asp.net运行时接收到新的http请求的时候引发这个事件。
当asp.net完成http请求的处理过程时引发这个事件。
endrequest
把响应内容发送到客户端之前引发这个事件。
在处理http请求的过程中出现未处理异常的时候引发这个事件。
postrequesthandlerexecute
在http处理程序结束执行的时候引发这个事件。
prerequesthandlerexecute
在asp.net开始执行http请求的处理程序之前引发这个事件。在这个事件之后,asp.net 把该请求转发给适当的http处理程序。
presendrequestcontent
在asp.net把响应内容发送到客户端之前引发这个事件。这个事件允许我们在内容到达客户端之前改变响应内容。我们可以使用这个事件给页面输出添加用于所有页面的内容。例如通用菜单、头信息或脚信息。
presendrequestheaders
在asp.net把http响应头信息发送给客户端之前引发这个事件。在头信息到达客户端之前,这个事件允许我们改变它的内容。我们可以使用这个事件在头信息中添加cookie和自定义数据。
releaserequeststate
当asp.net结束所搜有的请求处理程序执行的时候引发这个事件。
resolverequestcache
我们引发这个事件来决定是否可以使用从输出缓冲返回的内容来结束请求。这依赖于web应用程序的输出缓冲时怎样设置的。
updaterequestcache
当asp.net完成了当前的http请求的处理,并且输出内容已经准备好添加给输出缓冲的时候,引发这个事件。这依赖于web应用程序的输出缓冲是如何设置的。  除了这些事件之外,我们还可以使用四个事件。我们可以通过实现web应用程序的global.asax文件中一些方法来使用这些事件。  这些事件是:  ? application_onstart  当第一个请求到达web应用程序的时候引发这个事件。  ? application_onend  准备终止应用程序之前引发这个事件。  ? session_onstart  用户对话的第一个请求引发这个事件。  ? session_onend  放弃对话或者对话超期的时候引发这个事件。  在配置文件中注册http模块  当我们建立了http模块并把它复制到web应用程序的bin目录或者全局部件缓冲(global assembly cache)之后,接下来就应该在web.config或machine.config中注册它了。  我们可以使用<httpmodules>和<add>节点把http模块添加到web应用程序中。实际上模块都使用<add>节点列举在<httpmodules>和</httpmodules>节点之内了。  因为配置设置信息是可以继承的,所以子目录从父目录那儿继承配置设置信息。其结果是,子目录可能继承了一些不需要的http模块(它们是父配置信息的一部分);因此,我们需要一种删除这些不需要的模块的方法。我们可以使用<remove>节点;如果我们希望删除从应用程序继承得到的所有http模块,可以使用<clear>节点。  下面的代码是添加http模块的一个通用示例:
<httpmodules><add type="classname, assemblyname" name="modulename" /><httpmodules>  下面的代码是从应用程序中删除http模块的一个通用示例:
<httpmodules><remove name="modulename" /><httpmodules>  在上面的xml中:  ? type属性用类和部件名称的形式指定了http模块的实际类型。  ? name属性指定了模块的友好名称。其它应用程序可以使用这个名称来识别http模块。  asp.net运行时如何使用http模块  asp.net运行时使用http模块实现某些特殊的功能。下面的片段来自于machine.config文件,它显示了asp.net运行时安装的http模块:
<httpmodules> <add name="outputcache" type="system.web.caching.outputcachemodule"/> <add name="session" type="system.web.sessionstate.sessionstatemodule"/> <add name="windowsauthentication"type="system.web.security.windowsauthenticationmodule"/> <add name="formsauthentication"type="system.web.security.formsauthenticationmodule"/> <add name="passportauthentication"type="system.web.security.passportauthenticationmodule"/> <add name="urlauthorization"type="system.web.security.urlauthorizationmodule"/> <add name="fileauthorization"type="system.web.security.fileauthorizationmodule"/></httpmodules>  asp.net使用上面一些http模块来提供一些服务,例如身份验证和授权、对话管理和输出缓冲。由于这些模块都注册在machine.config文件中。  实现一个提供安全服务的http模块  现在我们实现一个http模块,它为我们的web应用程序提供安全服务。该http模块基本上是提供一种定制的身份认证服务。它将接收http请求中的身份凭证,并确定该凭证是否有效。如果有效,与用户相关的角色是什么?通过user.identity对象,它把这些角色与访问我们的web应用程序页面的用户的标识关联起来。下面是该http模块的代码:
using system.using system.security.namespace securitymodules{ /// class1的总体描述。 public class customauthenticationmodule : ihttpmodule {  public customauthenticationmodule()  {  }  public void init(httpapplication r_objapplication)  {   // 向application 对象注册事件处理程序。   r_objapplication.authenticaterequest += new eventhandler(this.authenticaterequest) ;  }  public void dispose()  {   // 此处空出,因为我们不需要做什么操作。  }  private void authenticaterequest(object r_objsender,eventargs r_objeventargs)  {   // 鉴别用户的凭证,并找出用户角色。。   1. httpapplication objapp = (httpapplication) r_   2. httpcontext objcontext = (httpcontext) objapp.   3. if ( (objapp.request["userid"] == null) ||   4.  (objapp.request["password"] == null) )   5.  {   6.   objcontext.response.write("<h1>credentials not provided</h1>") ;   7.   objcontext.response.end() ;   8.  }   9. string userid = "" ;   10. userid = objapp.request["userid"].tostring() ;   11. string password = "" ;   12. password = objapp.request["password"].tostring() ;    13. string[]   14. strroles = authenticateandgetroles(userid, password) ;   15. if ((strroles == null) || (strroles.getlength(0) == 0))   16. {   17.  objcontext.response.write("<h1>we are sorry but we could notfind this user id and password in our database</h1>") ;   18.  pleterequest() ;   19. }   20. genericidentity objidentity = new genericidentity(userid,"customauthentication") ;   21. objcontext.user = new genericprincipal(objidentity, strroles) ;  }  private string[] authenticateandgetroles(string r_struserid,string r_strpassword)  {   string[] strroles =   if ((r_struserid.equals("steve")) && (r_strpassword.equals("15seconds")))   {    strroles = new string[1] ;    strroles[0] = "administrator" ;   }   else if ((r_struserid.equals("mansoor")) && (r_strpassword.equals("mas")))   {    strroles = new string[1] ;    strroles[0] = "user" ;    }     } }}  我们研究一下上面的代码。  我们是从init函数开始的。这个函数把处理程序的authenticaterequest事件插入application(应用程序)对象的事件处理程序列表中。这将导致引发authenticationrequest事件的时候application调用该方法。  我们的http模块初始化之后,我们就可以调用它的authenticaterequest方法来鉴别客户端请求。authenticaterequest方法是该安全/身份认证机制的核心。在这个函数中:  1和2行提取httpapplication和httpcontext对象。3到7行检测是否没有给我们提供了用户id或密码。如果没有提供,就显示错误信息,请求处理过程终止。  9到12行从httprequest对象中提取用户id和密码。  14行调用一个叫做authenticateandgetroles的辅助(helper)函数。这个函数主要执行身份验证并决定用户角色。上面的代码采用了硬编码(hard-coded),只允许两个用户使用,但是我们可以扩展这个方法,并添加代码与用户数据库交互操作并检索用户的角色。  16到19行检测是否有角色与用户关联。如果没有就意味着传递给我们的凭证没有通过验证;因此该凭证是无效的。因此,给客户端发送一个错误信息,并且请求结束了。  20和21行非常重要,因为这两行实际上告诉asp.net http运行时已登录用户的身份。这两行成功执行以后,我们的aspx页面就能够使用user对象访问这些信息了。  现在我们看一看这种身份验证机制的运行情况。目前我们只允许下面两个用户登录到系统:  ? user id = steve, password = 15seconds, role = administrator   ? user id = mansoor, password = mas, role = user   注意用户id和密码是大小写敏感的(区分大小写)。  首先试图不提供凭证登录系统,在ie中输入http://localhost/webapp2/index.aspx将看到下面的消息:
  现在试图使用用户id“steve”和密码“15seconds”登录系统。输入 http://localhost/webapp2/index.aspx?userid=steve&password=15seconds你将看到下面的欢迎消息:
  现在试图使用用户id“mansoor”和秘码“mas”登录系统。输入aspx?userid=mansoor&password=mas"&http://localhost/webapp2/index.aspx?userid=mansoor&password=mas你将看到下面的欢迎消息页面:  现在试图使用错误的用户id和密码组合来登录系统。输入http://localhost/webapp2/index.aspx?userid=mansoor&password=xyz你将看到下面的错误消息:
  这表明我们的安全模块在起作用了。你可以通过在authenticateandgetroles方法中使用数据库访问代码来扩展该安全模块。  要使所有的部分都起作用,我们必须对web.config文件进行一些修改。首先,由于我们要使用自己的身份验证,因此不需要其它的身份验证机制。为了达到这个目的,改变webapp2的web.config文件中的<authentication>节点,如下所示:
<authentication mode="none"/>   类似地,不允许匿名用户访问我们的web站点。给web.config文件添加下面的语句:
<authorization> <deny users="?"/></authorization>  用于至少能够匿名访问用于提供凭证的文件。在web.config文件中使用下面的配置设置信息把index.aspx作为唯一能够匿名访问的文件:
<location path="index.aspx"> <system.web>  <authorization>   <allow users="*"/>  </authorization> </system.web></location>  结论  你可能已经意识到有了http处理程序和模块后,asp.net已经给开发者提供了强大的能量。把你自己的组件插入asp.net请求处理管道,享受它的优点吧。  作为练习,你应该进一步改进程序,使示例身份验证模块更加灵活,并能根据用户的需要进行调整。
文章整理:西部数码--专业提供、服务
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
文章页数:&
??????????
??????????
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
版权所有 西部数码()
CopyRight (c) 2002~ all right reserved.
公司地址:四川省成都市金牛区一环路北一段99号环球广场24楼 邮编:610031
电话总机:028-08 38
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028- 财务QQ:
售前咨询QQ:2182518
售后服务QQ:

我要回帖

更多关于 一元二次方程求解软件 的文章

 

随机推荐