2008年07月01日

好啊

2005年09月15日


在JavaScript中可通过arguments .Length来检查参数的个数。例:

Function function_Name(exp1,exp2,exp3,exp4)
Number =function _Name.arguments.length;
if (Number>1)
document.wrile(exp2);
if (Number>2)
document.write(exp3);
if(Number>3)
document.write(exp4);
(1)单击事件onClick

通常在下列基本对象中产生:

·button(按钮对象)
·checkbox(复选框)或(检查列表框)
·radio (单选钮)
·reset buttons(重要按钮)
·submit buttons(提交按钮)

例:可通过下列按钮激活change()文件:

<Form>
<Input type="button" Value=" " onClick="change()">
</Form>
(2)onChange改变事件

当利用text或texturea元素输入字符值改变时发该事件,同时当在select表格项中一个选项状态改变后也会引发该事件。

例:

<Form>
<Input type="text" name="Test" value="Test" onCharge="check(‘this.test)">
</Form>

(3)选中事件onSelect

当Text或Textarea对象中的文字被加亮后,引发该事件。

(4)获得焦点事件onFocus

当用户单击Text或textarea以及select对象时,产生该事件。此时该对象成为前台对象。

(5)失去焦点onBlur

当text对象或textarea对象以及select对象不再拥有焦点、而退到后台时,引发该文件,他与onFocas事件是一个对应的关系。

(6)载入文件onLoad

当文档载入时,产生该事件。onLoad一个作用就是在首次载入一个文档时检测cookie的值,并用一个变量为其赋值,使它可以被源代码使用。

(7)卸载文件onUnload

当Web页面退出时引发onUnload事件,并可更新Cookie的状态。


for…in,with,this,new

如引用math内部对象中cos()的方法,则:
with(math)
document.write(cos(35));
document.write(cos(80));

若不使用with则引用时相对要复杂些:
document.write(Math.cos(35))
document.write(math.sin(80))

(1)串对象的属性

该对象只有一个属性,即length。它表明了字符串中的字符个数,包括所有符号。例:

mytest="This is a JavaScript"
mystringlength=mytest.length

最后mystringlength返回mytest字串的长度为20。

(2)串对象的方法

string对象的方法共有19个。主要用于有关字符串在Web页面中的显示、字体大小、字体颜色、字符的搜索以及字符的大小写转换。

其主要方法如下:

·锚点anchor():该方法创建如用Html文档中一样的anchor标记。使用anchor如用Html中(A Name="")一样。通过下列格式访问:string.anchor(anchorName)。

·有关字符显示的控制方法
big字体显示, Italics()斜体字显示,bold()粗体字显示,blink()字符闪烁显示,small()字符用小体字显示,fixed()固定高亮字显示、fontsize(size)控制字体大小等。

·字体颜色方法;fontcolor(color)

·字符串大小写转换
toLowerCase()-小写转换,toUpperCase()大写转换。下列把一个给定的串分别转换成大写和小写格式:

string=stringValue.toUpperCase和string=stringValue.toLowerCase。

·字符搜索:indexOf[charactor,fromIndex]
从指定formIndtx位置开始搜索charactor第一次出现的位置。

·返回字串的一部分字串:substring(start,end)
从start开始到end的字符全部返回。
(1)主要属性

math中提供了6个属性,它们是数学中经常用到的常数E、以10为底的自然对数LN10、以2为底的自然对数LN2、3.14159的PI、1/2的平方根SQRT1-2,2的平方根为SQRT2。

(2)主要方法

·绝对值:abs()
·正弦余弦值:sin(),cos()
·反正弦反余弦 :asin(), acos()
·正切反正切:tan(),atan()
·四舍五入:round()
·平方根:sqrt()
·基于几方次的值:Pow(base,exponent)

3)、日期及时间对象

·功能:提供一个有关日期和时间的对象。

·静动性:动态性,即必须使用New运算符创建一个实例。例:

MyDate=New Date()

Date对象没有提供直接访问的属性。只具有获取和设置日期和时间的方法。

·日期起始值:1770年1月1日00:00:00。

获取日期的时间方法

