JSP程序设计教程(第2章).ppt
JSP程序设计教程,第2章 JSP开发基础,JavaScript JavaScript 是属于网络的脚本语言!JavaScript 是因特网上最流行的脚本语言。JavaScript 很容易使用!你一定会喜欢它的!开始学习 JavaScript!,什么是 JavaScript?,JavaScript 被设计用来向 HTML 页面添加交互行为。JavaScript 是一种脚本语言(脚本语言是一种轻量级的编程语言)。JavaScript 由数行可执行计算机代码组成。JavaScript 通常被直接嵌入 HTML 页面。JavaScript 是一种解释性语言(就是说,代码执行不进行预编译)。所有的人无需购买许可证均可使用 JavaScript。,什么是 JavaScript?,JavaScript是一种基于对象和事件驱动并具有安全性能的解释型脚本语言,在Web应用中得到了非常广泛的应用。它不但可以用于编写客户端的脚本程序,由Web浏览器解释执行,而且还可以编写在服务器端执行的脚本程序,在服务器端处理用户提交的信息并动态地向浏览器返回处理结果,通常在JSP中应用JavaScript编写客户端脚本程序。,什么是 JavaScript?,JavaScript与操作系统无关,它依赖JavaScript的解释引擎。浏览器通过内嵌JavaScript的解释引擎从而获得了对JavaScript的处理能力。,Java 和 JavaScript 是相同的吗?,不同!在概念和设计方面,Java 和 JavaScript 是两种完全不同的语言。Java(由太阳微系统公司开发)很强大,同时也是更复杂的编程语言,就像同级别的 C 和 C+。,JavaScript 能做什么?,JavaScript 为 HTML 设计师提供了一种编程工具 HTML 创作者往往都不是程序员,但是 JavaScript 却是一种只拥有极其简单的语法的脚本语言!几乎每个人都有能力将短小的代码片断放入他们的 HTML 页面当中。JavaScript 可以将动态的文本放入 HTML 页面 类似于这样的一段 JavaScript 声明可以将一段可变的文本放入 HTML 页面:document.write(+name+)JavaScript 可以对事件作出响应 可以将 JavaScript 设置为当某事件发生时才会被执行,例如页面载入完成或者当用户点击某个 HTML 元素时。JavaScript 可以读写 HTML 元素 JavaScript 可以读取及改变 HTML 元素的内容。JavaScript 可被用来验证数据 在数据被提交到服务器之前,JavaScript 可被用来验证这些数据。JavaScript 可被用来检测访问者的浏览器 JavaScript 可被用来检测访问者的浏览器,并根据所检测到的浏览器,为这个浏览器载入相应的页面。JavaScript 可被用来创建 cookies JavaScript 可被用来存储和取回位于访问者的计算机中的信息。,如何实现 JavaScript,HTML 的 标签用于把 JavaScript 插入 HTML 页面当中。如何把 JavaScript 放入 HTML 页面 document.write(Hello World!);上面的代码会在 HTML 页面中产生这样的输出:Hello World!,实例解释:如果需要把一段 JavaScript 插入 HTML 页面,我们需要使用 标签(同时使用 type 属性来定义脚本语言)。这样,和 就可以告诉浏览器 JavaScript 从何处开始,到何处结束。,document.write 字段是标准的 JavaScript 命令,用来向页面写入输出。把 document.write 命令输入到 与之间后,浏览器就会把它当作一条 JavaScript 命令来执行。这样浏览器就会向页面写入 Hello World!。,注意:,如果我们不使用 标签,浏览器就会把 document.write(Hello World!)当作纯文本来处理,也就是说会把这条命令本身写到页面上。,把 JavaScript 放置到何处,当页面载入时,会执行位于 body 部分的 JavaScript。当被调用时,位于 head 部分的 JavaScript 才会被执行。,在哪里放置 JavaScript,页面中的脚本会在页面载入浏览器后立即执行。我们并不总希望这样。有时,我们希望当页面载入时执行脚本,而另外的时候,我们则希望当用户触发事件时才执行脚本。,位于 head 部分的脚本:,当脚本被调用时,或者当事件被触发时,脚本就会被执行。当你把脚本放置到 head 部分后,就可以确保在需要使用脚本之前,它已经被载入了。.,位于 body 部分的脚本:,在页面载入时脚本就会被执行。当你把脚本放置于 body 部分后,它就会生成页面的内容。.,在 body 和 head 部分的脚本:,你可以在文档中放置任何数量的脚本,因此你既可以把脚本放置到 body,又可以放置到 head 部分。.,使用外部 JavaScript,有时,你也许希望在若干个页面中运行 JavaScript,同时不在每个页面中写相同的脚本。为了达到这个目的,你可以将 JavaScript 写入一个外部文件之中。然后以.js 为后缀保存这个文件。注意:外部文件不能包含 标签。然后把.js 文件指定给 标签中的 src 属性,就可以使用这个外部文件了:.提示:您可以把.js 文件放到网站目录中通常存放脚本的子目录中,这样更容易管理和维护。,JavaScript 语句,JavaScript 是由浏览器执行的语句序列。JavaScript 语句是发给浏览器的命令。这些命令的作用是告诉浏览器要做的事情。这个 JavaScript 语句告诉浏览器向网页输出 Hello world:document.write(Hello world);通常要在每行语句的结尾加上一个分号。大多数人都认为这是一个好的编程习惯,而且在 web 上的 JavaScript 案例中也常常会看到这种情况。分号是可选的(根据 JavaScript 标准),浏览器把行末作为语句的结尾。正因如此,常常会看到一些结尾没有分号的例子。注释:通过使用分号,可以在一行中写多条语句。,JavaScript 代码,JavaScript 代码是 JavaScript 语句的序列。浏览器按照编写顺序依次执行每条语句。本例向网页输出一个标题和两个段落:document.write(This is a header);document.write(This is a paragraph);document.write(This is another paragraph);,JavaScript 代码块,JavaScript 可以分批地组合起来。代码块以左花括号开始,以右花括号结束。代码块的作用是一并地执行语句序列。本例向网页输出一个标题和两个段落:,JavaScript 注释,JavaScript 注释可用于增强代码的可读性。可以添加注释来对 JavaScript 进行解释,或者提高其可读性。单行的注释以/开始。本例用单行注释来解释代码:,JavaScript 多行注释多行注释以/*开头,以*/结尾。本例使用多行注释来解释代码:,JavaScript 变量,变量是用于存储信息的容器:x=5;length=66.10;当您回忆在学校学过的代数课程时,想到的很可能是:x=5,y=6,z=x+y 等等。还记得吗,一个字母可以保存一个值(比如 5),并且可以使用上面的信息计算出 z 的值是 11。您一定没有忘记,对吧。这些字母称为变量,变量可用于保存值(x=5)或表达式(z=x+y)。,正如代数一样,JavaScript 变量用于保存值或表达式。可以给变量起一个简短名称,比如 x,或者更有描述性的名称,比如 length。JavaScript 变量也可以保存文本值,比如 carname=Volvo。JavaScript 变量名称的规则:变量对大小写敏感(y 和 Y 是两个不同的变量)变量必须以字母或下划线开始 注释:由于 JavaScript 对大小写敏感,变量名也对大小写敏感。,声明(创建)JavaScript 变量,在 JavaScript 中创建变量经常被称为“声明”变量。您可以通过 var 语句来声明 JavaScript 变量:var x;var carname;在以上声明之后,变量并没有值,不过您可以在声明它们时向变量赋值:var x=5;var carname=Volvo;,向未声明的 JavaScript 变量赋值,如果您所赋值的变量还未进行过声明,该变量会自动声明。这些语句:x=5;carname=Volvo;与这些语句的效果相同:var x=5;var carname=Volvo;,重新声明 JavaScript 变量,如果您再次声明了 JavaScript 变量,该变量也不会丢失其原始值。var x=5;var x;在以上语句执行后,变量 x 的值仍然是 5。在重新声明该变量时,x 的值不会被重置或清除。,JavaScript 算术运算符,算术运算符用于执行变量与/或值之间的算术运算。给定 y=5,下面的表格解释了这些算术运算符:,JavaScript 赋值运算符,赋值运算符用于给 JavaScript 变量赋值。给定 x=10 和 y=5,下面的表格解释了赋值运算符:,用于字符串的+运算符,+运算符用于把文本值或字符串变量加起来(连接起来)。如需把两个或多个字符串变量连接起来,请使用+运算符。在以上语句执行后,变量 txt3 包含的值是 What a verynice day。,要想在两个字符串之间增加空格,需要把空格插入一个字符串之中:txt1=What a very;txt2=nice day;txt3=txt1+txt2;或者把空格插入表达式中:txt1=What a very;txt2=nice day;txt3=txt1+txt2;在以上语句执行后,变量 txt3 包含的值是:What a very nice day,对字符串和数字进行加法运算请看这些例子:,规则是:如果把数字与字符串相加,结果将成为字符串。,JavaScript 比较和逻辑运算符,比较运算符比较运算符在逻辑语句中使用,以测定变量或值是否相等。给定 x=5,下面的表格解释了比较运算符:,逻辑运算符,逻辑运算符用于测定变量或值之间的逻辑。给定 x=6 以及 y=3,下表解释了逻辑运算符:,条件运算符,JavaScript 还包含了基于某些条件对变量进行赋值的条件运算符。语法variablename=(condition)?value1:value2 例子greeting=(visitor=PRES)?Dear President:Dear;如果变量 visitor 中的值是 PRES,则向变量 greeting 赋值 Dear President,否则赋值 Dear。,条件语句,在您编写代码时,经常需要根据不同的条件完成不同的行为。可以在代码中使用条件语句来完成这个任务。在 JavaScript 中,我们可以使用下面几种条件语句:if 语句 在一个指定的条件成立时执行代码。if.else 语句 在指定的条件成立时执行代码,当条件不成立时执行另外的代码。if.else if.else 语句 使用这个语句可以选择执行若干块代码中的一个。switch 语句 使用这个语句可以选择执行若干块代码中的一个。,JavaScript 消息框,警告框警告框经常用于确保用户可以得到某些信息。当警告框出现后,用户需要点击确定按钮才能继续进行操作。语法:alert(文本),确认框确认框用于使用户可以验证或者接受某些信息。当确认框出现后,用户需要点击确定或者取消按钮才能继续进行操作。如果用户点击确认,那么返回值为 true。如果用户点击取消,那么返回值为 false。语法:confirm(文本),提示框提示框经常用于提示用户在进入页面前输入某个值。当提示框出现后,用户需要输入某个值,然后点击确认或取消按钮才能继续操纵。如果用户点击确认,那么返回值为输入的值。如果用户点击取消,那么返回值为 null。语法:prompt(文本,默认值),函数,函数(function)是一个可执行的程序代码段。函数被定义后,可以多次被程序所调用。JavaScript的函数可以带有实际参数或形式参数,用于指定这个函数执行计算的时候所需要使用到的一个或者多个值,在函数执行完后可以返回一个值来表示计算结果。,JavaScript 函数,将脚本编写为函数,就可以避免页面载入时执行该脚本。函数包含着一些代码,这些代码只能被事件激活,或者在函数被调用时才会执行。你可以在页面中的任何位置调用脚本(如果函数嵌入一个外部的.js 文件,那么甚至可以从其他的页面中调用)。函数在页面起始位置定义,即 部分。,function displaymessage()alert(Hello World!),假如上面的例子中的 alert(Hello world!)没有被写入函数,那么当页面被载入时它就会执行。现在,当用户击中按钮时,脚本才会执行。我们给按钮添加了 onClick 事件,这样按钮被点击时函数才会执行。,如何定义函数,创建函数的语法:function 函数名(var1,var2,.,varX)代码 var1,var2 等指的是传入函数的变量或值。和 定义了函数的开始和结束。注意:无参数的函数必须在其函数名后加括号:function 函数名()代码 注意:别忘记 JavaScript 中大小写字母的重要性。function 这个词必须是小写的,否则 JavaScript 就会出错。另外需要注意的是,必须使用大小写完全相同的函数名来调用函数。,return 语句,return 语句用来规定从函数返回的值。因此,需要返回某个值的函数必须使用这个 return 语句。例子下面的函数会返回两个数相乘的值(a 和 b):function prod(a,b)x=a*b return x 当您调用上面这个函数时,必须传入两个参数:product=prod(2,3)而从 prod()函数的返回值是 6,这个值会存储在名为 product 的变量中。,JavaScript 变量的生存期,当您在函数内声明了一个变量后,就只能在该函数中访问该变量。当退出该函数后,这个变量会被撤销。这种变量称为本地变量。您可以在不同的函数中使用名称相同的本地变量,这是因为只有声明过变量的函数能够识别其中的每个变量。如果您在函数之外声明了一个变量,则页面上的所有函数都可以访问该变量。这些变量的生存期从声明它们之后开始,在页面关闭时结束。,JavaScript 循环,在编写代码时,你常常希望反复执行同一段代码。我们可以使用循环来完成这个功能,这样就用不着重复地写若干行相同的代码。JavaScript 有两种不同种类的循环:for 将一段代码循环执行指定的次数 while 当指定的条件为 true 时循环执行代码,有两种可以用在循环中的语句:break 和 continue。,Breakbreak 命令可以终止循环的运行,然后继续执行循环之后的代码(如果循环之后有代码的话)。Continuecontinue 命令会终止当前的循环,然后从下一个值继续运行。,JavaScript For.In 声明,For.In 声明用于对数组或者对象的属性进行循环操作。for.in 循环中的代码每执行一次,就会对数组的元素或者对象的属性进行一次操作。语法:for(变量 in 对象)在此执行代码“变量”用来指定变量,指定的变量可以是数组元素,也可以是对象的属性。,实例:使用 for.in 循环遍历数组。var x var mycars=new Array()mycars0=Saab mycars1=Volvo mycars2=BMW for(x in mycars)document.write(mycarsx+),事件,事件是可以被 JavaScript 侦测到的行为。JavaScript 使我们有能力创建动态页面。事件是可以被 JavaScript 侦测到的行为。网页中的每个元素都可以产生某些可以触发 JavaScript 函数的事件。比方说,我们可以在用户点击某按钮时产生一个 onClick 事件来触发某个函数。事件在 HTML 页面中定义。事件举例:鼠标点击 页面或图像载入 鼠标悬浮于页面的某个热点之上 在表单中选取输入框 确认表单 键盘按键 注意:事件通常与函数配合使用,当事件发生时函数才会执行。,event.htm,function displayDate()document.getElementById(demo).innerHTML=Date();My First Web PageDisplay Date,onload 和 onUnload当用户进入或离开页面时就会触发 onload 和 onUnload 事件。onload 事件常用来检测访问者的浏览器类型和版本,然后根据这些信息载入特定版本的网页。onload 和 onUnload 事件也常被用来处理用户进入或离开页面时所建立的 cookies。例如,当某用户第一次进入页面时,你可以使用消息框来询问用户的姓名。姓名会保存在 cookie 中。当用户再次进入这个页面时,你可以使用另一个消息框来和这个用户打招呼:Welcome John Doe!。,onFocus,onBlur 和 onChangeonFocus、onBlur 和 onChange 事件通常相互配合用来验证表单。下面是一个使用 onChange 事件的例子。用户一旦改变了域的内容,checkEmail()函数就会被调用。,onSubmitonSubmit 用于在提交表单之前验证所有的表单域。下面是一个使用 onSubmit 事件的例子。当用户单击表单中的确认按钮时,checkForm()函数就会被调用。假若域的值无效,此次提交就会被取消。checkForm()函数的返回值是 true 或者 false。如果返回值为true,则提交表单,反之取消提交。,onMouseOver 和 onMouseOutonMouseOver 和 onMouseOut 用来创建“动态的”按钮。下面是一个使用 onMouseOver 事件的例子。当 onMouseOver 事件被脚本侦测到时,就会弹出一个警告框:hhhhhhhh,Try.Catch 语句,try.catch 可以测试代码中的错误。try 部分包含需要运行的代码,而 catch 部分包含错误发生时运行的代码。语法:try/在此运行代码 catch(err)/在此处理错误,Throw 声明,throw 声明的作用是创建 exception(异常)。你可以把这个声明与 try.catch 声明配合使用,以达到控制程序流并产生精确错误消息的目的。语法:throw(exception)exception 可以是字符串、整数、逻辑值或者对象。,var x=prompt(Enter a number between 0 and 10:,)try if(x10)throw Err1 else if(x,JavaScript 特殊字符,反斜杠用来在文本字符串中插入省略号、换行符、引号和其他特殊字符。var txt=We are the so-called Vikings from the north.document.write(txt)在 JavaScript 中,字符串使用单引号或者双引号来起始或者结束。这意味着上面的字符串将被截为:We are the so-called。要解决这个问题,就必须把在 Viking 中的引号前面加上反斜杠()。这样就可以把每个双引号转换为字面上的字符串。var txt=We are the so-called Vikings from the north.document.write(txt)现在 JavaScript 就可以输出正确的文本字符串了:We are the so-called Vikings from the north。,document.write(You&me are singing!)上面的例子会产生以下输出:You&me are singing!,JavaScript 对大小写敏感名为 myfunction 的函数和名为 myFunction 的函数是两个不同的函数,同样,变量 myVar 和变量 myvar 也是不同的。JavaScript 对大小写敏感-所以当您创建或使用变量、对象及函数时,请注意字符的大小写。,空格JavaScript 会忽略多余的空格。所以您可以在代码中添加适当的空格,使得代码的可读性更强。下面的两行是等效的:name=Hege name=Hege,换行您可以在文本字符串内部使用反斜杠对代码进行折行。下面的例子是正确的:document.write(Hello World!)但是不能像这样换行:document.write(Hello World!),JavaScript 对象简介,JavaScript 是面向对象的编程语言(OOP)。OOP 语言使我们有能力定义自己的对象和变量类型。,属性属性指与对象有关的值。在下面的例子中,我们使用字符串对象的长度属性来计算字符串中的字符数目。,Java中,String txt=Hello World!;System.out.print(txt.length();,方法方法指对象可以执行的行为(或者可以完成的功能)。在下面的例子中,我们使用字符串对象的 toUpperCase()方法来显示大写字母文本。var str=Hello world!document.write(str.toUpperCase()上面的代码输出为:HELLO WORLD!,日期,定义日期Date 对象用于处理日期和时间。可以通过 new 关键词来定义 Date 对象。以下代码定义了名为 myDate 的 Date 对象:var myDate=new Date()注释:Date 对象自动使用当前的日期和时间作为其初始值。,操作日期通过使用针对日期对象的方法,我们可以很容易地对日期进行操作。在下面的例子中,我们为日期对象设置了一个特定的日期(2008 年 8 月 9 日):var myDate=new Date()myDate.setFullYear(2008,7,9)注意:表示月份的参数介于 0 到 11 之间。也就是说,如果希望把月设置为 8 月,则参数应该是 7。在下面的例子中,我们将日期对象设置为 5 天后的日期:var myDate=new Date()myDate.setDate(myDate.getDate()+5)注意:如果增加天数会改变月份或者年份,那么日期对象会自动完成这种转换。,比较日期日期对象也可用于比较两个日期。下面的代码将当前日期与 2008 年 8 月 9 日做了比较:,数组,定义数组数组对象用来在单独的变量名中存储一系列的值。我们使用关键词 new 来创建数组对象。下面的代码定义了一个名为 myArray 的数组对象:var myArray=new Array()有两种向数组赋值的方法(你可以添加任意多的值,就像你可以定义你需要的任意多的变量一样)。,访问数组通过指定数组名以及索引号码,你可以访问某个特定的元素。下面是代码行:document.write(mycars0)下面是输出:Saab,修改已有数组中的值如需修改已有数组中的值,只要向指定下标号添加一个新值即可:mycars0=Opel;现在,以上代码:document.write(mycars0);将输出:Opel,Boolean 对象,您可以将 Boolean 对象理解为一个产生逻辑值的对象包装器。Boolean(逻辑)对象用于将非逻辑值转换为逻辑值(true 或者 false)。使用关键词 new 来定义 Boolean 对象。下面的代码定义了一个名为 myBoolean 的逻辑对象:var myBoolean=new Boolean()注释:如果逻辑对象无初始值或者其值为 0、-0、null、false、undefined 或者 NaN,那么对象的值为 false。否则,其值为 true(即使当自变量为字符串 false 时)!,Math 对象,Math(算数)对象的作用是:执行普通的算数任务。Math 对象提供多种算数值类型和函数。无需在使用这个对象之前对它进行定义。,下面的例子使用了 Math 对象的 random()方法来返回一个介于 0 和 1 之间的随机数:document.write(Math.random()下面的例子使用了 Math 对象的 floor()方法和 random()来返回一个介于 0 和 10 之间的随机数:document.write(Math.floor(Math.random()*11),什么是 RegExp?,RegExp 是正则表达式的缩写。当您检索某个文本时,可以使用一种模式来描述要检索的内容。RegExp 就是这种模式。简单的模式可以是一个单独的字符。更复杂的模式包括了更多的字符,并可用于解析、格式检查、替换等等。您可以规定字符串中的检索位置,以及要检索的字符类型,等等。,定义 RegExp,RegExp 对象用于存储检索模式。通过 new 关键词来定义 RegExp 对象。以下代码定义了名为 patt1 的 RegExp 对象,其模式是 e:var patt1=new RegExp(e);当您使用该 RegExp 对象在一个字符串中检索时,将寻找的是字符 e。,RegExp 对象的方法RegExp 对象有 3 个方法:test()、exec()以及 compile()。test()test()方法检索字符串中的指定值。返回值是 true 或 false。例子:,exec()exec()方法检索字符串中的指定值。返回值是被找到的值。如果没有发现匹配,则返回 null。,例子 2:您可以向 RegExp 对象添加第二个参数,以设定检索。例如,如果需要找到所有某个字符的所有存在,则可以使用 g 参数(global)。,compile()compile()方法用于改变 RegExp。compile()既可以改变检索模式,也可以添加或删除第二个参数。,