《https://www.wendangku.net/doc/2a17630552.html,动态网站开发教程(第三
版)》各章习题参考答案
第1章习题参考答案
1. 答:静态网页和动态网页在客户端看来是除了发送请求是的后缀名外没有其它任何区别,主要是服务器端的区别。静态网页服务器在接收了客户端的请求后直接读取相应的网页文件返回给客户端,而动态网页服务器在接收到了客户端发来的请求后先找到相应文件然后根据相应参数将文件编译成标准的html代码,再返回给客户端。
2. 答:asp:优点:简单易学、容易上手;缺点:不能跨平台,速度较慢。
php:优点:免费、开放源代码;缺点:缺乏大公司的支持。
jsp:优点:跨平台;缺点:复杂难学。
3. 答程序结构清晰、效率增强、顶级开发工具支持、开发简单、支持Web服务。
4. 答:QQ系统同时使用了C/S和B/S模式,QQ网站的服务器是服务器端,因为它提供服务;而家中的电脑就是客户端了。
第2章习题参考答案
1. HTML超文本标记语言,是一种基于标记的网页设计语言。XHTML是为了适应XML 而重新改造的HTML,也是一种标记语言。它可以看作是从HTML到XML的过渡。XHTML 要求在网页中出现的任何元素都应该被标记出来。
2.
和
标记都可以用于换行,
是段落标记,在换行的同时,会在前段与后段之间留一空白行。
不会产生空行。
3.
4.参考2 _4.html 5. .参考2 _5.html 6. .参考2 _6.html 第3章习题参考答案 1. 答:值类型和引用类型的区别在于,值类型的变量直接存放实际的数据,而引用类型的变量存放的则是数据的地址,即对象的引用。 值类型变量直接把变量的值保存在堆栈中,引用类型的变量把实际数据的地址保存在堆栈中,而实际数据则保存在堆中。注意,堆和堆栈是两个不同的概念,在内存中的存储位置也不相同,堆一般用于存储可变长度的数据,如字符串类型;而堆栈则用于存储固定长度的数据,如整型类型的数据int(每个int变量占用四个字节)。由数据存储的位置可以得知,当把 一个值变量赋给另一个值变量时,会在堆栈中保存两个完全相同的值;而把一个引用变量赋给另一个引用变量,则会在堆栈中保存对同一个堆位置的两个引用,即在堆栈中保存的是同一个堆的地址。在进行数据操作时,对于值类型,由于每个变量都有自己的值,因此对一个变量的操作不会影响到其它变量;对于引用类型的变量,对一个变量的数据进行操作就是对这个变量在堆中的数据进行操作,如果两个引用类型的变量引用同一个对象,实际含义就是它们在堆栈中保存的堆的地址相同,因此对一个变量的操作就会影响到引用同一个对象的另一个变量。 2. 答:C#支持的数据类型有: (1) 值类型 包括:简单类型、结构类型、枚举类型。其中,简单类型又分为:整型、布尔型、字符型、浮点型、小数型。 (2) 引用类型 包括:对象类型、类类型、接口、元数据、字符串类型、数组。 3. 答: 1)12.34--1,234.00%good 2)0--good 3)456--00456good 4. 答:面向对象的程序设计(Object-Oriented Programming,OOP)是一种基于结构分析的、以数据为中心的程序设计方法。其主要思想是将数据及处理这些数据的操作都封装(Encapsulation)到一个被称为类(Class)的数据结构中,使用这个类时,只需定义一个类的变量,这个变量被称为对象(Object)。 类的成员有:成员常量,代表与类相关的常量值。字段,即类的变量。成员方法,执行类中的复杂计算和其他操作。事件,定义了由类产生的事件公告,用于说明发生了什么事情。属性:定义命名的属性以及与读写属性相关的行为。索引指示器,允许类的实例通过与数组相同的方法来索引。操作符,定义类的实例能够使用的操作符。构造函数,在类被实例化时首先执行,完成对类的实例的初始化。析构函数,在类被删除之前最后执行,用于对类的实例销毁。 对象是一个类的变量,这个变量被称为对象(Object)。 5. 答:由于C#中的类不支持多重继承,而客观世界出现多重继承的情况又比较多。为了避免传统的多重继承给程序带来的复杂性等问题,同时保证多重继承带给程序员的诸多好处,C# 提出了接口(interface)的概念,通过接口来实现多重继承的功能。接口用于定义一种程序的协定。实现接口的类或者结构要与接口的定义严格一致。有了这个协定,就可以抛开编程语言的限制(理论上)。 接口可以包含方法、属性、事件和索引器。 6. 代码如下: class A//定义一个类 { public A() { Console.WriteLine("A"); } } class B//定义一个类 { public B() { Console.WriteLine("B"); } } class C:A { B b=new B(); } class D { public static void Main() { C c=new C(); //执行结果就为"A””B". } } 7. 代码如下: using System; class MyClass { public int i; private int j; protected int k; public void method1() { Console.WriteLine("public method."); } private void method2() { Console.WriteLine("private method."); } protected void method3() { Console.WriteLine("protected method."); } } class mymain : MyClass { public static void Main() { MyClass t = new MyClass(); Console.WriteLine("i={0}", t.i); Console.WriteLine("j={0}", t.j); //会出现编译错误,私有成员不允许在其它类中访问 Console.WriteLine("k={0}", t.k); //会出现编译错误,应该创建MyMain的对象,然后通过MyMain的对象访问 t.method1(); t.method2(); //会出现编译错误,私有的方法不允许在其它类中调用 t.method3(); //会出现编译错误,应该创建MyMain的对象,然后通过MyMain的对象调用该方法 } } 8. 代码如下: using System; class Test6 { public static void Main() { string str = ""; while (str.Length <= 3) { Console.Write("请输入一个长度大于3的字符串:"); str = Console.ReadLine(); } //(1) Console.WriteLine("字符串的长度为:{0}", str.Length); //(2) int i = str.IndexOf('a'); if (i > -1) { Console.WriteLine("第一个出现字母a的位置是:{0}", i); } else { Console.WriteLine("字符串中不包含字母a。"); } //(3) string str1 = str.Insert(3, "hello"); //在第3个(初始序号为)字符前插入hello Console.WriteLine("插入hello后的结果为:{0}", str1); //(4) string str2 = str1.Replace("hello", "me"); Console.WriteLine("将hello替换为me后的结果为:{0}", str2); //(5) string[] arr = str2.Split('m'); Console.WriteLine("以m为分隔符分离后的字符串有:"); for (int j = 0; j < arr.Length; j++) { Console.WriteLine(arr[j]); } } } 第4章习题参考答案 1.答: (1)用户通过客户端浏览器请求页面,页面第一次运行。如果程序员通过编程让它执行初步处理,如对页面进行初始化操作等,可以在Page_load事件中进行处理。 (2)Web服务器在其硬盘中定位所请求的页面。 (3)如果Web页面的扩展名为.aspx,就把这个文件交给aspnet-isapi.dll 进行处理。如果以前没有执行过这个程序,那么就由CLR编译并执行,得到纯HTML结果;如果已经执行过这个程序,那么就直接执行编译好的程序并得到纯HTML结果。 (4)把HTML流返回给浏览器,浏览器解释执行HTML代码,显示Web页面的内容。(5)当用户键入信息、从可选项中进行选择,或单击按钮,页面可能会再次被发送到Web服务器,在https://www.wendangku.net/doc/2a17630552.html,中被称为“回发”。更确切地说,页面发送回其自身。例如,如果用户正在访问default.aspx页面,则单击该页面上的某个按钮可以将该页面发送回服务器,发送的目标还是default.aspx。 (6)在Web服务器上,该页面再次运行,并执行后台代码指定的操作。 (7)服务器将执行操作后的页面以HTML标记的形式发送到客户端浏览器。 2. 答: (1)页请求: (2)开始 (3)页初始化 (4)加载 (5)验证 (6)回发事件处理 (7)呈现 (8)卸载 (9) 3. 答:有两种即单文件页模型和代码隐藏页模型。在单文件页模型中,页的标记及其编程代码位于同一个后缀为.aspx 的文件中。代码隐藏页模型与单文件页模型不同的是,代码隐藏页模型将事物处理代码都存放在单独的cs文件中,当https://www.wendangku.net/doc/2a17630552.html,网页运行的时候,https://www.wendangku.net/doc/2a17630552.html,类生成时会先处理cs文件中的代码,再处理.aspx页面中的代码。 4. 答:视图状态:用于保存本窗体页的状态。 控件状态:用于存储控件状态数据。 隐藏域:呈现为 元素,用于存储一个值。 应用程序状态:用于保存整个应用程序的状态,状态存储在服务器端。 会话状态:用于保存单一用户的状态,状态存储在服务器端。 Cookie状态:用于保存单一用户的状态,状态存储在浏览器端。 1. 答:只要是浏览器关闭,Session就会失效! 2. 答:利用response.write方法和label都可以输出信息,但是label相对比较容易控制输入的位置和格式。建议用label。 3. 答:Application对象是网站的应用程序可以共享的,而网站程序可能同时会有多个用户访问,那么可能出现多个用户同时访问某个保存在Application对象中的变量的问题。当多个用户同时需要修改Application中某个变量时,还有可能产生数据不一致的问题。 为了避免这种情况的发生,Application对象提供了两个方法:Lock和UnLock。当需要修改某个Application对象中保存的变量值时,先用Lock方法将Application对象锁住,禁止其它用户修改Application对象中的变量值,然后再对变量值进行修改。修改结束后,再用UnLock 方法把锁打开。这样就避免了访问冲突的问题。 Lock和UnLock方法必须成对使用。如果只用了Lock方法而不用Unlock,则获得资源的用户永远占有Application,不释放,导致其它用户无法得到Application。没有Lock方法使用Unlock也是无意义的。 4. 答:Application是保存在服务器内存中的数据,可以让所有用户来共享,如用来制作简单的记数器或聊天室等。 Session是保存特定用户的数据,对该用户起作用,一旦该用户退出或关机,则数据自然就消失了,主要用于来判断用户是否登录等。 Cookie是保存在用户硬盘中的数据,一般用来保存登录的用户名与口令等,这样用户以后登录中可以省去输入的麻烦。 5. 用Server对象的htmlencode方法,将字符串变换后再输出。 第6章习题参考答案 1. 答:HTML表单是静态网页中定义的表单,只在浏览器端运行,用于向服务器提交用户的请求。WEB表单是https://www.wendangku.net/doc/2a17630552.html,中的表单,是在服务器上运行的。WEB表单也是用 |