·getYear(): 返回年数
·getMonth():返回当月号数
·getDate(): 返回当日号数
·getDay():返回星期几
·getHours():返回小时数
·getMintes(:返回分钟数
·getSeconds():返回秒数
·getTime() : 返回毫秒数

(2)设置日期和时间:

·setYear();设置年
·setDate():设置当月号数
·setMonth():设置当月份数
·setHours():设置小时数
·setMintes():设置分钟数
·setSeconds():设置秒数
·setTime ():设置毫秒数

2、JavaScript中的系统函数

JavaScript中的系统函数又称内部方法。它提供了与任何对象无关的系统函数,使用这些函数不需创建任何实例,可直接用。

1.返回字符串表达式中的值:

·方法名:eval(字串表达式),例:

test=eval("8+9+5/2");

2、返回字符串ASCI码:

·方法名:unEscape (string)

3.返回字符的编码:

·方法名:escape(character)

4.返回实数:

parseFloat(floustring);

5、返回不同进制的数:

parseInt(numbestring ,rad.X)

其中radix是数的进制,numbs字符串数

二、窗体中的基本元素

窗体中的基本元素由按钮、单选按钮、复选按钮、提交按钮、重置按钮、文本框等组成。
在JavaScript中要访问这些基本元素,必须通过对应特定的窗体元素的数组下标或窗体元
素名来实现。每一个元素主要是通过该元素的属性或方法来引用。其引用的基本格式见下:

formName.elements[].methadName (窗体名.元素名或数组.方法)
formName.elemaent[].propertyName(窗体名.元素名或数组.属性)

下面分别介绍:

1、Text单行单列输入元素

·功能:对Text标识中的元素实施有效的控制。

·基本属性:

Name:设定提交信息时的信息名称。对应于HTML文档中的Name。
Value:用以设定出现在窗口中对应HTML文档中Value的信息。
defaultvalue:包括Text元素的默认值

·基本方法:

blur():将当前焦点移到后台。
select():加亮文字。

·主要事件:

onFocus:当Text获得焦点时,产生该事件。
OnBlur:从元素失去焦点时,产生该事件。
Onselect:当文字被加亮显示后,产生该文件。
onchange:当Text元素值改变时,产生该文件。

例:…

<Form name="test">
<input type="text" name="test" value="this is a javascript" >
</form>

<script language ="Javascirpt">
document.mytest.value="that is a Javascript";
document.mytest.select();
document.mytest.blur();
</script>

2、textarea多行多列输入元素

·功能:实施对Textarea中的元素进行控制。

·基本属性

name:设定提交信息时的信息名称,对应HTML文档Textarea的Name。
Value:用以设定出现在窗口中对应HTML文档中Value的信息。
Default value:元素的默认值。

·方法:

blur():将输入焦点失去
select():将文字加亮后

·事件:

onBlur:当失去输入焦点后产生该事件
onFocus:当输入获得焦点后,产生该文件
Onchange:当文字值改变时,产生该事件
Onselect:当文字加亮后,产生该文件

3、Select选择元素

·功能:实施对滚动选择元素的控制。

·属性:

name:设定提交信息时的信息名称,对应文档select中的name。
Length:对应文档select中的length
options:组成多个选项的数组
selectIndex;该下标指明一个选项
select在中每一选项都含有以下属性:
Text:选项对应的文字
selected:指明当前选项是否被选中
Index:指明当前选项的位置
defaultselected:默认选项

·事件:

OnBlur:当select选项失去焦点时,产生该文件。
onFocas:当select获得焦点时,产生该文件。
Onchange:选项状态改变后,产生该事件。

4、Button按钮

·功能:实施对Button按钮的控制。

·属性:

Name:设定提交信息时的信息名称,对应文档中button的Name。
Value:用以设定出现在窗口中对应HTML文档中Value的信息。

·方法:

click()该方法类似于一个按下的按钮。

·事件:

onclick当单击button按钮时,产生该事件。

例 :

<Form name="test">
<input type="button" name="testcall" onclick=tmyest()>
</form>

<script language="javascirpt">
document.elements[0].value="mytest"; //通过元素访问

document.testcallvalue="mytest"; // 通过名字访问
</script>
…..

5、checkbox检查框

·功能:实施对一个具有复选框中元素的控制。

·属性:

name:设定提交信息时的信息名称。
Value:用以设定出现在窗口中对应HTML文档中Value的信息。
Checked:该属性指明框的状态true/false.
defauitchecked:默认状态

·方法:

click()该方法使得框的某一个项被选中。

·事件:

onclick:当框的选被选中时,产生该事件。

6、radio无线按钮

·功能:实施对一个具单选功能的无线按钮控制。

·属性:

name:设定提交信息时的信息名称,对应HTML文档中的radio的name相同
value:用以设定出现在窗口中对应HTML文档中Value的信息,对应HTML文档中的radio
的name。
length:单选按钮中的按钮数目。
defalechecked:默认按钮。
checked:指明选中还是没有选中。
index:选中的按钮的位置。

·方法:

chick():选定一个按钮。

·事件:

onclick:单击按钮时,产生该事件。

7、hidden:隐藏

·功能:实施对一个具有不显示文字并能输入字符的区域元素的控制。

·属性:

name:设定提交信息时的信息名称,对应HTML文档的hidden中的Name。
Value:用以设定出现在窗口中对应HTML文档中Value的信息,对应HTML文档hidden中
的value。
defaleitvalue:默认值

8、Password口令
·功能:实施对具有口令输入的元素的控制。
·属性:
Name:设定提交信息时的信息名称,对应HTML文档中password中的name。
Value:用以设定出现在窗口中对应HTML文档中Value的信息,对应HTML文档中password
中的Value。
defaultvalu:默认值
·方法
select():加亮输入口令域。
blur():使这丢失passward输入焦点。
focus():获得password输入焦点。

9、submit提交元素
·功能:实施对一个具有提交功能按钮的控制。
·属性:
name:设定提交信息时的信息名称,对应HTML文档中submit。
Value:用以设定出现在窗口中对应HTML文档中Value的信息,对应HTML文档中value。
·方法
click()相当于按下submit按钮。
·事件:
onclick()当按下该按钮时,产生该事件。
·事件:
OnBlur:当select选项失去焦点时,产生该文件。
onFocas:当select获得焦点时,产生该文件。
Onchange:选项状态改变后,产生该事件。


posted on 2004-12-14 13:26 _grace 阅读(2732) 评论(8)  编辑 报警

评论
# re: 我的JavaScript笔记(window.status用法)
<html>
<head>
<script language="JavaScript">
<!– hide

function statbar(txt) {
   window.status = txt;
}

// –>
</script>
</head>
<body>

<form>
  <input type="button" name="look" value="Write!" 
    onClick="statbar(‘Hi! This is the statusbar!’);">
  <input type="button" name="erase" value="Erase!" 
    onClick="statbar(”);">
</form>

</body>
</html>

2004-12-22 15:05 | 学思
# re: 我的JavaScript笔记-setTimeout
1、继续状态栏,加一连接:
<a href="dontclck.htm" 
  onMouseOver="window.status=’不 要 按 ‘; return true;"
  onMouseOut="window.status=”;">link</a> 

2、定时
<script language="JavaScript">
<!– hide

function timer() {
  setTimeout("alert(‘Time is up!’)", 3000);
}

// –>
</script>

<form>
  <input type="button" value=" 定 时" onClick="timer()">
</form>

2004-12-22 15:10 | 学思
# re: 我的JavaScript笔记–focus
1、光标聚焦在表单的第一个元素上:
function setfocus() {
  document.formname.elementname.focus();
}
<body onLoad="setfocus()">
2、光标聚焦在文本元素上,并且被选中
function setfocus() {
  document.formname.elementname.focus();
  document.formname.elementname.select();
}


2004-12-22 15:41 | 学思
# re: 我的JavaScript笔记–document.myImage.src
1、<img src="img.gif" name="myImage" width=100 height=100>
可以使用document.myImage或 document.images["myImage"]来使用它。
如用新图片 img2.gif 取代了旧图片 img1.gif:
document.myImage.src= "img2.src";
2、图片的预载入 
hiddenImg= new Image();  /*生成了一个图像对象*/
hiddenImg.src= "img3.gif";/*定义了hiddenImg对象要表现的图像的地址*/
如果想显示它,可以使用下面的这行命令:
document.myImage.src= hiddenImg.src;
3、在特定事件中作图像转换:
<a href="#" 
  onMouseOver="document.myImage2.src=’img2.gif’" 
  onMouseOut="document.myImage2.src=’img1.gif’">
<img src="img1.gif" name="myImage2" width=160 height=50 border=0></a>

2004-12-22 15:57 | 学思
# re: 我的JavaScript笔记–预载图片/脚本激活
1、为加快下载速度,可预先读取图片:
将如下的类似代码放在HTML的<head>区:
<SCRIPT LANGUAGE="JavaScript">
<!– 
Image1= new Image(100,50)
Image1.src = "image1.gif"

Image2 = new Image(100,50)
Image2.src = "image2.gif"

Image3 = new Image(100,50)
Image3.src = "image3.gif"

// –>
</SCRIPT> 

2、脚本的激活用<BODY Onload="Function()">
2004-12-22 16:11 | 学思
# re: 我的JavaScript笔记–对象及属性
JAVASCRIPT对象及属性教程
[CP设计动力 csplanet@21cn.com ]

SCRIPT 标记

用于包含JavaScript代码.

语法

属性

LANGUAGE 定义脚本语言

SRC 定义一个URL用以指定以.JS结尾的文件

windows对象

每个HTML文档的顶层对象.

属性

frames[] 子桢数组.每个子桢数组按源文档中定义的顺序存放.

feames.length 子桢个数.

self 当前窗口.

parent 父窗口(当前窗口是中一个子窗口).

top 顶层窗口(是所有可见窗口的父窗口).

status 浏览器状态窗口上的消息.

defaultStatus 当status无效时,出现在浏览器状态窗口上的缺省消息.

name 内部名,为由window.open()方法打开的窗口定义的名字.


方法

alert("message") 显示含有给定消息的"JavaScript Alert"对话框.

confirm("message") 显示含有给定消息的"Confirm"对话框(有一个OK按钮和一个Cancel按钮).如果用户单击OK返回true,否则返回false.

prompt("message") 显示一个"prompt"对话框,要求用户根据显示消息给予相应输入.

open("URL","name") 打开一个新窗口,给予一个指定的名字.

close() 关闭当前窗口.

frame对象


它是整个浏览器窗口的子窗口,除了status,defaultStatus,name属性外,它拥有window对象的全部属性.


location对象


含有当前URL的信息.

属性

href 整个URL字符串.

protocol 含有URL第一部分的字符串,如http:

host 包含有URL中主机名:端口号部分的字符串.如//www.cenpok.net/server/

hostname 包含URL中主机名的字符串.如http://www.cenpok.net

port 包含URL中可能存在的端口号字符串.

pathname URL中"/"以后的部分.如~list/index.htm

hash "#"号(CGI参数)之后的字符串.

search "?"号(CGI参数)之后的字符串.


document对象


含有当前文档信息的对象.

属性

title 当前文档标题,如果未定义,则包含"Untitled".

location 文档的全URL.

lastModified 含有文档最后修改日期.

referrer 调用者URL,即用户是从哪个URL链接到当前页面的.

bgColor 背景色(#xxxxxx)

fgColor 前景文本颜色.

linkColor 超链接颜色.

vlinkColor 访问过的超链颜色.

alinkColor 激活链颜色(鼠标按住未放时).

forms[] 文档中form对象的数组,按定义次序存储.

forms.length 文档中的form对象数目.

links[] 与文档中所有HREF链对应的数组对象,按次序定义存储.

links.length 文档中HREF链的数目.

anchors[] 锚(…)数组,按次序定义存储.

anchors.length 文档中锚的数目.


方法

write("string") 将字符串突出给当前窗口.(字符串可以含有HTML标记)

writeln("string") 与write()类似,在结尾追加回车符,只在预定格式文本中(




)生效.

clear() 清当前窗口.

close() 关闭当前窗口.


form对象


属性

name

中的NAME属性的字符串值.

method 中METHOD属性的类值,"0"="GET" ,"1"="POST" .

action 中ACTION属性的字符串值.

target 表格数据提交的目标,与标记中相应属性一致.

elements[index] elements属性包含form中的各个元素.

length 表格中的元素个数.


方法

submit() 提交表格.

事件处理器onSubmit() 用户单击一个定义好的按钮提交form时运行的代码.


text和textarea对象

属性

name NAME属性的字符串值.

value 域内容的字符串值.

defaultValue 域内容的初始字符串值.


方法

focus() 设置对象输入焦点.

blur() 从对象上移走输入焦点.

select() 选定对象的输入区域.


事件处理器

onFocus 当输入焦点进入时执行.

onBlur 当域失去焦点时执行.

onSelect 当域中有部分文本被选定时执行.

onChange 当域失去焦点且域值相对于onFocus执行有所改变时执行.


复选框(checkbox)对象


属性

name NAME属性的字符串值.

value 复选框内容的字符串值.如果设置了,则为"on",否则为"off".

checked 复选框内容的布尔值.如果设置了,则为true,否则为false .

defaultChecked 反映(CHECKED)属性的布尔值(缺省状态).


方法

click() 选定复选框,并使之状态为"on".


事件处理器

onClick 当用户单击Checkbox时执行.


单选按钮(radio)对象


属性

name NAME属性的字符串值.

length radio对象中单选按钮的个数.

value VALUE属性的字符串值.

checked 布尔值,按下为true,否则为false .

defaultChecked 反映CHECKED属性值的布尔值.


方法

click() 选定单选按钮.


事件处理器

onClick 当单选按钮被选定时执行.


select对象

属性

length select对象中对象的个数.

name 由NAME=属性定义的select对象的内部名.

selectedIndex select对象中当前被选option的下标.

options 该属性对应于在HTML中定义select对象时标记中的内容,它有如下属性:

text 标记后的文本串.

value VALUE属性的值,当Submit按钮被按下时,该值被提交.

defaultSelected 反映标记的SELECTED属性的布尔值.

selected 反映option的当前选择状态的布尔值.


事件处理器

onFocus 当输入焦点进入域时执行.

onBlur 当域失去输入焦点时执行.

onChange 当域失去焦点且如果域的值相对于onFocus执行时有所改变,则执行onChange.


Button对象


表格中有三种类型按钮,由标记中的TYPE属性定义:

.submit (type="SUBMIT")

.reset (type="RESET")

.custom (type="BUTTON")

所有按钮对象都有如下成分:

属性

value VALUE属性的字符串值.

name NAME属性的字符串值.


方法

click() 选定按钮


事件处理器

onClick 当按钮被单击时执行.


submit和reset对象


属性

value VALUE=属性的内容.

name NAME=属性的内容.


方法

click() 选定按钮


事件处理器

onClick 当按钮被单击时执行.


password对象


属性

defaultValue VALUE=属性的内容.

name NAME=属性的内容.

value 目前输入password域的数据.


方法

focus() 将焦点带入password域.

blur 将焦点从password域移出.

select() 选定password域中的当前数据,以备修改.


navigator对象


该对象用于确定用户访问时使用的Navigator版本.

属性

appCodeName 相对于用户浏览器的"codename"

appName 相对于用户浏览器的实际名字.

appVersion 相对于用户浏览器的版本号.

userAgent 该属性反映用户浏览器的全部信息.


string对象


string对象为操作字符串的内容提供了很多方法.


属性

length 字符串的长度,即字符串中字符的个数.


方法

big(),blink(),bold(),fixed(),italics(),small(),sub(),strike(),sup(),fontColor(color),fontSize(size)

以上方法为字符串增加相应的HTML标记.

charAt(index) 返回字符串中index处的字符.

indexOf(searchValue,[fromIndex]) 该方法在字符串中寻找第一次出现的searchValue.如果给定了fromIndex,则从

字符串内该位置开始搜索,当searchValue找到后,返回该串第一个字符的位置.

lastIndexOf(searchValue,[fromIndex]) 从字符串的尾部向前搜索searchValue,并报告找到的第一个实例.

substring(indexA,indexB) 获取自indexA到indexB的子串.

toLowerCase(),toUpperCase() 将字符串中所有字符全部转换成大写,小写.


Date对象


要使用Date对象,必须先生成一个Date实例:

变量名=new Date();

方法

getDay(),getDate(),getHours(),getMinutes(),getMonth(),getSeconds(),getTime(),

getTimeZoneOffset(),getYear()

还有setDay… …

toGMTString() 用GMT格式返回当前时间. (Sun,12 Feb 1999 14:19:22 GMT)

toLocaleString 用locale格式返回当前时间. (03/11/99 14:19:22)

parse(date) 将普通date字符串转换成豪秒形式,从而给setTime()做参数.


Math对象


属性

LN10 (10的自然对数)

PI (3.1415926…)

SQRT1_2 (1/2的平方根)

方法

abs(x) 返回x的绝对值

acos(x) 返回x的arc cosine值

asin(x) 返回x的arc sin值

atan(x) 返回x的arc tangent值

ceil(x) 返回大于等于x的最小整数

cos(x) 返回x的cosine值

exp(x) 返回e的x次方

floor(x) 返回小于等于x的最大整数

log(x) 返回x的

max(x,y) 返回x,y中的大值

min(x,y) 返回x,y中的小值

pow(x,y) 返回x的y次方

round(x) 舍入到最近整数,(小于或等于0.5小数舍去)

sin(x) 返回x的sin值

sqrt(x) 返回x的平方根

tan(x) 返回x的tangent值

题目夸张了点

1.在Logic卷标中分为以下几类 :
  1)进行比较运算的Logic卷标.
  2)进行字符串匹配的Logic卷标.
  3)判断指定内容是否存在的Logic卷标.
  4)进行循环遍历的Logic卷标.
  5)进行转发或复位向的Logic卷标.
