福建农林大学aspnet复习整理_第1页
福建农林大学aspnet复习整理_第2页
福建农林大学aspnet复习整理_第3页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

(一) 题型与分值分布1、 填空题(8个空,8分)2、 选择题(10小题,20分)3、 多项选择题(4小题,12分)4、 判断题(8小题,8分)5、 问答与分析题(6小题,42分)6、 程序填空题(1小题,10分)(二) 知识点一、 ASP.NET基础知识1、C#.Net的应用领域主要包括: 桌面应用系统开发、网站开发和手机开发。2、 NetFramework的模型:(1)NetFramework具有两个主要组件: 公共语言运行库和.NetFramework类库。(2)ASP.NET网站在编译时,首先将语言代码编译成MSIL(微软中间语言)代码。(3) 动态页面与静态页面的区别:1) 静态网页是由浏览器直接从服务器下载到浏览者所在机器上浏览的页面,扩展名通常为html、htm。2) 动态网页需要服务器执行(运算)成静态网页的内容,然后由浏览器下载到浏览者所在机器上浏览的页面,扩展名通常为aspaspx、jsp、php等。3、 IIS(1) IIS是微软提供的Web服务器。(2) 若IIS在VisualStudio2008安装后才安装,为使IIS能运行ASP.NET3.5页面,则需要注册ASP.NET。4、 虚拟目录虚拟目录隐藏了站点实际的物理路径,提高了站点的安全。【例1】一台IIS服务器IP地址为7,网站端口号为8000,则要访问虚拟目录xxxy中default.aspx的URL为http://7:8000/xxxy/default.aspx 。二、 ASP.NET相关技术1、 ASP.NET的知识体系:(1) C#语言:运行在服务器端,用于处理各种业务逻辑。(2) HTML或者XHTML:由客户端浏览器解析执行,用于在客户端呈现页面。(3) JavaScript:运行在客户端,由客户端浏览器解析执行,用于处理一些与页面控制相关的工作。(4) CSS:由客户端浏览器解析执行,用于控制在客户端呈现的页面元素样式。2、 HTML和XHTML(1) 浏览器的作用:解析HTML文件。(2) 浏览器对HTML文件的容错度很高。(3) 不同的浏览器对HTML文件的解析存在差异。(4)常见的浏览器内核分为以下四种: Trident、Gecko、Presto、Webkit。Trident为IE浏览器使用的内核。3、 CSS)、基于(1)CSS样式包括:基于元素的样式、基于类的样式(定义时需加前缀)、基于ID的样式(定义时需加上前缀“#”)。内联样式的css、基于特定页的CSS、内联样式的css、基于特定页的CSS、外部样式表(.csS文件。(3)Table布局与DIV+CSS布局的比较1) 代码:div+css的代码比较简洁。2) 页面优化:div+css更有利于搜索引擎的搜索。3) 打开速度:在网速较慢的时候,用div+css制作的网页,是一点点加载的;而table制作的网页在前几秒的时候没有内容,而后一下子显示。4) 兼容性:table兼容性通常高于div+css。4、 javascript(1)JavaScript是由NetScape公司开发的基于对象和事件驱动的解释型语言。(2)javasript是弱类型语言。(3) 使用javascript实现评分控件。(this关键字)(4)使用javascript实现页面的无刷新评论。【例1】设有以下代码。试问,单击 btnl、btn2和btn3,弹出的对话框的显示内容分别是什么?<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="/1999/xhtml"><head><title>this关键字</title><scripttype="text/javascript">functioninit(){btn2.onclick=show1;//btn2的单击事件处理函数是show1}functionshow1(){alert(this.value);}functionshow2(btn){alert(btn.value);}</script></head><bodyonload="init()"><!--btn1的单击事件处理函数调用了 show1--><inputid="btn1"type="button"value="按钮1"onclick="show1();"/><inputid="btn2"type="button"value="按钮2"/><inputid="btn3"type="button"value="按钮3"onclick="show2(this);"/></body></html>三、ASP.NET3.5标准控件TOC\o"1-5"\h\z1、Page_Load事件先于控件的事件而执行 。2、Page的IsPostBack属性:用于判断页面是否回发 。【例1】判断题:当页面往返处理时,Page_Load事件中的条件语句(!lsPostBack)对应的语句将被执行。对3、 ASP.NET控件包括HTML控件、HTML服务器控件和Web服务器控件。4、存放Web窗体页C#代码的模型有单文件模型和代码隐藏页模型 。5、 OnClick和OnClientClick事件:(1)OnClick是button的服务器端事件,OnClientClick是button的客户端事件。(2)OnClientClick事件代码先于OnClick执行。(3)当OnClientClick事件返回false时,页面不会回发,不会执行 OnClick事件中的代码。6、 Web开发原则:(1)能在客户端实现的尽量不在服务器端完成。 (两数相加)(2)不可信的客户端验证。(3)不要将机密数据隐藏在客户端。 (下载地址的显示)【例2】已知divide.aspx的代码如下。请阅读代码,回答问题:<%@PageLanguage="C#"%><!DOCTYPEhtmlPUBLlC"-//W3C//DTDXHTML1.0Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd"><scriptrunat="server">protectedvoidbtnDivide_Click(objectsender,EventArgse){intdivident=0;intdivisor=0;boolprsResult1=int.TryParse(txtDivident.Text,out divident);boolprsResult2=int.TryParse(txtDivisor.Text,out divisor);if(prsResult1&&prsResult2){txtResult.Text=( divident/divisor).ToString();}}</script><htmlxmlns="/1999/xhtml"><headid="Head1"runat="server"><title>两数相除</title></head><body><formid="form1"runat="server"><div><asp:TextBoxlD="txtDivident"runat="server"></asp:TextBox><asp:LabelID="Label1"runat="server"Text="十"></asp:Label><asp:TextBoxlD="txtDivisor"runat="server"></asp:TextBox><asp:ButtonID="btnDivide"runat="server"Text="相除"onclick="btnDivide_Click"/><asp:TextBoxID="txtResult" runat="server"x/asp:TextBox></div></form></body></html>(1)请分析上述代码存在的问题。答:上述代码是在服务器端进行除法运算。 在服务器繁忙或者网络拥挤的情况下, 用户体验很差。您会如何解决代码中存在的问题,请描述您的解决方案,并给出关键性代码。答:将除法运算在客户端完成。关键代码:functiondivide(){vartxtAdd1=document.getElementByld("<%=txtAdd1.ClientlD%>");vartxtAdd2=document.getElementByld("<%=txtAdd2.ClientlD%>");varadd1=parseInt(txtAdd1.value,10);varadd2=parseInt(txtAdd2.value,10);document.getElementByld("<%=txtResult.ClientlD%>").value(add1/add2).toString();}四、 ASP.NET3.5验证控件1、 提高系统健壮性的基本原则:尽量减少用户输入的机会。不要过分相信用户一定会按照我们的要求规规矩矩地做事情。【例1】设计一个会员注册页面时,你会使用(A)控件来实现性别的输入。A.RadioButton(单选按钮)B.CheckBoxC.TextBox D.GridView2、 数据验证的两种方式:服务器端验证和客户端验证。3、的验证控件同时实现了服务器与客户端的验证 ,验证控件可分为以下几类:RequiredFieldValidator:必填控件(必须字段验证) 用于检查是否有输入值CompareValidator:比较控件(比较验证) 按设定比较两个输入RangeValidator:范围控件(范围验证) 输入是否在指定范围RegularExpressionValidator:正则控件(正则表达式验证)正则表达式验证控件CustomValidator:用户自定义控件(自定义验证) 自定义验证控件ValidationSummary:汇总控件(验证总结) 总结验证结果【例2】在用户注册页面中,你会使用验证控件 RegularExpressionValidator 以保证手机号码的有效性。五、 Http请求响应和状态管理1、Http是无状态协议。对于浏览器的每次请求,Web服务器都会生成一个新的页面对象 。每个页面对象只有有限的生命周期 ,响应结束,页面对象立即销毁。页面对象的状态信息(非静态变量)在对象销毁后即不存在;页面类的静态变量可以在对象之间传递。2、 HTTP请求ASP.NET通过Page类的属性Request控制请求数据。Request属性是一个HttpRequest对象,它封装了HTTP请求信息。HttpRequest对象的常见属性:QueryString:从查询字符串中读取用户提交的数据;对应Get请求Cookies:获取客户端的Cookies数据Form:获取网页中定义的窗体变量的集合,对应 Post请求。【例2】从3/News.aspx?newslD=2 中获取newsID值的方法是_Request.QueryString[hewsID” 。Get和Post请求页面将以post方式,提交给自己。区别:安全性:GET通过URL传递表单值, POST传递的表单值隐藏在HTTP报文中,而非显示在URL中。因此,POST的安全性高于GET。获取方式:在页面中常通过Request.QueryString["name”]获得get方式提交的内容,而通过Request.Forms"name”获得post方式提交的内容。而语句Request"name”,可以同时适合于get和post方式提交的表单。传递数据量:GET传递的数据量有限,而 POST可以传递较大的数据量。用户体验:POST会有浏览器重新提交表单的提示, GET则没有。3、 HTTP响应ASP.NET通过Page类的属性Response控制响应数据。Response属性是一个HttpResponse对象。HttpResponse对象的常见方法:Redirect():页面重定向Write():在页面上输出信息;在 IE内核的浏览器中,使用 write()方法弹出javascript对话框,相应的javascript语句将出现在html的首部,因此在对话框消失之前,页面背景为白色。【例3】请简述下述代码存在的问题,并给出相应的解决办法。<%@PageLanguage="C#"%>VDOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0 Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd"><scriptrunat="server">protectedvoidPage_Load(objectsender,EventArgse){Response.Write("<center>");for(inti=1;i<=4;i++){Response.Write("<pxfont size="+ i.ToString() + ">我喜欢ASP.NET!</font></p>");}Response.Write("</center>");}</script><htmlxmlns="/1999/xhtml"><headid="Head1"runat="server"><title>无标题页</title></head><body>vformid="form1"runat="server"><div></div></form></body></html>4、 HttpServerUtility:ASP.NET的Page类的Server属性封装了服务器端的一些操作。Server属性是一个HttpServerUtility对象。HttpServerUtility对象的常见方法:HtmlEncode():将字符串中的XHTML元素标记转换为字符实体,如将“<”转换为<。HtmlDecode():与HtmlEncode作用相反。MapPath():获取网页的物理路径。UrlEncode():将字符串中某些特殊字符转换为 URL编码,如将“/”转换为“%2f”,空格转换为“+”等。UrlDecode():与UrlEncode作用相反。【例4】在net类库中,很多能装载磁盘文件的类都是通过物理文件夹路径来装载的。 因此,在Web页的程序代码中常常使用 Server.MapPath方法把虚拟路径隐射到物理路径。【例5】请问下面程序段执行完毕,页面上显示内容为( C)Response.Write(“<href=''>新浪</a>”)A.以超连接形式显示“新浪” B.<ahref=''>新浪</a>C.新浪 D.该句有错,无法正常输出5、 ViewState。ViewState的工作原理。Viewstate机制是中对同一个Page的多次请求之间维持 Page及控件状态的一种机制。viewstate是由ASP.NET页面框架管理的一个隐藏的窗体字段 。viewstate的值保存在浏览器的html代码中,用来保存用户的状态信息。 当ASP.NET执行某个页面时,该页面上的ViewState值和所有控件将被收集并格式化成一个编码字符串,然后被分配给隐藏窗体字段的值属性(即 <inputtype=hidden>)。viewstate用于在本页面之内传递公共变量”。ViewState有效期等于页面的生命周期 。ViewState的优点1)耗费的服务器资源较少 (和Application、Session相比)。因为,viewstate数据都写入了客户端中。2)易于维护。默认情况下,.NET系统自动启用对控件状态数据的维护。3)增强的安全功能。viewstate中的值经过哈希计算和压缩,具备一定的安全性。(3) ViewState的缺点1)对性能的影响。 由于viewstate存储在html页本身,因此如果存储较大的值,将影响用户访问网站的速度。2)潜在的安全风险。 虽然viewstate以哈希格式存储数据,但由于存储在客户端中,仍然能被篡改。(4) viewState的使用建议。6、 Cookies对象。(用户的自动登录:密码框的赋值)【例6】判断题:已知文本框对象 txtPass的TextMode为"Password",那么执行语句txtPass.Text=“123”后,对应的HTML页面中的txtPass显示内容为字符串“123”。错7、 Session对象。(购物车)Session对象默认的有效期为 20分钟。8Application对象。(在线人数的统计)Application对象默认的有效期为应用程序从启动到结束。名称存储位置使用范围存放数据类型生命周期Session服务器特定用户Object有,可以自行设置Cookie客户端特定用户String有,可以自行设置Application服务器所有用户Object无六、ADO.NET1、ADO.NET框架(1)在ADO.NET框架中,通过创建Connection对象建立与数据源之间的连接,通过创建Command对数据源执行各种SQL命令。(2)当只需要顺序读取数据库中的数据而不需要其他操作时,建议使用 DataReader对象。(3)连接SQLServer数据库的验证方式为:Windows验证、SQLServer验证、Windows和SQLServer混合验证(4) 连接本地的SQLServer2005中的MyPetShop.mdf数据库对应的连接字符串为:“DataSource=.;AttachDbFilename=|DataDirectory|\MyPetShop.mdf;IntegratedSecurity=True;UserInstance=True” ;连接本地的SQLServer2005Express的MyPetShop.mdf数据库对应的连接字符串为:“DataSource=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\MyPetShop.mdf;IntegratedSecurity=True;UserInstance=True”访问数据库的速度直接影响到应用程序的执行效率, ADO.NET提供了两种数据库连接模式:连接模式:利用DataReader对象实现数据库连接模式断开模式:利用DataAdapter对象实现数据库断开模式【例1】判断题:连接SQLServer2005与SQLServer2005Express的连接字符串格式是一样的。 错ADO.NET框架中,使用DataReader读取数据是“断开”模式。错2、MD5算法。对应数据库表的字段类型通常为: char(32)思考:如何使用后台数据库中的 userlnfo(userName,userPass)表实现用户的登录与注册?其中,userPass字段中存放的是由MD5算法加密后的用户密码。/*使用MD5加密字符串的方法*/publicstaticstringGetMd5Str(stringmyString){MD5CryptoServiceProvidermd5=newMD5CryptoServiceProvider();byte[]fromData=Encoding.Unicode.GetBytes(myString);byte[]toData=md5.ComputeHash(fromData);stringbyteStr=null;for(inti=0;i<toData.Length;i++){byteStr+=toData[i].ToString("x");}returnbyteStr;}3、SQL语句的注入攻击。答:假设使用如下SQL语句查找给定学号的学生信息,Strings=select*fromstudentwheresno=?"+sno+“?”Sno代表用户输入的学号。如果输入的是字符串: “,or,1?=,1 ”那么,执行该语句,将返回 student表中的所有的学生信息。即该语句存在 SQL语句的注入攻击。可以采用传入参数的方式预防注入攻击,对应的代码改成:stringsqlStr="selectsno,snamefromstudentwheresno=@snoPar";SqlCommandcommand=newSqlCommand(sqlStr,sqlCon);command.Parameters.AddWithValue("@snoPar",sno);此时,当用户输入字符串:“,or,1?=,1,上述代码将在student表中查找学号为:“,or,1?=,1的学生信息,返回结果为空,即预防了上述的注入攻击。【例2]已知userlnfo表结构为(userID,userName,realName,sex,age)。请阅读下面代码,回答问题:<%@PageLanguage="C#"%><%@ImportNamespace="System.Data.SqlClient"%><%@ImportNamespace="System.Data"%><%@ImportNamespace="System.Text"%>VDOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0 Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd"><scriptrunat="server">protectedvoidbtnQuery_Click(objectsender,EventArgse){stringconString="DataSource=(local);InitialCatalog=AspNetStudy;integratedsecurity=True";SqlConnectionsqlCon=newSqlConnection(conString);stringsqlStr="selectuserID,userName,realName,sex,agefromuserInfowhereuserName='"+txtName.Text.Trim()+"'";SqlCommandcommand=newSqlCommand(sqlStr,sqlCon);SqlDataAdapteradapter=newSqlDataAdapter(command);DataTabletable=newDataTable();adapter.Fill(table);GridView1.DataSource=table;GridView1.DataBind();}</script><htmlxmlns="/1999/xhtml"><headid="Head1"runat="server"><title>例题</title></head><body><formid="form1"runat="server"><div>姓名:<asp:TextBoxID="txtName"runat="server"></asp:TextBox><asp:ButtonID="btnQuery"runat="server"Text="查询"onclick="btnQuery_Click"/><br/><asp:GridViewID="GridView1"runat="server"></asp:GridView></div></form></body></html>(1)请简述该段代码的功能。答:当用户输入查询的姓名,单击“查询”按钮,将在GridView1控件中显示该用户的基本信息。请简述该段代码存在的问题。答:该段代码存在sql注入攻击的问题。当输入的姓名为字符串“,or,1?=,1,将”查询出后台数据库userInfo表中的全部记录。您会如何解决该段代码的问题?请描述您的解决方案,并给出关键代码。答:我会通过传入参数或者调用存储过程的方式来预防sql语句的注入攻击。例如,采用传入参数的方式,btnQuery_Click方法中的代码改写成:protectedvoidbtnQuery_Click(objectsender,EventArgse){stringconString="DataSource=(local);InitialCatalog=AspNetStudy;integratedsecurity=True";SqlConnectionsqlCon=newSqlConnection(conString);stringsqlStr="selectselectuserlD,userName,realName,sex,agefromuserlnfowhereuserName=@un”;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论