版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章Web程序设计概述本章主要内容1.1Internet与WWW概述1.2Web浏览器与Web服务器1.3Web编程概述1.4ASP.NET4.0开发环境Cookie对象
Internet是一组全球信息资源的总汇。有一种粗略的说法,认为Internet是由许多小的网络(子网)互连而成的一个逻辑网,每个子网中连接着若干台计算机(主机)。Internet以相互交流信息资源为目的,基于一些共同的协议,并通过许多路由器和公共互联网组成,它是一个信息资源和资源共享的集合。计算机网络只是传播信息的载体,而Internet的优越性和实用性则在于本身。1.1Internet与WWW概述1.1.2WWW概述WWW是WorldWideWeb(环球信息网)的缩写,也可以简称为Web,中文名字为“万维网”。它起源于1989年3月,是由欧洲量子物理实验室(theEuropeanLaboratoryforParticlePhysics,CERN)所发展出来的主从结构分布式超媒体系统。通过万维网,人们只要使用简单的方法,就可以很迅速方便地取得丰富的信息资料。由于用户在通过Web浏览器访问信息资源的过程中,无须再关心一些技术性的细节,而且界面非常友好,因而Web在Internet上一推出就受到了热烈的欢迎,走红全球,并迅速得到了爆炸性的发展。(1)因特网(Internet)(2)万维网(WorldWideWeb,WWW)(3)超文本(Hypertext)(4)超媒体(Hypermedia)(5)主页(HomePage)(6)浏览器(Brower)(7)目录服务(DirectoryService)(8)防火墙(Firewall)(9)Internet服务商(InternetServiceProvider,ISP)与Internet相关的常用术语
1.2Web浏览器与Web服务器1.2.1Web浏览器网页浏览器主要通过HTTP连接网页伺服器而取得网页,HTTP容许网页浏览器送交资料到网页伺服器并且获取网页。目前最常用的HTTP是HTTP/1.1,这个协议在RFC2616中被完整定义。HTTP/1.1有自己一套InternetExplorer并不完全支持的标准,然而许多其他网页浏览器则完全支持这些标准。1.2.2Web服务器Web服务器和Web浏览器的关系图1.3Web编程概述Web是一种典型的分布式应用框架。Web应用中的每一次信息交换都要涉及客户端和服务端两个层面。因此,Web编程技术大体上也可以分为客户端技术和服务端技术两大类。1.3.1Web的工作原理Web的信息源保存在Web站点中,用户通过Web浏览器来访问。因此,Web是一种基于客户机/服务器(Client/Server,C/S)的体系结构。用户使用浏览器从网上查阅Web信息,把需要的信息从网上下载到本机。信息分布点和用户需求信息的不同,表现在Web上是链接地址的不断变化。浏览器的主要功能是解释并显示由Web服务器传送来的、由HTML写成的文档,包括嵌入HTML文档中的GIF和JPEG格式的图像。此外,浏览器还可以根据用户的需要配置某些辅助应用程序,用来处理嵌入HTML文档中的声音、视频等外部多媒体信息。通常将Web浏览器中显示的HTML文本称为Web页面(Page)。1.静态Web页面的工作原理2.动态Web页面的工作原理客户端动态Web页面的工作原理图服务器端动态Web页面的工作原理1.3.2动态Web开发技术概述1.提供动态内容的客户端技术每一项提供动态内容的客户端技术都依赖于内置在浏览器中的模块(即插件)来处理指令。客户端技术是脚本语言、控件以及功能完善的编程语言的综合。(1)JavaScript(2)VBScript(3)Java小应用程序(4)Flash2.提供动态内容的服务器端技术(1)CGI(2)ASP(3)JSP(4)PHP(5)ASP.NET1.4ASP.NET4.0开发环境1.4.1VisualStudio2010简介VisualStudio是Microsoft出品的开发工具,对于.NET的开发,先后有VisualStudio2002/2003/2005/2008,分别用来开发.NET1.0、2.0和3.5,VisualStudio2010是目前最新的版本。VisualStudio2010支持的最高级.NETframework是.NETFramework4.0,同时还支持.NETFramework1.X、.NETFramework2.0和.NETFramework3.5。1.4.2下载与安装VisualStudio20101.下载VisualStudio2010可以到官方网站下载VisualStudio2010安装程序MicrosoftVisualStudio2010UltimateBeta2–ISO。下载地址是:/downloads/details.aspx?FamilyID=dc333ac8-596d-41e3-ba6c-84264e761b81&displaylang=en2.系统要求(1)支持的操作系统。WindowsXP(x86)withServicePack3-alleditionsexceptStarterEditionWindowsXP(x64)withServicePack2-alleditionsexceptStarterEditionWindowsVista(x86&x64)withServicePack1-alleditionsexceptStarterEditionWindows7(x86andx64)WindowsServer2003(x86&x64)withServicePack2WindowsServer2003R2(x86andx64)WindowsServer2008(x86andx64)withServicePack2WindowsServer2008R2(x64)(2)硬件环境要求。Computerthathasa1.6GHzorfasterprocessor1024MBRAM3GBofavailableharddiskspace5400RPMharddiskdriveDirectX9-capablevideocardthatrunsat1280x1024orhigherdisplayresolutionDVD-ROMDrive1.4.3VisualStudio2010开发界面1.4.4IIS的安装与配置以在Windows7环境下安装IIS7为例,介绍IIS的安装。默认情况下,Windows7安装时不会自动安装IIS,只能手动安装。具体安装步骤见教材说明第2章HTML和CSS本章主要内容2.1HTML基础2.2XML基础2.3使用CSS布局网页2.1HTML基础HTML是创建Web页面的基本框架语言,它利用标记(tag)来描述网页的字体、大小、颜色及页面布局。自1990年以来HTML就一直被用作WWW上的信息表示语言,用于描述网页的格式设计和它与WWW上其他网页的链接信息。可以说,HTML是整个Web开发技术的基础,ASP.NET网页上的影像、语音、图片和文字,甚至后台程序都是通过HTML连接起来的。2.1.1HTML与XHTML为了方便浏览器的开发,W3C组织为HTML制定了相应的国际标准,目前常用的版本为4.01。但这一标准并不严格,而且由于历史原因,一些老的HTML网页并不规范,例如,在有的网页中起始标签与结束标签并没有严格对应,而且也不区分大小写。由于HTML的老版本并不统一,所以在解析老版本的HTML网页时,各种浏览器的开发者往住自行其是,从而导致同一个网页在不同种类的浏览器(甚至是同一种浏览器的不同版本)中显示效果不一样。为了统一网页的编写规则,在原有HTML规范的基础之上,W3C制定了更为严格的XHTML(eXtensibleHyperTextMarkupLanguage)规范,引入了XML文档的一些特性(如起始标签与结束标签必须严格对应,整个文档只能有一个根节点等)。2.1.2遵循XHTML规范编写网页W3C建议编写新的网页时遵循XHTML规范,简单总结如下。(1)标签名称必须小写。(2)属性名称必须小写,属性值用双引号括起来。(3)标签必须严格嵌套。(4)标签必须严格配对,即使是空元素也要封闭。(5)XHTML区分“内容标签”与“结构标签”。2.1.3HTML标签HTML使用描述性的标记符,即标签,来指明文档的不同内容。起始标签用角括号将特定字符串括起来表示特定的含义,结束标签还需要在特定字符串前面增加一个斜线“/”,其余部分和起始标签相同。一个标准的HTML页面应该包含几个重要的标签,如<html>和</html>标签、<head>和</head>标签、<body>和</body>标签等。HTML的格式没有具体要求,但建议写成缩排格式,以便检查。HTML标签不区分大小写,但在默认情况下,ASP.NET中系统提供的HTML标签都用小写字母表示。HTML标签可以分为两类:单标签和双标签。2.1.4HTML文档的基本结构1.HTML标记:<HTML>...</HTML>2.首部标记:<HEAD>...</HEAD>3.正文标记:<BODY>...</BODY>2.1.5常用的HTML标记<html><head><title>PageTitle</title></head><body>Contentsofpage</body></html>HTML页面的两个主要部分是<head>和<body>。<head>是放置<title>标记和<link>标记(附带各种元数据)的区域。<body>包含要显示的元素。其它常用标记见教材表2-2所示。2.1.6使用HTML设计网页实例1.创建表格表格是网页上常见的元素,在ch2_1网站中添加一个HTML页面,名称为HTMLTable.htm,页面的运行效果如图2-2所示。具体代码实现请见本书代码ch2_1下的HTMLTable.htm文件2.设计表单HTML提供了有限的输入控件,如文本框和按钮等,用于与用户进行交互。具体代码实现请见本书代码ch2_1下的HTMLForm.htm文件该实例中<form>标签有两个属性很重要,分别是method和action属性。(1)method属性。它有两个可选值“get”和“post”,决定了网页发送信息的方式。使用get方式时,网页数据被附加到URL之后提交给服务器,因而其数据大小受到很大的限制,一般只用于少量的不重要信息的提交;而使用post就没有上述限制。所以,默认选项为post。(2)action属性。指定信息要提交的目的地(URL)。在本例中,信息将被提交到register.aspx网页。2.2XML基础XML主要用于表达数据,由于其具有很强的表达能力和高度的灵活性,并且易于扩展,因此得到了广泛的应用。XML不是要替换HTML,可以视作对HTML的补充。HTML回归于“定义文档结构”的本位,信息本身使用XML表达,而CSS则确定了信息的外在表现形式,HTML+XML+CSS构成了当代互联系网技术的基石。2.2.1XML概述可扩展标记语言(eXtensibleMarkupLanguage,XML)是用于标记电子文档,使其具有结构性的标记语言,是W3C组织于1998年2月发布的标准。XML是标准通用标记语言(StandardGeneralizedMarkupLanguage,SGML)的一个子集,是一个精简的SGML.XML保留了SGML的可扩展功能,它不再像HTML那样使用固定的标记,而是允许定义数量不限的标记来描述文档中的资料,允许嵌套的信息结构,它的功能远远超过了HTML。HTML只是Web显示数据的通用方法,而XML提供了一个直接处理Web数据的通用方法。HTML着重描述Web页面的显示格式,而XML着重描述Web页面的内容。2.2.2XML与HTML的关系XML与HTML相比较,存在如下主要的区别。(1)内容与形式分离。(2)良好的可扩展性。2.2.3XML文档的基本结构XML必须满足格式良好的要求,如果对XML进行验证,还需要满足有效性。格式良好的XML应满足以下条件。(1)如果XML有声明,则声明必须放在XML文件首行首列的位置,并且是以下格式。<?xmlversion="1.0"encoding="utf-8"?>(2)一个XML文件只能有一个根节点,以下格式是正确的。<?xmlversion="1.0"?><persion><name>张三</name></persion>如果要处理多条数据,数据要放在根节点中,例如,<?xmlversion="1.0"?><persions><persion><name>张三</name></persion><persion><name>李四</name></persion></persions>(3)标记必须是封闭的,有开始标记,就必须有结束标记,例如,<name>张三</name>而不能写成<name>张三(4)标记严格区分大小写(5)标记之间不能交叉(6)空标记的写法如下。<br/>或者是<br></br>(7)属性不能重复,属性值必须用引号(“””或者“‘”)括起来。(8)标记名称不能有空格,必须以英文字母或者下画线(_)开头,可以由中文、字母、数字、“-”、“_”、和“.”组成。(9)字符“<”和“&”只能用于开始标记和引用实体。具体实例请见代码ch2_2下的人事.xml文件2.2.4XML的特点XML具有以下4个方面的特点:(1)XML是一种通用标准,而不只是属于某个公司。(2)XML中的元素标记自行确定,不受限制,因此有很好的可扩展性。(3)XML文档属于文本文件,语法简单,程序设计者和计算机本身都能理解。(4)XML非常有利于功能的发布。2.3使用CSS布局网页2.3.1CSS概述层叠样式表(CascadingStyleSheet,CSS)是一种定义样式的语言,用于控制网页样式并允许将样式信息与网页内容分离的一种标记性语言。使用CSS样式可以非常灵活并更好地控制网页外观,大大减轻了实现精确布局定位、维护特定字体和样式的工作量。2.3.2CSS与HTML的关系HTML代码定义了一个简单的网页按指定样式显示SimplestPage网页
在这个例子中,HTML网页主体部分的内容没有变化,但显示出来的效果却有很大的不同。由此可知:HTML定义HTML文档的结构,而CSS则决定了浏览器以何种样式显示文档。CSS与HTML这种相互配合的关系体现了“信息结构与表现形式相分离”的基本原则。2.3.3设置样式1.在源视图下设置样式2.在可视化窗口中设置样式3.创建独立的CSS文件:使用CSS的另一个有效方法是将样式规则放入样式表中,然后所有页面都可以引用这些样式,这样可以使这些页面看起来非常一致。
2.3.4样式规则“添加样式规则”对话框1.标记选择符任何HTML元素都可以是一个CSS的标记选择符,标记选择符仅仅是指向特别样式的元素,在“添加样式规则”对话框的“元素”下拉列表中提供了所有可供使用的标记选择符。2.类选择符指定某个标记选择符内的自定义类的一般形式为:标记选择符.类名{样式属性值1:值1;样式属性值2:值2;……}例如:p.one{color:red;}p.two{color:blue;}3.ID选择符ID选择符用于定义每个具体元素的样式。指定一个ID选择符要在名字前添加指示符#。使用时通过指定元素的id属性来关联。例如:#index{color:blue}引用时,使用id属性声明即可。例如:<pid="index">本段落的颜色为蓝色</p>4.伪类伪类是CSS中非常特殊的类,能自动被支持CSS的浏览器所识别。伪类可以指定HTML中的A元素以不同的方式显示链接、已访问过的链接和可激活的链接。其中,一个已访问链接可以定义为以不同颜色显示,甚至以不同字体大小和风格显示。CSS中用4个伪类来定义链接的样式,分别是a:link、a:visited、a:hover和a:active,例如:5.关联选择符关联选择符是一个用空格隔开的由两个或更多的单一标记选择符组成的字符串,一般格式如下。选择符1选择符2……{属性:值;……}这些选择符具有层次关系,并且它们的优先级比单一的标记选择符大。例如:ph1{color:red}2.3.5对HTML网页应用样式1.直接在标签的style属性中进行设置<head>…<styletype="text/css">CSS规则放在这里</style>…</head>2.在HTML页面中直接使用另一种嵌入CSS的方法是直接为指定元素的style属性赋值。例如:<pstyle="CSS代码放在这里">这是内联的CSS样式</p>3.链接外部样式表(.css文件)可以将CSS代码放到一个独立的文件中,然后使用<link>元素将此CSS文件与HTML文档关联起来,这是Web标准推荐使用的方式。在head标签中使用如下代码。<linkhref="CSS文件的URL"rel="stylesheet"type="text/css"/>4.导入外部样式表在head标签中使用(这种方式不要忘了分号;)<styletype="text/css">@import"另一样式表的URL";</style>第3章JavaScript编程基础本章主要内容3.1JavaScript简介3.2JavaScript编程基础3.3浏览器对象模型3.4文档对象模型3.5客户端动态网页编程3.1JavaScript简介3.1.1JavaScript的起源20世纪90年代,上网越来越流行,对开发客户端脚本的需求也逐渐增大。此时,网页已经不断地变得更大和更复杂,而大部分Internet用户还仅仅通过28.8kbit/s的速率连接到网络,更加加剧用户痛苦的是,仅仅为了简单的表单有效性验证,就要与服务器进行多次往返交互。在Microsoft公司进军浏览器市场后,有3种不同的JavaScript版本同时存在:NetscapeNavigator3.0中的JavaScript、IE中的JScript以及CEnvi中的ScriptEase。与其他编程语言不同的是,JavaScript并没有一个标准来统一其语法或特性,而这3种不同的版本恰恰突出了这个问题。3.1.2JavaScript的特点JavaScript是一种脚本语言,采用小程序段的方式进行编程。JavaScript是一种功能强大的语言,它可以和HTML完美地结合在一起。JavaScript是一种基于对象(ObjectBased)和事件驱动(EventDriver)的编程语言。JavaScript用于客户端。3.1.3JavaScript的作用JavaScript可以弥补HTML的缺陷,可以制作出多种网页特效,其主要作用有:(1)增加动态效果(2)读写HTML元素(3)响应事件(4)验证表单数据(5)检查浏览器(6)创建Cookies3.1.4JavaScript的组成JavaScript作为一种网络客户端的脚本语言,由以下3部分组成:(1)ECMAScript(2)文档对象模型(DocumentObjectModel,DOM)(3)浏览器对象模型(BrowserObjectModel,BOM)3.1.5JavaScript程序的编辑和调试JavaScript的编写形式有以下3种:
1.直接把JavaScript嵌入HTML的任何标签中2.使用JavaScript函数时,将函数定义在<head>标签中3.使用单独的.js文件3.2JavaScript编程基础3.2.1JavaScript的变量无论是编程语言还是脚本语言,变量都是最基本的元素,在脚本运行时,往往需要用一个有名称的单元将信息存储起来,这个有名称的单元就是变量。1.变量的声明方式JavaScript中变量的名称区分大小写,使用关键字var来声明变量。JavaScript并没有强制要求变量必须先声明才使用,但是先声明变量再使用是一种良好的编程风格。2.变量类型JavaScript不要求预先确定变量的数据类型,但实际上,每个JavaScript变量都对应一个数据类型的值,例如,如果box=3,那就认为box变量是数值类型的变量。JavaScript是一种弱类型语言,弱类型语言中变量赋值的数据类型是可以发生变化的。ECMAScript中定义了5种原始类型(primitivetype):undefined、null、boolean、number和string。(1)undefined类型:声明的变量未初始化时,该变量的初始值是undefined。(2)null类型:用于尚未存在的对象,值undefined实际是从值null派生的。(3)boolean类型:只有两个值true和false。(4)number类型:任何数字都被看做是number类型的字面量(5)string类型:字符串类型。3.typeof运算符使用typeof可以得到一个变量或值的类型。例如:varsTemp="teststring";alert(typeofsTemp);//输出"string"alert(typeof86);//输出"number"4.类型转换(1)转换成字符串(2)转换成数字(3)强制类型转换3.2.2数组1.数组的定义JavaScript中的数组是内部类型Array的对象,因此,可以使用如下方式创建数组。varmyArray=newArray();//创建一个长度为0的数组varmyArray=newArray(n);//创建一个拥有n个元素的数组,每个元素为undefined类型varmyArray=newArray(1,2,"abc");//创建一个长度为3的数组,并赋初值同时,也支持使用括号来定义数组,例如:varmyArray=[];//创建一个长度为0的数组varmyArray=[1,2,"abc"];//创建一个长度为3的数组2.数组元素的访问数组元素按索引进行访问,索引号从0开始记。例如:myArray[2]=4;//将4赋值给myArray数组的第3个元素vari=myArray[2];//将myArray数组的第3个元素的值赋给变量i3.动态数组JavaScript数组的长度不是固定不变的,若要增加数组的长度,直接赋值即可。例如:varmyArray=newArray(1,2,3);myArray[3]=4;这时myArray的长度为4,如果varmyArray=newArray(1,2,3);myArray[4]=4;则长度为5,其中myArra[3]的值为undefined。4.数组的常用属性和方法length属性:获取数组长度。concat方法:连接两个或更多的数组,并返回结果。也可以直接连接数值,例如:a.concat(4,5,6);join方法:连接数组,缺省的连接符号为“,”。push方法:在数组的结尾添加一个或多个项,同时更改数组的长度。pop方法:删除最后一个数组项,将其作为函数值返回。shift方法:删除数组中的第一个项,将其作为函数值返回。unshift方法:添加元素至数组开始处。slice方法:返回数组的片断(或者说子数组)。splice方法:从数组中替换或删除元素。sort方法:数组排序。sort方法可以指定比较函数,根据比较函数进行排序。reverse方法:将数组倒序。3.2.3string类型字符串(string)类型在JavaScript中用得很多,这里简单介绍其主要属性和方法。字符串由多个字符组成,使用双引号或单引号可定义一个字符串常量,并可赋给一个字符串类型的变量,利用length属性可获取字符串的长度。3.2.4JavaScript的函数1.函数的定义2.arguments对象3.函数是对象3.2.5JavaScript对象化编程创建对象最简单的方法是使用“属性名:值”格式项的集合,属性名要求是一个JavaScript的有效标识符或者是一个字符串,属性值可以是一个常量、一个表达式或一个函数,项之间使用逗号分隔,例如:varpose={x:0,y:0,theta:0};2.添加、删除对象的属性JavaScript中的对象在定义好后还可以添加或删除其属性,例如:varpose={x:0};pose.y=0;pose.theta=0;上述代码中的第一句还可以改写成为:varpose={};//或者为varpose=newObject();pose.x=0;使用delete关键字可以删除一个对象的属性,属性删除之后自然就不能再访问了。例如,下面的代码完成对pose对象theta属性的删除。deletepose.theta;3.添加对象的方法如果对象的属性保存的是一个函数,则此函数称为对象的方法,例如,下面的代码给pose对象添加了一个showInfo()方法,然后调用它。varpose={x:0,y:0,theta:0};//添加对象的方法pose.showInfo=function(){return"x="+pose.x+",y="+pose.y+",theta="+pose.theta;}//调用对象的方法alert(pose.showInfo());4.构造函数在默认情况下JavaScript不会为对象创建构造函数,这样前面例子中定义的pose对象就无法通过“newpose()”表达式直接创建,而只能先创建一个Object对象,然后再向这个已创建的对象添加需要的属性和方法,这样就不能体现出类型的特点。给对象定义相应的构造函数就可以解决这个问题。5.prototype属性//定义student类的代码略//创建两个对象varst1=newstudent("张三","男",59);varst2=newstudent("李四","女",38);//给st1添加一个方法showInfo1st1.showInfo1=function(str){alert(str);}//调用两个对象都有的showInfo方法st1.showInfo();st2.showInfo();//调用新添加的方法st1.showInfo1("调用st1的showInfo1方法");st2.showInfo1("调用st2的showInfo1方法");//该行运行会报错:对象不支持此属性或方法3.2.6事件驱动及事件处理JavaScript是基于对象的语言,基于对象的基本特征就是采用事件驱动机制,这里的事件包括鼠标或键盘的动作。所谓事件驱动,是指由鼠标或键盘的动作引发的一连串程序的动作;浏览器为了响应某个事件而进行的处理过程称为事件处理。浏览器在程序运行的大部分时间里都在等待交互时间的发生,并在事件发生时,自动调用事件处理程序完成事件处理过程。用JavaScript处理事件JavaScript语言与HTML文档相关联主要是通过“事件”,JavaScript的函数就是用于处理事件的程序,事件的语法规则如下。事件=“函数名”或事件=“JavaScript语句”例如:<inputtype="button"value="[测试]"onclick="alert('helloworld');"/>也可以定义好函数后再调用,例如:functionmessage(){alert('helloworld');}<inputtype="button"value="[测试]"onclick="message();”/>3.3浏览器对象模型3.3.1体系结构
浏览器对象模型3.3.2window对象在客户端JavaScript中,Window对象是全局对象,所有的表达式都在当前的环境中计算。也就是说,要引用当前窗口根本不需要特殊的语法,可以把那个窗口的属性作为全局变量来使用。例如,可以只写document,而不必写window.document。同样,可以把当前窗口对象的方法当作函数来使用,如只写alert(),而不必写window.alert()。要引用窗口中的一个框架,可以使用如下语法。frame[i] //当前窗口的框架self.frame[i] //当前窗口的框架w.frame[i] //窗口w的框架要引用一个框架的父窗口(或父框架),可以使用下面的语法。parent //当前窗口的父窗口self.parent //当前窗口的父窗口w.parent //窗口w的父窗口要从顶层窗口含有的任何一个框架中引用它,可以使用如下语法。top //当前框架的顶层窗口self.top //当前框架的顶层窗口f.top //框架f的顶层窗口使用window对象完成的常用功能1.导航和打开新窗口2.关闭窗口3.系统对话框4.时间间隔和暂停3.3.3Document对象Document对象比较独特,它既属于BOM,又属于DOM。每个载入浏览器的HTML文档都会成为Document对象,Document对象使用户可以从脚本中访问HTML页面中的所有元素。Document对象是Window对象的一部分,可通过window.document属性对其进行访问。Document对象实例例如:<body><imgsrc="logo.gif"name="imgHome"/><formmethod="post"action="1.htm"name="data"><inputtype="text"name="txtEmail"/><inputtype="submit"value="提交"/></form></body>访问body中img图像的代码如下。document.images[“imgHome”];访问表单中输入框的代码如下。document.forms[“data”].txtEmail;2.Document对象的方法Document对象的常用方法有write、writeln、clear、open和close等。write将字符串写到一个新文档中;writeln将字符串写到一个新文档,并在字符串末尾加上换行符;clear清除文档当前内容;open和close打开一个新文档并关闭当前文档。Document对象的方法实例动态引入.js文件的功能。在该例中将</script>进行了拆分,这是因为浏览器一遇到</script>,就会假定其中的代码是完整的(即使它出现在字符串中),这样就会忽略后面的代码。<scripttype="text/javascript">document.write("<scripttype='text/javascript'src='1.js'>"+"</scr"+"ipt>");</script>3.3.4Location对象Location对象提供当前页面的URL信息,它有一组属性,用于存储URL的各个组成部分。它的方法可以重载当前页面或载入新页面。例如,有如下的URL。http://www.zjl.xom:80/book/1.html#section11.Location对象的属性属性说明在上例中的应用情况hash如果页面中有页面内跳转的锚标,则hash属性返回href中#号后面的字符串用location.hash可以获得锚标为#section1(接下来只列出属性值)host提供URL页面所在的Web服务器主机名称和端口号:80hostname提供URL的主机名称部分href提供整个URL:/book/1.html#section1pathname提供文档在主机上的路径及文件名book/1.htmlport返回URL中的端口部分80protocol协议名称HTTPsearch提供完整URL中“?”后面的查询字符串2.Location对象的方法Location对象的方法有reload、replace和assign。reload方法用来刷新当前页面,相当于工具栏上的刷新按钮。例如,定义一个刷新页面的按钮,格式如下。<inputtype="button"value="刷新"onclick="location.reload()">。3.3.5History对象History对象存储最近访问过的URL地址。它有一个length属性,用于记录该对象存储的URL地址的个数,其方法有back、forward、go、home等。例如:window.history.go(-1);//后退一页window.history.go(-2);//后退两页window.history.go(2);//前进两页3.3.6Navigator对象Navigator对象保存浏览器厂家、版本和功能信息。Navigator的常用属性有:appCodeName属性,提供当前浏览器的代码名;appName属性,提供当前浏览器的名称;appVersion属性,提供当前浏览器的版本号;userAgent属性,反应浏览器完整的用户代理标识。navigator还有一个JavaEnabled()方法,用于指出在浏览器中是否可以使用Java语言,该方法的返回值是一个布尔值。3.4文档对象模型文档对象模型(DocumentObjectModel,DOM)是基于浏览器编程的一套API接口,是W3C制定的标准。这个规范允许访问和操作HTML页面中的每一个单独的元素。DOM被分为不同的部分(核心、XML及HTML)和级别(DOMLevel1/2/3),这里主要介绍HTML文档对象模型。3.4.1HTML文档对象模型节点树根据DOM,HTML文档中的每个成分都是一个节点,DOM按如下规则定义节点。(1)整个文档是一个文档节点。(2)每个HTML标签是一个元素节点。(3)包含在HTML元素中的文本是文本节点。(4)每一个HTML属性是一个属性节点。(5)注释属于注释节点。3.4.2访问指定节点1.访问指定标签名称的元素2.访问指定name属性的元素3.访问指定id属性的元素4.通过标准属性访问特定元素3.4.3处理元素属性1.通用属性(1)nodeName:对应节点的名称。(2)nodeValue:对应节点的值。(3)nodeType:对应节点的类型。2.获取元素的属性获取元素的某个属性可使用getAttribute()方法。例如:varoImgs=document.getElementById("img1");alert(oImgs.getAttribute("src"));3.设置元素的属性设置元素的某个属性可使用setAttribute()方法。例如:varoImgs=document.getElementById("img1");oImgs.setAttribute("src","test.gif");//设置图片对象的src属性为test.gif4.移除元素的属性移除元素的某个属性可使用removeAttribute()方法。例如,文档中有:<inputtype="hidden"value="abc@163.com"id="email"/>现在想移除email中的value属性,可用如下语句。variHid=document.getElementById("email");iHid.removeAttribute("value",1);//1表示忽略大小写3.5客户端动态网页编程3.5.1动态修改文档内容动态修改文档内容,最常见的使用document.write()动态地向网页中添加HTML代码的方法。1.使用innerHTML属性2.使用outerHTML属性3.5.2样式表编程1.使用style对象CSS样式特性JavaScript样式属性background-colorstyle.backgroundColorcolorstyle.colorfont-familystyle.fontFamilystyle属性与CSS样式的对应关系表2.使用className属性可以通过HTML元素的className属性设定具体的CSS样式类。例如,样式表中定义了以下样式类。.divcssclass{height:100px;width:200px;background-color:red;}第3章C#语言基础本章主要内容创建一个简单的C#程序C#数据类型变量与常量流程控制运算符字符串处理类和结构使用集合编程创建一个简单的C#程序首先启动VisualStudio2010,执行“文件”→“新建项目”命令,打开“新建项目”对话框。代码实例usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespacechapter31{classProgram{staticvoidMain(string[]args){Console.WriteLine("HelloWorld!");}}}4.2C#数据类型4.2.1值类型值类型包括所有简单数据类型、结构类型和枚举类型。在C#函数中声明一个值类型变量,或在C#类中定义某个字段,编译器并不会对这些变量进行初始化。而C#作为一种类型安全的语言,要求用户必须初始化变量才能使用。简单数据类型结构类型结构类型是一种可包含构造函数、常数、字段、方法、属性、索引器、运算符、事件和嵌套类型的值类型。结构类型的声明格式如下。
[attributes][modifiers]structidentifier[:interfaces]body[;]publicstructPerson{publicstringname;publicstringphone;publicstringaddress;publicuintage;}例枚举类型枚举类型为一组指定常量的集合。每种枚举类型均有一种基础类型,该基础类型可以是除char类型以外的任何整型。枚举类型的声明格式如下。[attributes][modifiers]enumidentifier[:base-type]{enumerator-list}[;]例:publicenumDay{Sat,Sun,Mon,Tue,Wed,Thu,Fri};publicenumMonth{January=1,February,March,April};4.2.2引用类型和值类型相比,引用类型不存储它们所代表的实际数据,但它们存储实际数据的引用。在C#中,引用类型包括对象类型、委托、类类型、字符串类型、接口、数组等。对象类型对象类型(Object)在.NET框架中是System.Object的别名,它是其他类型的基类,可将任何类型的值赋予对象类型的变量。以下是将整型值赋予对象类型的一个例子。objectobjValue=12;委托委托(delegate)声明定义了一种引用类型,该类型可用于将方法用特定的签名封装。委托的声明格式如下。修饰符delegate返回类型代理名(参数列表)代理的声明与方法的声明有些类似,这是因为代理就是为了进行方法的引用,但代理是一种类型。例如:publicdelegatedoubleMyDelelgate(doublex);上面代码声明一个代理类型,接着下面声明该代理类型的变量。MyDelegated;对代理进行实例化的方法如下。new代理类型名(方法名);类类型类(class)类型可以包含数据成员、函数成员和嵌套类型。数据成员为常量、字段和事件。函数成员包括方法、属性、索引、操作符、构造函数和析构函数。类和结构的功能非常相似,但结构是值类型,而类是引用类型。在C#中仅允许单继承,但一个类可以派生多重接口。类的声明格式如下。[attributes][modifiers]classidentifier[:base-list]{class-body}[;]类定义实例classPhoneBook{privatestringname;privatestringphone;privatestructaddress{publicstringcity;publicstringstreet;publicunitnumber;}publicstringPhone{get{returnphone;}set{Phone=value;}}publicPhoneBook(stringn){name=n;}}字符串类型字符串类是C#中定义的一个专门用于对字符串进行操作的类。它是System.string类在命名空间System中的别名。尽管string是引用类型,但相等和不相等运算(==和!=)被定义比较string对象的值,这使得比较字符相等性变得更为直观,如下面代码所示。stringa="hello";stringb="h";b+="ello"; //b此时为helloa==b; //值相等(object)a==b; //值不等接口一个接口(interface)定义一个只有抽象成员的引用类型。该类型不能实例化对象,但可以从它派生出类。接口的声明格式如下。[attributes][modifiers]interfaceidentifier[:base-list]{interface-body}[;]以下是一个简单的接口定义例子。publicinterfaceMyIface{voidShowFace();}数组一个数组包含有通过计算下标访问的变量。同一个数组中的各个元素变量必须是同一类型。数组可以存储整数对象、字符串对象或任何一种用户提出的对象。数组可以有多个维度。常用的一维数组即数组的维数为1,二维数组的维数为2。每个数组的下标始于0。以下是数组定义一个简单例子。string[]mayArray={"sun","bin","zhou"};//一维数组int[,]numArray={{0,1},{2,3},{4,5}};//二维数组4.2.3装箱与拆箱装箱转换是指将一个值类型隐式地转换成一个object类型。把一个值类型的值装箱;也就是创建一个object实例,并将这个值复制给这个object。
4.2.3装箱与拆箱(2)和装箱转换正好相反,拆箱转换是指将一个对象类型显式地转换成一个值类型。4.3变量与常量4.3.1变量
变量就是程序的运行过程中其值可以改变的量。
C#中变量名的命名规则如下。(1)必须以字母开头。(2)只能以字母、数字、下划线组成,不能包含空格、标点、运算符等特殊符号。(3)不能与C#中的关键字同名。(4)不能与C#中的库函数同名(5)可以以@开始。在C#中,定义了7种变量类型:静态变量、实例变量、数组变量、值参数、引用参数、输出参数和局部变量。在static修饰符声明的字段被称为静态变量。如staticdoublemyStatic=10.0。所有没有static修饰的变量都是实例变量,它们属于类的实例。未用ref或out修饰符声明的参数是值参数。用ref修饰符声明的参数是引用参数。用out参数修饰符声明的参数是输出参数。局部变量是在某一个独立的程序块中声明的,作用域仅仅局限于程序块。4.3.2常量常量,就是在程序的运行过程中值不能被改变的量。常量的类型可以是任何一种C#的数据类型。常量的声明格式如下。访问修饰符const常量数据类型常量名=常量值;例:publicconstdoublepi=3.1415;4.4流程控制4.4.1分支语句C#主要有两个分支结构,一个是负责实现双分支的if语句,另一个是负责实现分支的开关语句switch。4.4.2循环结构循环结构是在一定条件下,反复执行某个程序块的流程结构,被反复执行的程序块被称为循环体。在C#中循环语句主要有4种:for语句、while语句、do-while语句和foreach语句。foreach循环foreach循环是C#语言提供的一种新的循环语法结构。该语句提供一种简单的方法来循环访问数组或集合中的元素。其语法基本格式如下。foreach(数据类型in表达式){循环体;}foreach的简单应用实例如下。int[]values{1,2,3,4,5}foreach(intiinvalues)Response.Write(i);4.5运算符表达式由操作数和运算符组成。运算符揭示了应用在操作数上的运算。运算符按操作数的数目来分为一元运算符(如++),二元运算符(如+)和三元运算符(如?:)。一元运算符有前缀表达法和后缀表达法之分。前缀表达法是指操作符出现在操作数的前面,其用法如下。操作符操作数//前缀表示法。后缀表达法是指操作符出现在操作数的后面,其用法如下。操作数操作符//后缀表示法。所有的二元运算符都要采用中缀表达式,其用法如下。操作数1操作符操作数2//二元的中缀表达式。按照功能来分,可将运算符分为以下几类:按照功能来分,可将运算符分为以下几类:(1)赋值运算符(=,及其扩展赋值运算符如+=);(2)算术运算符(+,?,*,/,%,++,??);(3)关系运算符(>,<,>=,<=,==,!=);(4)布尔逻辑运算符(!,&&,||);(5)条件运算符(?:);(6)其他,包括移位操作符“>>,<<”;成员访问操作符“.”;下标运算符“[]”;类型信息运算符“as,is,sizeof,typeof”;创建对象运算符“new”;强制类型转换运算符;方法调用运算符“()”等。4.5.1算术运算符算术运算符作用于整形或浮点型数据的运算。
一元算术运算符简写操作符(op:操作数)
4.5.1算术运算符(2)二元算术操作符(op1:操作数1;op2:操作数2)4.5.2赋值运算符基本表达式赋值操作符“=”用于将一个值赋给另一个。以下是几个简单的例子。inti=5;charaChar='S';booleanaBoolean=false;4.5.3关系运算符
关系运算符用来比较两个值,它返回布尔类型的值true或false。
关系运算符(op1:操作数1;op2:操作数2)
4.5.4逻辑运算符布尔逻辑运算符用于进行布尔逻辑运算。布尔逻辑运算符(op1:操作数1;op2:操作数2)4.5.5条件运算符C#语言只有一个三元操作符(“?:”),它是if-else语句的简写,一般形式如下。表达式?语句1:语句2如果表达式的值为真,则执行语句1;若为假,则执行语句2。例如,classexample{publicstaticvoidMain(){intmark=95;booleanisExcellent;Console.WriteLine(isExcellent=(mark>=90)?true:false);//如果成绩大于或等于90就是优秀}}4.5.6位运算符在计算机中,所有的信息都是以二进制形式存储的,因此C#中提供了专门针对二进制数据操作的运算符。位运算符包括以下6种。(1)&(与):按二进制进行与操作。(2)|(或):按二进制进行或操作。(3)^(异或):按二进制进行异或操作。(4)~(取补):按二进制进行取补运算。(5)<<(左移):按二进制进行左移操作,高位被丢弃。(6)>>(右移):按二进制进行右移操作,低位被丢弃。4.5.7运算符的优先级4.6字符串处理4.6.1使用string和StringBuilderstring字符串是Unicode字符的有序集合,用于表示文本。string对象是System.Char对象的有序集合,用于表示字符串。StringBuilder表示值为可变字符序列的类似字符串的对象,之所以说值是可变的,是因为在通过追加、移除、替换或插入字符而创建它后,可以对它进行修改。Stringbuilder性能要优于string,内存使用要少于string。4.6.2格式化字符串字符串的格式化是指通过指定的格式,将指定的值替换成标准的格式。字符串的格式化包括字符串类型格式化、数字类型格式化、日期类型格式化等。字符串类型本身的格式化是通过string.Format方法来实现的。
4.6.3对字符串进行编码由于各个国家和地区的文化与字符的差异很大,所以在C#中提供了对字符串进行编码的操作,其目的就是满足对字符串随着不同地域进行不同的结果处理。编码是一个将一组Unicode字符转换为一个字节序列的过程;解码是一个反向操作过程,即将一个编码字节序列转换为一组Unicode字符。Unicode标准为所有支持脚本中的每个字符分配一个码位。Unicode转换格式(UTF)是一种位编码方式。4.7类和结构4.7.1定义类和结构类是一种数据结构,它可以包含数据成员、函数成员(方法、属性、事件、索引器、运算符、实例构造函数、静态构造函数和析构函数)以及嵌套类型。类的声明实例publicclassCustomer{privateintx=10,y=15;publicintride(){returnx*y;}}classmainclass{staticvoidMain(){Customers=newCustomer();System.Console.WriteLine(s.ride());}}结构的定义结构是使用struct关键字定义的,struct类型是一种值类型,通常用来封装小型相关变量组,如矩形的坐标或库存商品的特征。下面是结构的声明语法。publicstructPostalAddress{}结构与类共享几乎所有相同的语法,结构适于表示Point、Color等轻量对象。尽管这些也可以表示为类,但在某些情况下,使用结构更有效。结构的定义与使用实例publicstructCoOrds{publicintx,y;publicCoOrds(intp1,intp2){x=p1;y=p2;}}classTestCoOrds{staticvoidMain(){CoOrdscoords1=newCoOrds();CoOrdscoords2=newCoOrds(10,10);System.Console.Write("CoOrds1:");System.Console.WriteLine("x={0},y={1}",coords1.x,coords1.y);System.Console.Write("CoOrds2:");System.Console.WriteLine("x={0},y={1}",coords2.x,coords2.y);}}4.7.2定义属性属性是类中字段和方法的结合体,通过属性的定义,调用该类的时候,可以直接对该类的属性进行读写的操作。属性的定义通过get和set关键字来实现,get关键字用来定义读取该属性时候的操作,而set关键字用来定义设置该关键字的操作。4.7.3定义索引器索引是为了对类、接口和结构进行类似数组的索引,如对类中定义的某一位置的值进行赋值或者读取的操作,都可以通过索引器的定义来实现。在类与接口中声明的索引器需要使用this关键字。如以下代码所示。classA{publicvirtualintthis[intindex]{get{returnindex;}}}4.7.4重载方法
方法的重载是指定义多个相同名称的方法,根据各个方法的参数不同,在调用的时候进行区分。
C#有一个经典的重载函数Console.WriteLine,WriteLine方法被重载许多次,以至于可以给它传递任何原始类型的参数。classConsole{publicstaticvoidWriteLine(intparameter);publicstaticvoidWriteLine(doubleparameter);publicstaticvoidWriteLine(decimalparameter);}4.7.5使用Ref和Out类型参数Ref和Out关键字都是用来修饰方法中参数类型的修饰符。Ref关键字使参数按引用传递,其效果是,当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。若要使用Ref参数,则方法定义和调用方法都必须显式使用Ref关键字。Out关键字会导致参数通过引用来传递。这与Ref关键字类似,不同之处在于Ref要求变量必须在传递之前进行初始化。4.7.6定义接口和抽象类
接口可以包含方法、属性、事件和索引器。接口本身不提供它所定义的成员的实现。接口只指定实现该接口的类或结构必须提供的成员。一个类可以继承于多个接口,但这些继承的子类必须实现每个接口中定义的方法。usingSystem;namespaceLeoWeb{publicinterfaceIGirl//接口{intAge{set;get;}voidMeeting(intboyId);stringToString();}抽象类C#引入了抽象类,抽象方法是一种没有定义主体的方法。从表示法看,这类方法是在抽象类内部声明的,如下所示。abstractmethodheader;抽象方法声明用于推迟方法的实现决策。至少有一个抽象方法的类称为抽象类,它还需要以关键字abstract开始。在类型层次结构中,将基类作为抽象类是非常有用的。这个基类有其派生类基本的、通用的属性,但自身不能用于声明对象。相反,它用于声明引用,以便访问从该抽象类派生出来的子类型对象。4.8使用集合编程集合是C#编程中一个重要的数据组成形式,通过集合可以将数据存储于其中,并通过各个集合提供的特性,对数据进行索引、取值、排序等操作。C#集合包括枚举、数组、ArrayList、哈希表、字典、堆栈和队。4.8.1使用枚举枚举是值类型的一种特殊形式,它从System.Enum继承而来,并为基础类型的值提供替代名称。枚举类型由名称、基础类型和一组字段组成。枚举是一种事先定义好的集合类型,可以通过枚举来实现常用变量与值的一种映射关系。4.8.2使用数组数组是一种指定类型的数据集合,每个数组有固定的大小,并且其中的数组元素的类型必须保持一致。数组的定义语法如下。数组类型[]数组名称例如,如下面代码定义了一个长度为10的整型数组。int[]arr=newint[10];数组可以存储整数对象、字符串对象或任何一种用户提出的对象。4.8.3使用ArrayListArrayList可以理解为一种特殊的数组,但由于数组本身需要固定长度,所以数组往往不是很灵活。ArrayList则可以动态增加或者减少内部集合所存储的数据对象个数。ArrayList的默认初始容量为0,容量会根据需要通过重新分配自动增加。使用整数索引可以访问此ArrayList集合中的元素,集合中的索引从零开始。ArrayList与数组的最大不同在于,声明ArrayList对象的时候,可以不需要指定集合的长度,而在后续使用中动态进行添加。4.8.4使用哈希表哈希表是表示键值对的数据数据集合,这些键值对根据键的哈希代码进行组合。哈希表中的每个元素都是存储在DictionaryEntry对象之中。4.8.5使用字典字典表示的也是键值对的数据集合,可以通过字典的泛型类来定义一个复杂的集合对象,从而具体指定字典中存储的数据键类型以及值类型。4.8.6使用堆栈堆栈是一种后进先出类型的数据集合对象。后进先出是指先存储到集合中的数据会被保存到堆栈的底层,由于堆栈的数据是从顶部先取,所以在数据从堆栈取出的时候,最先保存的数据会被最后才提取出来。4.8.7使用队列队列与堆栈不同,它表示的是一种先进先出的数据集合对象,即先进入队列的数据将会被首先取出来。与堆栈输出结果相反,先进队列的先输出,后进队列的后输出。4.9小结本章中通过实例的形式介绍了C#的基本内容,包括类型、语句和运算符、类、结构、集合等特性。这些语法作为使用C#语言的基础知识,在C#语言编程中扮演着非常重要的角色,是学习ASP.NET编程的基础。第5章ASP.NET2.0内置对象本章主要内容Response对象Request对象Application对象Session对象Cookie对象Server对象Cache对象5.1Response对象Response对象提供对当前页的输出流的访问,Response对象可以动态地响应客户端的请求,并将动态生成的响应结果返回给客户端浏览器。Response对象可以向客户端浏览器发送信息,或者将访问者转移到另一个网址,传递页面的参数,还可以输出和控制Cookie信息等。Response对象常用属性、方法介绍见教材。代码示例
在按钮的Onclick事件中使用Write方法将时间输出到客户端浏览器。代码如下。protectedvoidButton1_Click(objectsender,EventArgse){//用write输出当前时间Response.Write("<br>");Response.Write("当前时间是:"+DateTime.Now.ToString());Response.Write("<br>");for(inti=0;i<100;i++){Response.Write(i.ToString());//当i=10时,停止输出数据if(i==10)Response.End();}}代码示例运行界面
Response对象Write方法示例5.2Request对象Request对象是HttpRequest类的一个实例。当客户端从网站请求Web页时,Web服务器就接收一个客户端HTTP请求,客户端的请求信息会包装在Request对象中,这些请求信息包括请求报头(Header)、客户端的主机信息,客户端浏览器信息,请求方法(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 校园安全教育:构建和谐校园小学主题班会课件
- 关于取消年度合作计划的通知函5篇
- 爱自己爱他人:身心健康教育小学主题班会课件
- 爱国情怀教育:了解国家的历史和文化小学主题班会课件
- 五星级酒店服务流程规范及标准指南
- 2026年制药行业辩论赛题库(全套题目+正反方标准答案|可直接上场)
- 2026年秦皇岛市海港区事业单位人员招聘考试参考题库及答案详解
- 远离交通隐患共创安全出行小学二年级主题班会课件
- 儿童呼吸系统疾病的康复指导
- 2026年天津市汉沽区事业单位人员招聘考试参考试题及答案详解
- 医保临床路径管理制度
- 公共组织绩效评估-形考任务一(占10%)-国开(ZJ)-参考资料
- 邮政业务与管理
- 洗煤厂安全事故案例分析
- 《双减背景下小学数学教学中学生自主学习能力培养的研究》的开题报告
- 电子元器件选型与使用指南
- GB/T 4706.97-2024家用和类似用途电器的安全第97部分:电击动物设备的特殊要求
- 人参课件完整版本
- 【期末复习总结】基础分子生物学
- 2023全新餐饮居间合同完整版
- 温泉度假村智能化系统顶层设计方案
评论
0/150
提交评论