2.进行比较运算的Logic卷标.
  1)<logic:equal>:变量等于指定常量
   例:<logic:equal header=“Accept-Language” value=“zh-cn”>
      do some thing.
      </logic:equal>.
     比较HTTP请求中heading的“Accept-Language”是否等于“zh-cn”.
  2)<logic:notEqual>:变量不等于指定常量
   例: <logic:notEqual cookie=“username” value=“Tom”>
     比较cookie中username的值是否不等于“Tom”.
  3)<logic:greaterEqual>:变量大于指定常量
   例: <logic:greaterEqual name=“iniBean” value=“100” scope=“request”>.
     依次在page,request,session,application范围内寻找name指定的变量并与value比较
  4)<logic:greaterThan>:变量大于或等于指定常量
   例: <logic:greaterThan name=“someBean” property=“age” value=“30”>比较javabean someBean中的age属性并比较.
  5)<logic:lessEqual>:变量小于或等于指定常量
   例:<logic:lessEqual name=“number” value=“100.0”>
      <% request.setAttribute(“number”, “100”);%>
  6)<logic:lessThan>:变量小于指定常量
   例:<logic:lessThan name=“number” value=“100.0a”>
     按字符串比较
   <logic:lessThan parameter=“number” value=“100”>
     请求的参数number与100比较
