版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、常见问题汇总如果不小心双击了网页,则VS2005会打开网页后台处理程序录入界面(见图2-18)。其文件名和网页文件名相同,但扩展名为“.cs”的文件。图2-18 网页配套程序录入界面遇到这种情况时,不要慌乱,也不要删除程序网页的任何内容,更不能单击撤销按钮,程序录入界面中的语句是与网页配套的处理程序,其中很多是自动生成的。随意修改、删除或撤销,都会导致网页无法运行的严重后果。要回到网页的设计界面,只需单击VS2005上部的网页标签“注册页.aspx”即可。为了引起重视,可以做一次实验:双击网页,即会打开配套程序录入页“注册页.aspx.cs”,然后右击页标签,选择“关闭”或点击 “注册页.as
2、px” 标签,均能回到设计状态。由此,我们也可以了解到,和一个网页相关的界面有三个:一是网页外观设计界面,二是网页代码界面,即“源”界面,三是网页后台处理程序的录入界面。比如一个按钮,在设计界面上我们可以直观的看到或设置按钮的样式,在“源”界面中会有此按钮的位置/大小/颜色等描述代码,在程序界面中可能会有单击按钮时要实现的功能语句。2.1 运行注册页单击 “注册页.aspx” 标签à单击VS2005工具栏中的启动调试(即试运行网页)按钮,屏幕会弹出图2-19所示的调试对话框。图2-19 启动调试对话框这时应选择第一项,启动调试。这项功能的作用是:一个程序设计完成后运行时,如果出错了,
3、则可以通过单步运行,或中途暂停等手段,找出错误,迅速排除。它是一个复杂网站设计过程中肯定会用到的一个功能。但就如同图中的警告一样,将来网页真正要传到网上时,一定不要忘记禁止此项功能,否则这项功能会大大加重服务器负担,网页访问也会变得很慢。此项设置将在最后一章介绍。重要提示:单击确定后,如果本机安装了网络防火墙,网络防火墙会在屏幕右下角弹出类似图2-20所示的询问提示。图2-20 询问是否允许VS2005模仿网络服务器的提示这时,千万不要简单的单击确定按钮,这样就选择了默认的“禁止”,即不允许VS2005运行网站,这将导致无法看到网页在互联网上被访问时的结果。如果不小心选错了,则需要找到防火墙的
4、设置选项,重新将此项功能设为“允许”。接下来还会有一个看似同样的提示(见图2-21),我们同样需要选择“总是允许”。图2-21 询问是否允许VS2005访问互联网的提示之后,需要等待较长时间,VS2005才会将一个图2-22所示的空白网页“产生”出来,显现在屏幕上。这并不是因为VS2005慢或主机性能低,而是因为VS2005要在本机上模拟一台网络服务器。重要提示:最好不要在网页运行时在VS2005中做任何修改,VS2005在运行网页时会禁止修改设计界面,这时不要以为VS2005突然死机,而是正处于运行状态,还没有回到设计状态。在网页运行时,“源”界面和程序界面中的内容虽然可以修改,但也无法立即
5、在正在运行的网页中反映出修改结果,因此,在运行时如果发现了问题,一般应关闭正在运行的网页,或单击VS2005屏幕左上角工具栏内的停止按钮,重新回到设计状态。工具箱中的各种控件是经过分组的。单击加粗的每组组名前的折叠按钮“”,本组即会折叠起来,之后按钮变成了“”样式,单击此按钮,本组即会展开。所有组折叠后的结果如图2-31所示。图2-31 工具箱中的所有组别问题解释:1. 为什么属性窗口中的条目总在变化这是因为属性窗口中列出的是选定目标的属性。比如光标在网页的空白处时,属性窗口中显示的是有关网页的设置选项;光标放在表格内的空白处时,属性窗口中显示的是此单元格的属性选项;光标放在文本框上时,属性窗
6、口中显示的是文本框的各种设置选项。因此,在调出属性窗口前,一定要注意光标在哪个目标上。2. 为什么在属性窗口中,找不到要设的项很多时候,打开属性窗口,却找不到要设的项。原因很多,最常见的原因是我们的鼠标没有选定要设的目标。比如要设置单选列表控件,但光标却在文本框上,这时就会找不到我们要设的项,即使找到了,也是两类控件共有的项,这样,即使能设置,也是设错了对象。因此,在调出属性窗口前,一定要注意光标在哪个目标上。不过,我们可以通过观察属性窗口上部的提示,很容易发现选错了目标(见图2-37)。在属性窗口最上端,显示着当前正要设置的目标的名字。 图2-37 属性设置窗口即使目标没有选错,有时也会找不
7、到要设的项,原因可能是电脑反应比较迟钝。这时,可以通过单击属性窗口右上角的下拉按钮“”,从中找到要设的目标即可。这种方法也很常用。3. 如何快速找到要设的项属性窗口中的条目默认是按类别分组的,几乎所有控件都有图2-38所示的属性组。每个组分类依据见表2-1。分类显示对于不熟悉其中选项的人而言,找到要设的项很不容易,有时需要从头到尾找几遍。图2-38 属性分组表2-1 属性组说明组说明布局本控件的位置、大小等可访问性本控件和操作有关的一些设置项。如快捷键数据本控件和数据库连接有关属性外观本控件的字体、字号、颜色等行为在后几章用到时,自然会明白的杂项快速查找设置项的方法是单击属性窗口中的“”按钮,
8、所有属性即会按拼音顺序从A到Z顺序排列,这时再找条目时,就快了许多(如果单击“”按钮,属性会回到按组分类状态)。如果一个条目前面有个“”(见图2-38),则表示本条目包含多条子项设置,单击此按钮,可显示出各子项。当我们设计水平到一定程度时,有时就需要展开各项,从中查找可以设置的某个功能。网页,回到设计状态。2.2 实现控件与数据库的对接数据库和网页外观都已经设计完成,但两者之间还没有联系,本节将实现注册页面和数据库的对接,为网页和数据库搭起桥梁,只有这样,用户在注册时填写在网页上的数据才能存入数据库。VS2005提供了担当“桥梁”重任的控件,它在工具箱的数据组内,专业名称为数据源控件。不同的数
9、据库使用不同的数据源控件,本书所用的数据库为Access,因此,需要使用的数据源控件为AccessDataSource(见图2-41)。图2-41 工具箱中的数据源通过将数据源控件添加到网页,并通过AccessDataSource进行一些简单设置,就可以实现控件与数据库的对接(见图2-42),这样,当用户单击“提交”按钮后,桥梁即会将用户注册信息从网页内收集起来,并正确写入数据库中相应的列内。表内控件“桥梁”数据库程序的写入指令图2-42 数据对接示意图以下将介绍对接的设置过程,其中:环节:创建桥梁,见2.9.1小节;环节:连接数据表,见.4小节;环节:连接网页控件,实现对接。
10、见2.9.5小节;环节:编写插入程序,用户信息写入数据库。见2.10节。2.7.8添加比较控件注意:验证组内的几种控件的名称很容易混淆,因此,添加时一定要小心。重要提示:在键入每个ValidationExpression属性值时,一定要注意使用英文标点符号,一定要区分大小写(第二行的S为大写),总之,输入时一定要小心,否则会使用户即使输入正确,也会出现错误提示,也无法提交。2.8.1 添加数据对接控件从工具箱的“数据”组中,拖出一个AccessDataSource控件到网页的“新会员注册”文字后面。控件拖入网页后,网页上会显示其名字为AccessDataSource1(见图2-43)。图2-4
11、3 Access数据源控件外观添加数据源控件后,会发现它占用一行位置,我们会感觉标题格变宽了,实际上在运行时,这一控件是不占位置的,它是一个运行时不可见控件,永远不可能出现在浏览者的网页上。如果要专心设置页面布局,则有这个控件还是感觉很不舒服,无法让我们更专心于网页排版。不过VS2005已经为我们想到了这一点。单击VS2005“视图”菜单,单击“非可视控件”菜单项(见图2-44),即会去除此项的选定,并且会发现网页上的数据源控件“消失”了,表格重新回到原来的状态。再次单击“非可视控件”菜单项,即会重新显示出数据源控件。一般情况下,除非专门调整网页外观,否则一般都会让这些起关键作用的非可视控件显
12、示在设计界面。图2-44 非可视控件是否显示选项菜单2.8.2 确认数据库存在在设置数据源连接数据表之前,必须先确定数据库存在。调出解决方案管理器窗口(这个窗口一般位于屏幕右侧),查看窗口内有无已建好的数据库名“zz数据库.mdb”。此文件存放在App_Data文件夹内(见图2-45)。这是一个受系统保护的文件夹,网络服务器会禁止任何人打开或下载这一文件夹中的任何文件。有人曾将网页上的图片放在了这一文件夹内,结果运行网页时,总也无法显示这些图片,原因就在于他的图片放错了文件夹。图2-45 刷新网站重要提示:数据库必须放在App_Data文件夹内,这是保证数据不被人非法窃取的最基本的前提。问题解
13、答:管理器窗口内数据库文件不存在怎么办?1. 如果文件夹内确实没有,可以单击窗口上方的刷新按钮。2. 如果还是没有,则说明数据库设计时,没有保存在此文件夹内,这时就需要从“我的电脑”中,找到已设计好的数据库,复制到“E:蜘蛛网App_Data”文件夹内,或重新设计并保存到此文件夹内。3. 如果有,但是数据库文件不在App_Data文件夹内,而是和注册页同在一级上,这时可以用鼠标将其拖入App_Data文件夹。总之,只有保证数据库存在,才能继续以下的设计。2.9.3程序说明1. 关于颜色:语句输入时,其中的红色字如果在红色双引号之内,并不表示程序有错误,按照VS2005的约定,红色为字符串、蓝色
14、为VS2005专用词,又叫关键字。青色是一种VS2005专用的一种称为类的专用词,读者暂且无需明白什么是类。2. 本程序使用了一个组合语句try catch( ),翻译成中文意思为:“要做一件事,做做试试;不行就找原因,声明我做不了”。3. AccessDataSource1.Insert:执行数据源1的插入功能;即让数据源1插入一条记录,将注册信息写入数据库。4. 注意,AccessDataSource1的最后一个字符是数字1,不是英文字符L。5. 1和L、0和O混淆,true写成ture是初学者特别容易出现的错误。6. Response:中文翻译为”回应”,单击后的回应一般是一个对话框或一
15、个新网页。“Response.Write("<script>window.alert('重复注册或网络异常')</script>");”为一固定写法,其功能是弹出一个对话框,框内文字为“重复注册或网络异常”。7. 说明:以后要编写弹出对话框语句时,只需复制此语句,然后修改框内文字即可。8. Exception:中文翻译为”异常”,即外部因素引起的程序无法执行。程序异常不是程序错误,程序错误是程序编写不正确。catch (Exception ee)即捕获异常,不让异常扩散。如果程序没有57行,当执行插入遇到异常时,网页就会出现一长篇满是
16、英文和代号的错误页,而不是一个友好的异常提示对话框。9. 程序编写完毕,VS2005会在屏幕底部错误列表窗口中显示如图2-54所示内容。图2-54 错误列表窗口本窗口中可列出的错误有两类,一类为警告“”,或者说是编程建议,这类问题不是错误,而是说程序可能不够完善,但这类问题不会影响程序运行。另一类为程序编写错误“”,这类错误一定要排除,否则网页无法正常运行。重要提示:1. 程序中的字母要区分大小写,VS2005严格区分大小写,A和a是完全不同的。一字之错,即会导致程序无法运行。2. 在运行网页之前,一定要查看“错误列表”窗口中有无程序错误提示,如果存在,一定要改正之后再运行。程序书写并检查无误
17、,单击全部保存按钮,再单击运行按钮,试填写一个注册信息,并提交,看是否出现已保存提示。测试完毕,关闭网页,回到设计状态。思考题:1. 如何启动VS2005,并建立一个注册页。2. 起始页关闭后怎么打开,或文件关闭后怎样打开?3. 如何在网页中插入表格?怎么调整表格的宽度大小?4. 如何对用户名、姓名等选项进行设置成必填项;密码和确认密码设置为不能为空并且使输入的密码为不可见;同时如何验证密码与确认密码输入的是否一致?5. 如何设置扩充地址选项的宽度?6. 如何设置性别选项,使其成为二选一按钮。7. 如何建立数据库与网页之间的链接?8. 如何使用Access2003建立数据库和数据表?1.5.4
18、 代码改变状态的通知文档窗口的另一个变化是包含一个新的代码改变通知系统。在处理页面上的代码时,注意现在默认包含行号。单击任意行号,就会突出显示该行代码。行号旁边的是一个颜色改变栏,如图2-7所示。图 2-7这个颜色栏通知用户ASP.NET页面中的代码发生了变化。如果某一行代码没有显示颜色栏,就表示还未对该行代码进行修改。在对某行代码作了修改后,该行的前面就会显示一个黄色栏。保存了文件后,这个颜色栏会变成绿色。黄色代码行表示已进行了修改,但未保存到文件中。在图2-7的黑白屏幕图中,看不出第 13、14和15行旁边的黄色栏,但可以看出它们的阴影有区别。颜色的差异(与其余代码
19、行的颜色栏相比)表示这些代码不久前进行了修改。1.5.5 错误通知和辅助在Visual Studio的以前版本中,设计期间的错误检查是IDE的一个重要特性,在输入代码的过程中,Visual Studio会检查代码中是否有错误。例如,如果输入了If Then语句(使用Visual Basic),但没有包含End If语句,IDE就会给If Then语句加上下划线,提醒用户语句块不完整。在更正错误后,下划线就会消失。在Visual Studio 2005中,如果设计期间出错,就会在下划线的右边出现一个小方框,如图2-8所示。图 2-8把光标放在该方框上,就会显示一个错误符号
20、,单击该错误符号,会打开一个对话框,其中给出了更正错误的选项。例如,如果在Visual Basic中使用了If Then语句,但没有使用End If语句,单击Error Notification按钮就会在IDE中显示一个更正对话框,如图2-9所示。图 2-9这个弹出的对话框首先陈述问题。在这个例子中,它说明任何打开的If语句必须包含一个闭合的End If语句。在这个错误通知的下面是一个链接,允许进行更正。在链接的下面是一个代码示例,说明该更正会如何影响代码。有时,更正设计期间的错误有多个选项。例如,在ASP.NET页面中有如下代码:Dim x As Integr其中,Integr拼
21、写不正确;正确的拼写是Integer。IDE通知用户出了这个错误,并打开相关的错误对话框。更正这个错误有3个选项,如图2-10所示。要更正它,可以滚动到合适的更正选项上,单击该链接。图 2-10重要提示:一定不要将非数据库文件放入“解决方案资源管理器”App_Data文件夹内,否则在浏览网页时,会无法显示。而且一般应在“解决方案资源管理器”内单独创建一个名为pic或img等的文件夹,将图片一类的文件保存在此类文件夹内。1. 确定登录控件处于选定状态确定方法为查看登录控件四周是否有三个小方框(见图3-11)。这三个小方框的作用是调整控件大小,必须用鼠标按住三者之一,才能用鼠标缩放控件
22、的长度或宽度。由于这两个控件在运行时不可见,不会占用网页空间,因此,它们在网页上的位置和顺序均没有必要考虑。程序中的两个斜杠“/”为C#语言特有的标志,它用以说明本行其后的文字为注释文字,在程序中添加注释是优秀程序员的习惯,它可以大大提高程序的可读性,帮助自己和其它阅读程序的人更快的掌握程序的功能。但作为练习,这两个“/”和其后文字可以不必输入。3.3.1 事件与编程事件,是目前流行的所有语言中的一个十分重要的概念。1. 什么是事件事件(Event),就是在某个控件(包括网页本身)上发生的事情。比如一想到按钮,人们会自然会想到在按钮身上会有“Click”(点击)事件。2. 如何知道一个控件都有
23、哪些事件以登录框为例:具体操作步骤如下:(1) 单击VS2005上部的“Default.aspx”页标签,切换到“设计”界面(见图3-17)。(2) 单击选中登录控件Login1。(3) 按F4键,调出属性窗口。(4) 单击属性窗口上部的事件按钮。操作结果如图3-17右侧所示。图3-17 登录控件的“属性/事件”窗口说明:要将属性窗口设置回到显示属性方式,请单击其左侧的按钮。从图3-17所示的属性窗口可以看出,窗口左侧为事件列表,共有10种事件。其中第一个为Authenticate事件,它发生在“引发对用户进行身份验证”时刻,即单击“登录”按钮时发生。在窗口的右侧,是事件对应的程序,如果空白,
24、表示没有对此事件编写程序。图中第一格显示的是Login1_Authenticate,表示程序输入窗口,即Default.aspx.cs中有一个名为Login1_Authenticate的程序。由此可见,属性窗口即是属性显示与设置窗口,又是事件显示与选择窗口。3. 排除事件错误如果要删除程序录入界面中的某个程序,则一定要在某个控件的属性窗口中找到此名称,并且删除。否则程序会运行出错。为此,我们可以做一个实验:(1) 双击HiddenField1控件,程序窗口中会打开并自动生成一个名HiddenField1_ValueChanged的空程序(见图3-18)。(2) 我们并没有想针对HiddenFi
25、eld1编写程序,因此,应将图中的22-25行删除。(3) 单击启动调试按钮“”,运行网页,会出现图3-19所示的错误页面。图3-18 自动产生的事件对程序图3-19 缺少事件对应程序错误错误页面显示,ID为HiddenField1的控件缺少HiddenField1_ValueChanged对应的程序。这是因为我们刚刚将其删除。要排除这一错误,需要继续如下操作。(1) 切换到Default.aspx设计界面(见图3-20);(2) 单击选中HiddenField1;(3) 按F4键调出属性窗口;(4) 单击事件按钮找到ValueChanged事件。会发现属性/事件窗口中也自动添加了一个对应程序
26、名“HiddenField1_ValueChanged”。(5) 逐字删除此事件对应的程序名“HiddenField1_ValueChanged”。图3-20 属性/事件窗口中自动添加的对应程序名4. 事件是由谁规定的事件是由编写控件的人规定的,VS2005中目前工具箱中的所有控件,都是微软公司设计的,因此,每个控件的所有事件都是由微软公司规定的。在使用控件事件时,只有使用的权利,没有规定一个控件是否具有哪种事件的权利。5. 事件对应程序何时会得到执行如果将程序写在某种事件对应的程序内,当事件发生时,就会执行相应的程序,如果事件总也不发生,则程序会总也得不到执行。比如网页访问者在打开Defau
27、lt.aspx网页后,总也不单击登录按钮,就会总也不执行Default.aspx.cs页中的Login1_Authenticate程序。明白了什么是事件及事件发生的原因,就等于知道了编写程序的时机,将程序语句写入合适的事件内,当事件发生时,就会执行所写程序,也就能够得到程序员想要的结果。许多控件都有相同的事件。因此,学习时间长了,自然会对控件的这些事件何时发生有更深的了解,现在不必急于将所有事件都明白的一清二楚。图3-25 添加显示明细控件通过观察网页运行结果,读者会发现如下问题:问题1:为什么网页运行后,未登录前,显示详情控件内不显示任何数据,登录后就会显示数据。问题解释:显示详情控件的数据
28、源于数据源AccessDataSource1。数据源在取数据时,有两个限定条件(见图3-24)一是用户名=HiddenField1,二是密码=HiddenField2,网页刚刚运行时,这两个隐藏输入控件中的值全部为空,因此,数据源只能从数据库中取得0个符合条件的数据。在登录后,通过自编程序,为两个隐藏输入控件赋了值。数据源依据取数条件,从数据库中取出了一条记录,于是显示详情控件就将其显示在了网页上。问题2:虽然网页上在登录成功之后能够显示出已登录者的用户名和密码,但有登录框内却提示“登录失败,请重试”(见图3-26)。问题解释:按VS2005的要求,登录框应使用专用的数据库存放用户信息,而不是
29、我们的“zz数据库.mdb”。本书没有按照VS2005的要求设计出这样一个数据库,登录框自然就无法找到登录者信息,所以才会在登录框内显示“登录失败,请重试”。但按本书的设计,即便出现这样的错误提示,也并不表示程序有错。只要显示明细内能够显示出登录者的用户名和密码,则表示设计正确。在完成本章设计后,读者会发现,网页上将来不会在登录成功会显示这一错误提示,仅仅会在用户名或密码输入错误后才显示。问题3:在显示明细控件中,密码以明文的方式显示,如何才能实现以“*”显示。问题解释:这只是暂时现象,下一节本书将会做一个小小的进一步设计,即会让网页访问者永远都不会看到登录者的密码。问题4:数据表控件(Gri
30、dView)和显示明细控件(DetailsView)两者之间的区别有多大。问题解释:二者最主要的是显示数据时的排列方式不同,GridView适合于类似于Excel格式的多条记录同时横向显示与编辑,而DetailsView主要用于显示和编辑单条记录,记录中的各列纵向显示。两种控件都可以很容易的添加“插入/修改/删除”按钮以及添加自动分页功能。3.4.1 判断结构第2428行为一个判断结构。1. 判断结构的写法常见的判断结构有三种写法(见图3-31)。 (1) 典型的判断结构(2) 简单判断结构(3) 复杂判断结构图3-31 复杂语句类型由图3-31可以看出:(1) 判断结构以“if”开始,“if
31、”是判断结构的关键词,它的颜色为蓝色,在默认情况下,蓝色为VS2005专用词。由图中可以看出,除了“if”外,在判断结构中,还可能用到的关键词有“else”、“else if”。(2) 判断条件一定要用小括号括起来。(3) 要执行的语句如果是多条,则一定要用大括号括起来。要执行的语句如果仅有一条,则大括号可以省略。(4) 对于大括号内的语句,每句后面都要以分号结束。2. 判断结构的作用判断结构是程序中常用的一种语句结构。它能根据程序运行出现的不同情况,选择执行不同的语句。第2428行属于简单判断结构。其大致的意思是:如果(if)显示明细控件(DetailsViews1)的行数(Rows)的总数
32、(Count)大于0,则执行其后一对大括号内的各行语句。没有否则(else),或者说否则什么也不执行,即没有符合条件的登录人,则什么也不做。3.4.2 Session的作用程序第26行使用了Session。1. 什么是SessionSession,有人将其翻译为“会话”,即网页间互相通信。它就如同现实生活中的传递小道消息的人一样,从一个网页传递数据到另一个网页。其实际功能是保存网站的各个网页共用的数据。2. Session例子比如本网页中,声明了一个名为isLogin的Session,于是在所有网页中,就诞生了一个名为isLogin的公共数据。如果不为isLogin指定值,则其值为null,即
33、空值。现在,本网页指定其值为“1”,其它网页就可以根据其值是否为“1”来判断用户是否已登录。当然,其它网页的程序语句也可以将其设为其它值。3. Session写法注意:这个关键词的第一个字母一定要大写。定义一个Session的方法为:先写出Session这个关键字。然后在Session一词后用“ ”符号将数据的名字引起来,例如Session“countryName”、Session“userID”等。4. Session的排它性网站是供多人访问的,一个网站可能有多人同时在访问。如果这个网站的某个网页使用了一个Session,则有多少人打开了本网页,则网站所在服务器就会为每一个用户单独保存一个S
34、ession值。因此,可以说Session是属于个人的,Session保存在网络服务器内,它能够识别不同的访问者,两个人即使同时访问一个网站,其中的一个人也不可能得到另外一个人的Session值。5. Session的使用时限一个用户的Session值不会在服务器上永久保存,服务器默认某个用户的Session自产生到20分钟后,自动清除,这也就意味着,即使正确登录的用户,20分钟后,会自动变成非法用户,访问者要想继续浏览本网站,就必须重新登录。但程序员在设计时,可以根据实际需要设置Session的时限长度,设置语句为:Session.Timeout=x;(x为分钟数)。很多购物网站考虑到用户通
35、过网页选择商品时会花较长时间,因此,会在每一个网页中将Session值设置为60或更长一些。这样,每当用户打开新网页时,Session时效也就会自动延长。不要随意使用Session在编写网页时,如果大量使用Session,则一旦同时在线人数上升,可能很快导致服务器崩溃。这是因为如果一个网站有100万人在线,即有100万台电脑正在打开着本网站的网页,每个人有10个Session,则服务器上就会产生并保存有1000万个和Session相关的信息。3.4.3 Response的作用程序第27行使用了Response。1. 什么是ResponseResponse,响应,即用户即将看到的下一个网页。2.
36、 常用的Response命令常用的Response命令(专业术语叫方法)有两个。一个是Redirect方法,其作用是打开下一个网页。另一个是Write方法,其作用是在将要打开的网页上添加文字。Redirect方法的语法格式为:Response.Redirect("网页名?参数1=值1&参数2=值2&");其中网址格式为:例如:Response.Redirect("用户登录.aspx"); Response.Redirect("");Response.Redirect("欢迎.aspx?登录人=胡家宝&
37、性别=1"); 。3. Response命令的变化形式在计算机执行第27行语句时,计算机先要取得HiddenField.Value的值,比如登录框中输入的是“胡家宝”,则HiddenField.Value就会首先转变为“胡家宝”,然后再进行“+”运算。"欢迎.aspx?登录人=" + "胡家宝"的结果即"欢迎.aspx?登录人=胡家宝"。最后再执行Response.Redirect("欢迎.aspx?登录人=胡家宝");。执行结果是打开了欢迎网页。读者可以从浏览器的地址栏中清晰的看出新网页的网址。3.4.
38、4 程序工作原理图3-32画出了登录过程的内部机制。通过图示可以看出,两个事件程序在登录过程中起了关键的作用,其它步骤都是自动完成的。程序赋值用户登录数据库隐藏输入控件 数据源控件得到条件依据条件取数显示详情控件取数结果欢迎.aspx件程序判断如果显示数据>0条 Autenticate事件ItemCreated事件图3-32 登录过程3.4.5 防止非法访问凡是要求登录才能访问到的网页,都包含有检查是否登录的程序,程序判断如果未登录,则要么显示空白页并提示“禁止匿名访问”、“无权访问”等,要么直接回到登录页请访者先完成登录。这样才能防止有些访问者不登录而直接访问网页,例如不登录而直接在浏
39、览器的地址栏内输入网址的方法打开欢迎网页。编写防止非法访问程序的步骤如下:1. 停止运行程序,在设计状态下,切换到“欢迎.aspx”网页的设计界面。2. 双击网页空白处,打开“欢迎.aspx.cs”程序录入窗口。3. 在Page_Load事件中,输入如图3-33所示的第1619行程序。图3-33 防止非法访问网页的程序设计完成后,运行网页,检验所设计功能是否已实现:试验输入正确用户名/密码,再单击“登录”按钮后,应进入欢迎网页;之后再试验输入错误的用户名/密码,再单击“登录”按钮后,应在登录框内出现“登录失败,请重试”。至此,登录网页和登录用户才能访问的网页已实现了“基本的权限管理功能”。知识
40、点滴:1. 关于Page_Load网页需要先生成,或者说需要先加载(Load),之后才能从服务器端发送到访问者的机器,访问者的浏览器内才能显示网页。生成过程本身即会引发Page_Load事件,这个事件是网页本身固有的,它发生在网页刚刚开始生成时。在Page_Load事件内如果禁止访问本网页,浏览器肯定无法获取本网页的内容。2. 关于比较运算符“= =”:只用于判断语句中,比较两侧值是否相等。“! =”:只用于判断语句中,比较两侧值是否不相等; 例如:if ( x= =3) 则意思是如果x的值和3是相等的,则执行某些语句。除了上述两个比较运算符外,还有如“>”、“<”、“>=”
41、、“<=”、等。单个“=”号表示赋值。例如:int x =3; ,即让整型变量x等于3。3. 关于判断语句本段程序中使用了一个标准的判断语句。由于判断后要执行的语句都是单条语句,因此,没有必要使用成对的大括号。如果要执行的是两条或更多语句,则必须使用成对大括号将这些语句括起来。4. 关于地址栏在Default.aspx网页中,“Response.Redirect("欢迎.aspx?登录人=");”一句的作用是开一个“欢迎.aspx”网页,并将登录人的值传给此页。运行Default.aspx网页,完成登录,会发现网页跳转至“欢迎.aspx”网页,地址栏会显示图3-34所
42、示样式。图3-34 “欢迎.aspx”的地址栏图中的地址栏一片混乱,主要原因是地址栏不可以显示中文字符,每个中文字符到地址栏内时,需要翻译成长度不等的以%开头的数字。图中的真实地址应为:http:/localhost:4464/蜘蛛网/欢迎.aspx?登录人=zhang其中,前面的“http:/localhost:4464”为VS2005使用特殊的Asp.Net2.0技术在读者电脑中模拟服务器形成的IP地址。3.4.6 Request的作用程序第19行使用了Request。1. 什么是RequestRequest的中文意思是请求、要求。即获取上一个网页传给本网页的信息。1、 常用的Reques
43、t常用的Request格式有四种:(1) Request.QueryString"数据名"-从地址栏内获得数据;(2) Request. Form"控件名"-从提交网页内的某控件中获取数据;(3) Request.Cookies"数据名"-从网页在本机共享消息集中获取数据;(4) Request"数据名"-从上述所有方面查找所要的数据;2. 本程序中的Request本程序中,Request“登录人”,相当于Request.QueryString"登录人",用于获致地址栏中的“登录人”的值。Req
44、uest获取值以后,程序通过赋值语句“Label1=”使得标签得到“zhang”这一数据,之后显示在网页上。3.4.7 Cookie的作用上一节中涉及到了一个新词Cookie。它不常用,但很多书籍经常提到。1. 什么是CookieCookie:小甜饼(西餐)。它的英文意义和网页没有什么关系。其真实作用是网页访问者本机上的用于一个网站各网页间的共享数据集。而Session则是在网络服务器上的为每个访问者单独保存的用于一个网站各网页间的共享数据集。2. Cookie有什么作用比如邮箱的用户名、密码等,都有一个“记住我”的功能。这一功能都是使用Cookie实现的,一旦选中“记住我”功能,网页就会将所
45、选中的信息写入在访问者的硬盘中。因此,可以说,Cookie的服务对象就是本网站、本机、本人。有些恶意网站、病毒、木马会搜索Cookie并通过互联网将其发送到“恶人”手中,很多人的QQ号、网上账号等,就是通过这一途径被盗的。因此,网站设计者不应使用Cookie保存重要信息,尽量少用或不用Cookie,而用数据库代替Cookie。读者在使用公共电脑上网时,也不要选中Cookie类功能。但我们没有简单办法了解一个网站是否在“悄悄地”收集和保存一个人上网的信息。因此,一般浏览器都提供有一个设置,禁止/开启Cookie功能。3. 如何读写CookieVS2005考虑到了Cookie容易透漏信息的弊端,在
46、保存Cookie时,采用了Advanced Encrypted Standards (AES)算法进行加密/解密。不进行破解就不可能看到Cookie中的真实值。本章实例没有使用Cookie,也不推荐使用Cookie,因此,读者没有必要练习,本书在此仅给出记住登录框中的用户名(即具体保存/读出Cookie)的语句供参考:写入(可以写在DetailsView1_ItemCreated事件对应程序内):HttpCookie myCookie = new HttpCookie("userID");/新建一个代号myCookie实名为UserID的小甜饼myCookie.Value
47、= "李银锁" /为此小甜饼赋值Response.AppendCookie(myCookie); /保存它到个人电脑的磁盘内读出:(一般写在Page_Load事件程序内)Label1.Text = Request.Cookies"username".Value.ToString();3.1 添加验证码生成页登录网站时,如果仅通过用户名和密码登录,非法用户使用简单手段就可以破解。因此,对于安全性要求较高、不希望经常被攻击、骚扰的网站,很有必要采取一些防护措施,其中一个常用技术即使用验证码。3.5.1 什么是验证码验证码就是一幅小图片,其中的数字或符号是随机
48、产生,用户可以通过肉眼识别出其中的验证码信息,然后在验证码输入框中输入验证码。如果用户名、密码、验证码全部输入正确,才能通过登录验证,成为合法用户。验证码图片一般都会添加一些干扰因素,如颜色变化、字形变化等,以防止非法访问者通过简单的程序即可识别出。验证码技术已成为一种必需采用的网站安全技术。典型的如百度贴吧:要在百度发贴之前,就必须入验证码(见图3-36)。图3-36 百度贴吧3.5.2 验证码的作用验证码一般是防止有人利用机器人自动批量登录、对特定的登录用户用特定程序暴力破解方式进行不断的登陆、灌水,甚至控制网络服务器,盗取数据、篡改网站(即被黑)。因为验证码是一个混合了数字或汉字、符号的
49、图片,人眼识别有时都很费力,通过计算机自动识别就更加困难。这就为拦住恶意访问者设立了一道较难逾越的高墙。网络服务器生成验证码需要加重服务器负担并会占用访问者一定的等待时间。但不能为了细节的良好体验而降低系统的安全性。所以,验证码一定要有,但“验证码”不一定要设计的过于太复杂。简单的说,验证码要起到必要的验证和防护的作用,应做到以下两点:1. 最好在45位随机字符或数字,太少很容易被机器自动识别或匹配出来,太多会影响用户心情。2. 可以通过颜色、背景图片的适度增加识别难度。3.5.3 添加验证码生成页验证码不是随机从电脑中取出的已存放在电脑中的图片,而是由网页后台程序(即文件扩展名为XXXX.aspx.cs中的程序)在网页上逐笔“画”出来的。因此,这种程序很复杂,普通编程人员很难掌握生成技术,但互联网上有大量公开的专业人员编写的此类程序供“免费”采用。站在专业人员的肩上,很容易做到一个普通人做不到的事情。提示:1. 运行网页后台程序“验证码.apx.cs”和运行网页界面文件“验证码.aspx”结果是一样的。每次运行,都会产生一个含有4位随机数的图片(图3
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 聊城大学《英语视听说二》2022-2023学年第一学期期末试卷
- 河南信阳退休教师工资计划
- 2024乡镇宣传工作计划
- 初三暑假具体学习计划
- 语文四年级教学计划
- 2024年单位会计工作计划范文
- 2024年2月小学语文三年级下册教学工作计划范文
- 淘宝个人创业准备计划书淘宝店铺运营计划书
- 年末文明建设工作计划
- 语文校本教研计划
- 国家开放大学高等数学基础形考作业任务1234答案
- 植入式静脉给药装置(输液港)-中华护理学会团体标准2023
- 小学数学集体备课活动记录表范文12篇
- 插画设计与商业应用智慧树知到课后章节答案2023年下浙江工业职业技术学院
- 高考英语二轮复习读后续写10温馨家庭课件
- 肌骨超声简介
- 广东省深圳市2022-2023学年七年级下学期学科素养调研测语文试卷(含答案)
- 中职家长会课件
- 沥青路面渗水系数检测课件
- 孙子兵法-湖南大学中国大学mooc课后章节答案期末考试题库2023年
- 国开电大本科《管理英语4》机考真题(第十五套)
评论
0/150
提交评论