3.进行字符串匹配的Logic卷标.
  1)<logic:match>:变量是否包含指定的常量字符串
  例: <logic:match name=“authorName” scope=“request”    value=“Linda”>.
    scope:page,request,session,application
  2)<logic:notMatch>:变量是否不包含指定的常量字符串
  例: <logic:match name=“authorName” scope=“request”    value=“Linda” location=“start”>.               
      location: start, end 匹配的Linda位于authorName的开头还是结尾
4.判断指定内容是否存在的Logic卷标.
  1)<logic:empty>:指定变量是否为null或空串“”;是否是一个空的collection或map(调用isEmpty()方法来判断)。
  例: <logic:empty name=“user” property=“logid”>.
  2)<logic:notEmpty>:指定变量是否不为null或空串“”
  3)<logic:present>:判断指定的安全角色,用户,HTTP请求heading或JavaBean是否存在.  检查header、request parameter、cookie、
    JavaBean或JavaBean propertie是否存在且不等于null;可以检查当前用户的身份,使用属性user和role;它的属性有:name、
    property、scope、cookie、header、parameter。
  例: <logic:present role=“role1,role2,role3” >.
  4)<logic:notPresent>:判断指定的安全角色,用户,HTTP请求heading或JavaBean是否不存在
  5)<logic:messagesPresent>:判断指定的消息是否存在
  例: <logic:messagesPresent>从request范围内检索key为 Globals.MESSAGE_KEY的ActionMessages对象是否存在.
     <logic:messagePresent name=“err”>从request范围内检索key为 err的ActionMessages对象是否存在.
    <logic:messagePresent property=“total”>从request范围内检索key为 Globals.MESSAGE_KEY的ActionMessages对象,再从中检索key为“total”的消息是否存在.
  6)<logic:messagesNotPresent>:判断指定的消息是否不存在
5.进行循环遍历的Logic卷标.
  <logic:iterate>:能遍历数组,Collectio,Enumeration, Iterator或Mapping中的所有元素
  1)遍历集合:
  例:<logic:iterate id=“element” indexId=“index”       name=“Animals” offset=“1” length=“2”>
     从Animals集合中循环遍历(从offset开始,循环数量为length,默认offset=0,遍历集合中全部元素), indexId代表当前被遍历元素序号的变量,得到的元素被命名为element.
  2)遍历Mapping
  例:<logic:iterate id=“element” indexId=“index”       name=“Animals” >
     从Animals  Mapping中遍历, indexId代表当前被遍历元素序号的变量,得到的元素被命名为element.
6.进行请求转发的Logic卷标.
  1)<logic:forward>:
  例:<logic:forward name=“index”>.其name与<global-forwards>中<forward name=“index” path=“/index.jsp”>匹配.2)<logic:redirect> 
  例:<logic:redirect href=“http://www.apache.org”>
     page相对与当前页
     forward与<logic:forward>中要求相同.

2004年11月29日


JSP内置对象


jsp九种内置对象:request, reponse, out, session, application, config, pagecontext, page, exception.


 


.request对象:该对象封装了用户提交的信息,通过调用该对象相应的方法可以获取封装的信息,即使用该对象可以获取用户提交信息。


 1.Request对象可以使用getParameter(string s)方法获取该表单通过text提交的信息。如:


Request.getParameter(“boy”)


例:request1.jsp


<%@ page contentType=”text/html;charset=GB2312″ %>


<HTML>


<BODY bgcolor=green><FONT size=1>


   <FORM action=”tree.jsp” method=post name=form>


       <INPUT type=”text” name=”boy”>


       <INPUT TYPE=”submit” value=”Enter” name=”submit”>


   </FORM>


</FONT>


</BODY>


</HTML>


 


tree.jsp


<%@ page contentType=”text/html;charset=GB2312″ %>


<HTML>


<BODY bgcolor=green><FONT size=1>  


<P>获取文本框提交的信息:


   <%String textContent=request.getParameter(“boy”);


   %>


<BR>


   <%=textContent%>


<P> 获取按钮的名字:


   <%String buttonName=request.getParameter(“submit”);


   %>


<BR>


   <%=buttonName%>


</FONT>


</BODY>


</HTML>


 


使用request对象获取信息要格外小心,要避免使用空对象,否则会出现NullPointerException异常,所以我们可以作以下处理.


request3.jsp


<%@ page contentType=”text/html;charset=GB2312″ %>


<HTML>


<BODY bgcolor=cyan><FONT size=5>


   <FORM  action=”" method=post name=form>


         <INPUT type=”text” name=”girl”>


         <INPUT TYPE=”submit” value=”Enter” name=”submit”>


   </FORM> 


   <%String textContent=request.getParameter(“girl”);


     double number=0,r=0;


     if(textContent==null)


        {textContent=”";


        }


     try{ number=Double.parseDouble(textContent);


          if(number>=0)


             {r=Math.sqrt(number) ;


              out.print(“<BR>”+String.valueOf(number)+”的平方根:“);


              out.print(“<BR>”+String.valueOf(r));


             }


          else


             {out.print(“<BR>”+”请输入一个正数“);


             }


        }


     catch(NumberFormatException e)


        {out.print(“<BR>”+”请输入数字字符“);


        }


    %>


</FONT>


</BODY>


</HTML>


2.处理汉字信息:当request对象获取客户提交的汉字字符时,会出现乱马问题,必须进行特殊处理。首先,将获取的字符串用ISO-8859-1进行编码,并将编码存放到一个字节数组中,然后再将这个属组转化为字符窜对象即刻。


:   String textContent=request.getParameter(“boy”);


     byte  b[]=textContent.getBytes(“ISO-8859-1″);


textContent=new String(b);


例:tree2.jsp


<%@ page contentType=”text/html;charset=GB2312″ %>


<MHML>


<BODY>  


<P>获取文本框提交的信息:


   <%String textContent=request.getParameter(“boy”);


     byte  b[]=textContent.getBytes(“ISO-8859-1″);


     textContent=new String(b);


   %>


<BR>


   <%=textContent%>


<P> 获取按钮的名字:


   <%String buttonName=request.getParameter(“submit”);


     byte  c[]=buttonName.getBytes(“ISO-8859-1″);


     buttonName=new String(c);


   %>


<BR>


   <%=buttonName%>


</BODY>


</HTML>


 


3.常用方法举例:


getProtocol(),  getServletPath(), getContentLength(), getMethod(), getRemoteAddr(), getRemoteHost(), getServerName(), getParameterName()


例:


<%@ page contentType=”text/html;charset=GB2312″ %>


<%@ page import=”java.util.*” %>


<MHML>


<BODY bgcolor=cyan>


<Font size=5>  


<BR>客户使用的协议是:


   <% String protocol=request.getProtocol();


      out.println(protocol);


   %>


<BR>获取接受客户提交信息的页面:


   <% String path=request.getServletPath();


      out.println(path);


   %>


<BR>接受客户提交信息的长度:


   <% int length=request.getContentLength();


      out.println(length);


   %>


<BR>客户提交信息的方式:


   <% String method=request.getMethod();


      out.println(method);


   %>


<BR>获取HTTP头文件中User-Agent的值::


   <% String header1=request.getHeader(“User-Agent”);


      out.println(header1);


   %>


<BR>获取HTTP头文件中accept的值:


   <% String header2=request.getHeader(“accept”);


      out.println(header2);


   %>


<BR>获取HTTP头文件中Host的值:


   <% String header3=request.getHeader(“Host”);


      out.println(header3);


   %>


<BR>获取HTTP头文件中accept-encoding的值:


   <% String header4=request.getHeader(“accept-encoding”);


      out.println(header4);


   %>


<BR>获取客户的IP地址:


   <% String  IP=request.getRemoteAddr();


      out.println(IP);


   %>


<BR>获取客户机的名称:


   <% String clientName=request.getRemoteHost();


      out.println(clientName);


   %>


<BR>获取服务器的名称:


   <% String serverName=request.getServerName();


      out.println(serverName);


   %>


<BR>获取服务器的端口号:


   <% int serverPort=request.getServerPort();


      out.println(serverPort);


   %>


<BR>获取客户端提交的所有参数的名字:


   <% Enumeration enum=request.getParameterNames();


       while(enum.hasMoreElements())


            {String s=(String)enum.nextElement();


             out.println(s);


            }     


      %>


<BR>获取头名字的一个枚举:


   <% Enumeration enum_headed=request.getHeaderNames();


      while(enum_headed.hasMoreElements())


            {String s=(String)enum_headed.nextElement();


             out.println(s);


            }     


   %>


<BR>获取头文件中指定头名字的全部值的一个枚举:


   <% Enumeration enum_headedValues=request.getHeaders(“cookie”);


      while(enum_headedValues.hasMoreElements())


            {String s=(String)enum_headedValues.nextElement();


             out.println(s);


            }     


   %>


<BR>


 


</Font>


</BODY>


</HTML>


 


4.获取HTML表单提交的数据


单选框radio


例:


radio.jsp


<HTML>


<%@ page contentType=”text/html;charset=GB2312″ %>


<BODY bgcolor=cyan><Font size=1 >


 <P>诗人李白是中国历史上哪个朝代的人:


   <FORM action=”answer.jsp” method=post name=form>


       <INPUT type=”radio” name=”R” value=”a”>宋朝


       <INPUT type=”radio” name=”R” value=”b”>唐朝


       <INPUT type=”radio” name=”R” value=”c”>明朝


       <INPUT type=”radio” name=”R” value=”d” checked=”ok”>元朝


        <BR>


 <P>小说红楼梦的作者是:


        <BR>


       <INPUT type=”radio” name=”P” value=”a”>曹雪芹


       <INPUT type=”radio” name=”P” value=”b”>罗贯中


       <INPUT type=”radio” name=”P” value=”c”>李白


       <INPUT type=”radio” name=”P” value=”d”>司马迁


       <BR>


       <INPUT TYPE=”submit” value=”提交答案” name=”submit”>


   </FORM>


</FONT>


</BODY>


</HTML>


 


answer.jsp


<HTML>


<%@ page contentType=”text/html;charset=GB2312″ %>


<BODY bgcolor=cyan><Font size=1 >


 <% int n=0;


    String s1=request.getParameter(“R”);


    String s2=request.getParameter(“P”);


     if(s1==null)


       {s1=”";}


     if(s2==null)


       {s2=”";}


      if(s1.equals(“b”))


       { n++;}


      if(s2.equals(“a”))


       { n++;}


 %>


<P>您得了<%=n%>


</FONT>


</BODY>


</HTML>


列表框<select><Option>


例:


select.jsp


<HTML>


<%@ page contentType=”text/html;charset=GB2312″ %>


<BODY bgcolor=cyan><Font size=1 >


 <P>选择计算和的方式


   <FORM action=”sum.jsp” method=post name=form>


       <Select name=”sum” size=2>


          <Option Selected value=”1″>计算1n的连续和


          <Option value=”2″>计算1n的平方和


          <Option value=”3″>计算1n的立方和


       </Select>


 <P>选择n的值:<BR>


       <Select name=”n” >


          <Option value=”10″>n=10


          <Option value=”20″>n=20


          <Option value=”30″>n=30


          <Option value=”40″>n=40


          <Option value=”50″>n=50


          <Option value=”100″>n=100


       </Select>


        <BR><BR>


     <INPUT TYPE=”submit” value=”提交你的选择” name=”submit”>


   </FORM>


</FONT>


</BODY>


</HTML>


 


sum.jsp


<HTML>


<%@ page contentType=”text/html;charset=GB2312″ %>


<BODY bgcolor=cyan><Font size=1 >


 <% long sum=0;


    String s1=request.getParameter(“sum”);


    String s2=request.getParameter(“n”);


     if(s1==null)


       {s1=”";}


     if(s2==null)


       {s2=”0″;}


    if(s1.equals(“1″))


       {int n=Integer.parseInt(s2);


         for(int i=1;i<=n;i++)


            {sum=sum+i;


            }


       }


      else if(s1.equals(“2″))


       {int n=Integer.parseInt(s2);


         for(int i=1;i<=n;i++)


            {sum=sum+i*i;


            }


       }


      else if(s1.equals(“3″))


       {int n=Integer.parseInt(s2);


         for(int i=1;i<=n;i++)


            {sum=sum+i*i*i;


            }


       }


 %>


<P>您的求和结果是<%=sum%>


</FONT>


</BODY>


</HTML>


 


 


.Response对象:对客户的请求做出动态的响应,向客户端发送数据。


1.动态响应contenType属性


当一个用户访问一个jsp页面时,如果该页面用page指令设置页面的contentType属性是text/html,那么jsp引擎将按照这种属性值作出反映。如果要动态改变这个属性值来响应客户,就需要使用response对象的setContentType(String s)方法来改变contentType的属性值。


格式:response.setContentType(String s)


参数s可取text/html,, application/x-msexcel, application/msword等。


例如:response1.jsp


<%@ page contentType=”text/html;charset=GB2312″ %>


<HTML>


<BODY bgcolor=cyan><Font size=1 >


 <P>我正在学习response对象的


 <BR>setContentType方法


 <P>将当前页面保存为word文档吗?


  <FORM action=”" method=”get” name=form>


     <INPUT TYPE=”submit” value=”yes” name=”submit”>


   </FORM>


 <% String str=request.getParameter(“submit”);


      if(str==null)


         {str=”";


         }


      if(str.equals(“yes”))


         {response.setContentType(“application/msword;charset=GB2312″);


         }


%>


</FONT>


</BODY>


</HTML>


2Response重定向:在某些情况下,当响应客户时,需要将客户重新引导至另一个页面,可以使用responsesendRedirect(URL)方法实现客户的重定向。


例如:response2.jsp


 


<html>


<head><title>Where to go</title></head>


<body>


<%


String address = request.getParameter(“where”);


if(address!=null){


 if(address.equals(“ChinaWebber”))


   response.sendRedirect(“http://www.ChinaWebber.com”);


  else if(address.equals(“Yahoo”))


     response.sendRedirect(“http://www.yahoo.com”);


   else if(address.equals(“Sun”))


     response.sendRedirect(“http://www.sun.com”);


 }


 %>


 <b>Please select:</b><br>


 <form action=”goto.jsp” method=”GET”>


 <select name=”where”>


   <option value=”ChinaWebber” selected>go to ChinaWebber


   <option value=”Sun” > go to Sun


   <option value=”Microsoft” > go to Microsoft


 </select>


 <input type=”submit” value=”go”>


 </form>


 


三.Session对象


1.       什么是Session:


Session对象是一个jsp内置对象,它在第一个jsp页面被装载时自动创建,完成会话期管理。


从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个会话。当一个客户访问一个服务器时,可能会在这个服务器的几个页面之间反复连接,反复刷新一个页面,服务器应当通过某种办法知道这是同一个客户,这就需要session对象。


2.    session对象的Id:当一个客户首次访问服务器上的一个jsp页面时,jsp引擎产生一个session对象,同时分配一个String类型的Id号,jsp引擎同时将这个Id号发送到客户端,存放在Cookie中,这样session对象和客户之间就建立了一一对应的关系。当客户再访问连接该服务器的其他页面时,不再分配给客户新的session对象,直到客户关闭浏览器后,服务器端该客户的session对象才取消,并且和客户的会话对应关系消失。当客户重新打开浏览器再连接到该服务器时,服务器为该客户再创建一个新的session对象。


3.  session对象常用方法:


                         i.              public String getId():获取session对象编号。


                       ii.              public void setAttribute(String key,Object obj):将参数Object指定的对象obj添加到session对象中,并为添加的对象指定一个索引关键字。


                      iii.              public Object getAttribute(String key):获取session对象中含有关键字的对象。


                     iv.              public Boolean isNew():判断是否是一个新的客户。


例如:session1.jsp


<%@ page contentType=”text/html;charset=GB2312″ %>


<HTML>


<BODY bgcolor=cyan><FONT Size=5>


<BODY>


    <%String s=session.getId();


    %>


<P>您的session对象的ID是:


<BR>


<%=s%>


<BODY>


<HTML>


 


例如:session2.jsp


<%@ page contentType=”text/html;charset=GB2312″ %>


<HTML>


<BODY>


    <%! int number=0;    


     synchronized void countPeople()


        {


                  number++;


         }


   %>


   <%


     if(session.isNew())


       {


         countPeople();


         String str=String.valueOf(number);


         session.setAttribute(“count”,str);


       }


    %>


<P>您是第<%=(String)session.getAttribute(“count”)%>个访问本站的人。


<BODY>


<HTML>


 


四.aplication对象


1.什么是application:


服务器启动后就产生了这个application对象,当客户再所访问的网站的各个页面之间浏览时,这个application对象都是同一个,直到服务器关闭。但是与session不同的是,所有客户的application对象都是同一个,即所有客户共享这个内置的application对象。


 


2Application对象常用方法:


(1)    public void setAttribute(String key,Object obj): 将参数Object指定的对象obj添加到application对象中,并为添加的对象指定一个索引关键字。


(2)    public Object getAttribute(String key): 获取application对象中含有关键字的对象。


例:application.jsp


<HTML>


<HEAD>


<TITLE>application变量的使用</TITLE>


</HEAD>


<BODY>


<CENTER>


<FONT SIZE = 5 COLOR = blue>application变量的使用</FONT>


</CENTER>


<HR>


<P></P>


 


<%


Object obj = null;


String strNum = (String)application.getAttribute(“Num”);


int Num = 0;


 


//检查是否Num变量是否可取得


if(strNum != null)


Num = Integer.parseInt(strNum) + 1; //将取得的值增加1


 


application.setAttribute(“Num”, String.valueOf(Num)); //起始Num变量值


 


%>


application对象中的<Font color = blue>Num</Font>变量值为


<Font color = red><%= Num %></Font><BR>


 


</BODY>


</HTML>


五.Out对象


Out对象是一个输出流,用来向客户端输出数据。Out对象用于各种数据的输出。


常用方法:


(1)       out.print():输出各种类型数据。


(2)       out.newLine():输出一个换行符。


(3)       out.close():关闭流。


例:out.jsp


<%@ page contentType=”text/html;charset=GB2312″ %>


<%@ page  import=”java.util.Date”%>


<HTML>


<HEAD>


<%


Date Now = new Date();


String hours=String.valueOf(Now.getHours());


String mins=String.valueOf(Now.getMinutes());


String secs=String.valueOf(Now.getSeconds());


%>


现在是


<%out.print(String.valueOf(Now.getHours()));%>


小时


<%out.print(String.valueOf(Now.getMinutes()));%>



<%out.print(String.valueOf(Now.getSeconds()));%>



</FONT>


</BODY>


</HTML>


六.Cookie


1.什么是Cookie.


Cookie是Web服务器保存在用户硬盘上的一段文本。Cookie允许一个Web站点在用户的电脑上保存信息并且随后再取回它。


举例来说,一个Web站点可能会为每一个访问者产生一个唯一的ID,然后以Cookie文件的形式保存在每个用户的机器上。 
如果您使用IE浏览器访问Web,您会看到所有保存在您的硬盘上的Cookie。它们最常存放的地方是:c:\windows\cookies(在Win  2000中则是C:\Documents  and  Settings\您的用户名\Cookies )


cookie是以“关键字key=值value“的格式来保存纪录的.


2.创建一个Cookie对象,调用Cookie对象的构造函数可以创建Cookie。Cookie对象的构造函数有两个字符串参数:Cookie名字和Cookie值。


Cookie c=new Cookie(“username”,”john”);


3 jsp中如果要将封装好的Cookie对象传送到客户端,使用responseaddCookie()方法。


格式:response.addCookie(c)


4.读取保存到客户端的Cookie,使用request对象的getCookies()方法,执行时将所有客户端传来的Cookie对象以数组的形式排列,如果要取出符合需要的Cookie对象,就需要循环比较数组内每个对象的关键字。


例:Cookie[] c=request.getCookies();


if(c!=null)


for(int I=0;I<c.length;I++)


if(“username”.equals(c[I].getName()))


out.println(c[I].getValue());


5.设置Cookie对象有效时间:setMaxAge()


c.setMaxAge(3600);


6Cookie应用
  1.网站能够精确地知道有多少人浏览过。


由于代理服务器、缓存等的使用,唯一能帮助网站精确统计来访人数的方法就是为每个访问者建立一个唯一的ID。使用Cookie,网站可以完成以下工作:


  测定多少人访问过;


  测定访问者有多少是新用户(即第一次来访),多少是老用户;


  测定一个用户多久访问一次网站。


  网站使用数据库达到上述目标。当一个用户第一次访问时,网站在数据库中建立一个新的ID,并把ID通过Cookie传送给用户。用户再次来访时,网站把该用户ID对应的计数器加1,得到用户的来访次数。


例:Cookie.jsp


<%@ page contentType=”text/html; charset=GB2312″


        import=”java.util.Date” %>


<HTML>


<HEAD>


<TITLE>Cookie的存取</TITLE>


</HEAD>


<BODY>


<CENTER>


<FONT SIZE = 5 COLOR = blue>Cookie的存取</FONT>


</CENTER>


<HR>


<P></P>


<%


//建立Cookie变数


Cookie IntVal = new Cookie(“IntVal”, “100″);


Cookie temp = null;


 


response.addCookie(IntVal); //Cookie变数加入Cookie


 


Cookie[] cookies = request.getCookies();


//取得Cookie资料


 


int cookielen = cookies.length;


//取得Cookie变数阵列的长度


 


if(cookielen != 0) //判断是否成功取得Cookie资料


{    


       for (int i = 0; i < cookielen; i++)


       {    


              temp = cookies[i]; //取得cookies阵列中的Cookie变数


 


              if (temp.getName().equals(“IntVal”))


              { //判断是否取得名为DateValCookie资料


                     %>


                     Cookie<Font color = blue>IntVal</Font>变量的值为


                     <Font color = red><%= IntVal.getValue()%></Font><BR>


                     <%


                                }


              


       }    


}


 


else


{


       %>


       不存在Cookie<BR>


       <%


}


%>


</BODY>


</HTML>


 


例:CookieDate.jsp


<%@ page contentType=”text/html; charset=GB2312″


        import=”java.util.Date”%>


<HTML>


<HEAD>


<TITLE>Cookie存取日期/时间数据</TITLE>


</HEAD>


<BODY>


<CENTER>


<FONT SIZE = 5 COLOR = blue>Cookie存取日期/时间数据</FONT>


</CENTER>


<HR>


<P></P>


<%


Date Now = new Date(); //取得目前的系统时间


 


Cookie DateVal = new Cookie(“DateVal”, String.valueOf(Now.getTime()));


//欲将储存至Cookie时间/日期值转换为毫秒数


 


response.addCookie(DateVal); //Cookie变数加入Cookie


 


Cookie temp = null;


DateVal = null; //重设Cookie变数


 


Cookie[] cookies = request.getCookies();


//取得Cookie资料


 


int cookielen = cookies.length;


//取得Cookie变数阵列的长度


 


if(cookielen != 0) //判断是否成功取得Cookie资料


{    


       for (int i = 0; i < cookielen; i++)


       {    


              temp = cookies[i]; //取得cookies阵列中的Cookie变数


                           


              if (temp.getName().equals(“DateVal”))


              { //判断是否取得名为DateValCookie资料


                     %>


                     Cookie<Font color = blue>DateVal</Font>


                     变量的值为<Font color = red>


                     <%= new Date(Long.parseLong(temp.getValue())) %>


                    </Font><BR>


                     <%


              }


       }


}


else //若无法取得Cookie资料则执行下面的叙述


{


%>


无法取得Cookie<BR>


<%


}


%>


</BODY>


</HTML>