JSP动态WEB技术与开发实例第二章JSP语法基础.docx

上传人:b****8 文档编号:9687879 上传时间:2023-05-20 格式:DOCX 页数:38 大小:247.80KB
下载 相关 举报
JSP动态WEB技术与开发实例第二章JSP语法基础.docx_第1页
第1页 / 共38页
JSP动态WEB技术与开发实例第二章JSP语法基础.docx_第2页
第2页 / 共38页
JSP动态WEB技术与开发实例第二章JSP语法基础.docx_第3页
第3页 / 共38页
JSP动态WEB技术与开发实例第二章JSP语法基础.docx_第4页
第4页 / 共38页
JSP动态WEB技术与开发实例第二章JSP语法基础.docx_第5页
第5页 / 共38页
JSP动态WEB技术与开发实例第二章JSP语法基础.docx_第6页
第6页 / 共38页
JSP动态WEB技术与开发实例第二章JSP语法基础.docx_第7页
第7页 / 共38页
JSP动态WEB技术与开发实例第二章JSP语法基础.docx_第8页
第8页 / 共38页
JSP动态WEB技术与开发实例第二章JSP语法基础.docx_第9页
第9页 / 共38页
JSP动态WEB技术与开发实例第二章JSP语法基础.docx_第10页
第10页 / 共38页
JSP动态WEB技术与开发实例第二章JSP语法基础.docx_第11页
第11页 / 共38页
JSP动态WEB技术与开发实例第二章JSP语法基础.docx_第12页
第12页 / 共38页
JSP动态WEB技术与开发实例第二章JSP语法基础.docx_第13页
第13页 / 共38页
JSP动态WEB技术与开发实例第二章JSP语法基础.docx_第14页
第14页 / 共38页
JSP动态WEB技术与开发实例第二章JSP语法基础.docx_第15页
第15页 / 共38页
JSP动态WEB技术与开发实例第二章JSP语法基础.docx_第16页
第16页 / 共38页
JSP动态WEB技术与开发实例第二章JSP语法基础.docx_第17页
第17页 / 共38页
JSP动态WEB技术与开发实例第二章JSP语法基础.docx_第18页
第18页 / 共38页
JSP动态WEB技术与开发实例第二章JSP语法基础.docx_第19页
第19页 / 共38页
JSP动态WEB技术与开发实例第二章JSP语法基础.docx_第20页
第20页 / 共38页
亲,该文档总共38页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

JSP动态WEB技术与开发实例第二章JSP语法基础.docx

《JSP动态WEB技术与开发实例第二章JSP语法基础.docx》由会员分享,可在线阅读,更多相关《JSP动态WEB技术与开发实例第二章JSP语法基础.docx(38页珍藏版)》请在冰点文库上搜索。

JSP动态WEB技术与开发实例第二章JSP语法基础.docx

JSP动态WEB技术与开发实例第二章JSP语法基础

第1章JSP技术概述

第2章JSP语法基础

Java语言的语法与C语言的语法非常相似,因此学习过C语言将可以更快上手开发Java程序。

学习一种语言的语法是程序员利用这种语言进行开发的基础,JSP语法是建立在Java语言基础上的,但由于它是一种Web程序设计语言,故有自己特有的一些用法和指令。

本章内容是后续章节JSP开发的基础,所以本章所阐述的内容一定要熟练掌握,融会贯通。

本章首先讲述JSP程序的基本结构,然后讲解变量和方法的声明,以及Java程序片、各种表达式、JSP注释、指令元素、脚本元素、动作元素等内容。

学习本章之前,读者应当对HTML标记和Java语言有一定的基础。

学完本章之后,应当对JSP的基本语法有较为深刻的认识,并能灵活应用它们编写简单的JSP程序。

2.1JSP页面的基本结构

在传统的HTML代码中插入Java程序片和JSP标记后就形成了一个JSP页面文件。

所以在JSP页面中包含了两种主要内容,一种是HTML代码,这是静态内容,一种是Java程序片及其相关元素,这是动态内容。

一般来说,一个JSP页面可由5种元素组合而成:

•普通的HTML代码。

•JSP标记,如指令标记、动作标记。

•变量和方法的声明。

•Java程序片。

•Java表达式。

前面一章的内容说过,JSP页面执行的过程是:

JSP页面被第一次请求执行时,服务器上的JSP引擎先将JSP页面文件转译成一个Java文件,即Servlet。

服务器将前面转译成的Java文件编译成字节码文件,再执行这个字节码文件来响应客户请求。

当这个JSP页面再次被请求时,将直接执行编译生成的字节码文件来响应。

下面的example2-1.jsp页面包含了上述的5种元素。

例:

2-1包含5种元素的JSP页面。

example2-1.jsp

<%@pagecontentType="text/html;charset=GB2312"%>

--jsp指令标记-->

<%@pageimport="java.util.*"%>

--jsp指令标记-->

<%!

Datedate;//声明对象

intsum=0;

publicintgetSum(intn){//声明方法

sum=0;

for(inti=1;i<=n;i++){

sum+=i;

}

returnsum;

}

%>

--HTML标记-->

<%date=newDate();//Java程序片

out.println("
当前的系统时间是:

"+date);

%>


<%out.println("
当前的系统时间是:

"+date);%>

<%=getSum(100)%>

--Java表达式-->

上面的例子包含了一般JSP页面的5种元素,页面的运行结果如图2-1所示:

图2-1包含5种元素的JSP页面运行结果

2.2数据类型

2.2.1数据类型概述

Java中的数据类型分为两种:

简单类型和引用类型。

基本类型包括整型、实型、布尔型、字符型等,是系统内置的数据类型。

引用类型由基本类型组合而成,如类、接口、数组等。

Java语言本身不支持C++中的结构(struct)或联合(union)数据类型,它的复合数据类型一般都是通过类或接口进行构造,类提供了捆绑数据和方法的方式,同时可以针对程序外部进行信息隐藏。

把这种类型一般称为引用类型。

Java的数据类型如表2-1所示:

表2-1Java的数据类型

数据

类型

详细数据类型

占用字

节宽度

范围

默认值

简单

类型

字节型byte

1字节

-128-127

0

短整型short

2字节

-32768-32768

0

整型int

4字节

-2147483648-2147483648

0

长整型long

8字节

-9233372036854477808

~9233372036854477808

0

单精度型float

4字节

-3.40292347E+38~3.40292347E+38

0.0f

双精度型double

8字节

64-1.79769313486231570E+308

~1.79769313486231570E+308

0.0d

布尔型boolean

1字节

true/false

false

字符型char

2字节

‘\u0000~u\ffff’

‘\u0000’

引用

类型

类class

接口Interface

数组

上表中,short类型已很少使用,这种类型的数据限制了存储时先高字节后低字节,致使在有的机器中可能会出错。

由上表可以看出,Java的所有数据类型长度都是固定的,与平台无关。

注意:

在Java中字符串不是作为数组来处理的,它是一种对象,用类String或StringBuffer可以定义一个字符串对象。

2.2.2标识符

标识符用来标识变量、类、方法、对象、接口和包,Java中标识符的名称必须符合以下规则:

必须以字母或下划线(_)或美元符($)开头;

标识符中除了首字符以外的其它字符可以是字母、数字、下划线、美元符组成,其中不能有空格和连字符(-);

标识符不能是关键字;

Java对标识符是大小写敏感的。

Java中使用的是Unicode国际标准字符集,最初的unicode编码是固定长度的,16位,也就是2两个字节代表一个字符,这样一共可以表示65536个字符。

显然,这样要表示各种语言中所有的字符是远远不够的。

Unicode4.0规范考虑到了这种情况,定义了一组附加字符编码,附加字符编码采用2个16位来表示,这样最多可以定义1048576个附加字符,目前unicode4.0只定义了45960个附加字符。

Java的关键字对java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名、方法名、类名、包名。

下面列出Java的关键字。

abstractbooleanbreakbytecasecatchcharclassconstcontinuedefaultdodoubleelseenumextendsfinalfinallyfloatforgotoifimplementsimportinstanceofintinterfacelongnativenewpackageprivateprotectedpublicreturnstrictfpshortstaticsuperswitchsynchronizedthisthrowthrowstransienttryvoidvolatilewhile

true和false分别表示表示真和假的布尔值,还有表示空值的null,这三个不是关键字,但也不能作为标识符来使用。

2.2.3简单数据类型

1.整型数据

int:

int为整数类型,在存储的时候,用4个字节存储,范围为-2,147,483,648到2,147,483,647,在变量初始化的时候,int类型的默认值为0。

short:

short也属于整数类型,在存储的时候,用2个字节存储,范围为-32,768到32,767,在变量初始化的时候,short类型的默认值为0,一般情况下,因为Java本身转型的原因,可以直接写为0。

long:

long也属于整数类型,在存储的时候,用8个字节存储,范围为-9,223,372,036,854,775,808到9,223,372,036,854,775,807,在变量初始化的时候,long类型的默认值为0L或0l,也可直接写为0。

byte:

byte同样属于整数类型,在存储的时候,用1个字节来存储,范围为-128到127,在变量初始化的时候,byte类型的默认值也为0。

2.实型数据

float:

float属于实数类型,在存储的时候,用4个字节来存储,范围为32位IEEEE754单精度范围,在变量初始化的时候,float的默认值为0.0f或0.0F,在初始化的时候可以写0.0。

double:

double同样属于实数类型,在存储的时候,用8个字节来存储,范围为64位IEEE754双精度范围,在变量初始化的时候,double的默认值为0.0。

3.字符型数据

char:

char属于字符类型,在存储的时候用2个字节来存储,因为Java本身的字符集不是用ASCII码来进行存储,是使用的16位Unicode字符集,它的字符范围即是Unicode的字符范围,在变量初始化的时候,char类型的默认值为'u0000'。

4.布尔型数据

boolean:

boolean属于布尔类型,在存储的时候不使用字节,仅仅使用1位来存储,范围仅仅为0和1,其字面量为true和false,而boolean变量在初始化的时候变量的默认值为false。

下面给出一个基本数据类型综合应用的实例。

例2-2数据类型示例。

example2-2.jsp

<%@pagecontentType="text/html;charset=gb2312"%>

--JSP指令标签-->

<%@pageimport="java.util.*"%>

--JSP指令标签-->

<%//以下为Java程序片

booleanbooleanTemp=true;

bytebyteTemp=70;

charcharTemp='b';

intintTemp=329;

shortshortTemp=125;

longlongTemp=1234567;

floatfloatTemp=7.234F;

doubledoubleTemp=1.53E-6;

out.println("

"+"基本数据类型综合应用实例"+"

");

out.println("布尔变量booleanTemp值为:

"+booleanTemp+"
");

out.println("字符型变量charTemp值为:

"+charTemp+"
");

out.println("整型变量intTemp值为:

"+intTemp+"
");

out.println("短整型变量shortTemp值为:

"+shortTemp+"
");

out.println("字节型变量byteTemp值为:

"+byteTemp+"
");

out.println("长整型变量longTemp值为:

"+longTemp+"
");

out.println("单精度型变量floatTemp值为:

"+floatTemp+"
");

out.println("双精度型变量doubleTemp值为:

"+doubleTemp+"
");

%>

--HTML标记符-->

程序的运行结果如图2-2所示:

图2-2基本数据类型应用实例运行结果

2.2.4Java中简单数据类型的转型

Java中的简单数据类型的转换分为两种:

自动转换和强制转换。

1.自动转换

当一个较“小”的数据和较“大”的数据一起运算的时候,系统将自动将较“小”的数据转换为较“大”的数据,再进行运算。

在方法调用过程,如果实际参数较“小”,而函数的形参比较“大”的时候,除非有匹配的方法,否则会直接使用较“大”的形参函数进行调用。

2.强制转换

将“大”数据转换为“小”数据时,可以使用强制类型转换,在强制类型转换的时候必须使用下边这种语句:

inta=(int)3.14;

只是在上边这种类型转换的时候,有可能会出现精度损失。

关于类型的自动提升,遵循下边的规则:

•所有的byte、short、char类型的值将提升为int类型;

•如果有一个操作数是long类型,计算结果是long类型;

•如果有一个操作数是float类型,计算结果是float类型;

•如果有一个操作数是double类型,计算结果是double类型;

自动类型转换图如下:

byte->short(char)->int->long->float->double

如果是强制转换的时候,就将上边的图反过来。

3.转换附加

当两个类型进行自动转换的时候,需要满足条件:

(1)这两种类型是兼容的,

(2)目的类型的数值范围应该比源转换值的范围要大。

而拓展范围就遵循上边的自动类型转换树,当这两个条件都满足的时候,拓展转换才会发生,而对于几个原始类型转换过程,根据兼容性boolean和char应该是独立的,而其他六种类型是可以兼容的,在强制转换过程,唯独可能特殊的是char和int是可以转换的,不过会使用char的ASCII码值比如:

inta=(int)'a';

a的值在转换过后输出的话,值为97。

2.2.5简单类的包装类

在Java中,可以直接把简单数据类型的变量表示为一个类。

对应简单数据类型共有6个包装类,分别是Boolean、Character、Short、Integer、Long、Float、Double。

为什么要使用封装类呢?

以int和Integer为例来说,虽然从本质上它们都代表一个32位的整数,但它们却是不同的数据类型。

事实上,Java中直接使用的整数都为int(就int和Integer而言),只有当数据必须作为对象的身份出现时,才必须用int对应的封装器Integer将整数值封装成对象。

例如:

为给java.util包中的Vector添加一个整数,就必须如下将该整数值封装在一个Integer实例中:

Vector v=newVector();

intk=121;

v.addElemt(newInteger(k));

另外,Integer作为int对应的封装器类,提供了许多的方法,比如:

Integer的构造方法、Integer向其它各种数值类型的转换方法等等,而这些是int类型数据所没有的。

2.2.6类

类是一种复杂的数据类型。

Java是一种面向对象的程序设计语言。

该语言的核心是支持类技术。

一个类定义了一组对象。

类具有行为(behavoir),它描述一个对象能够做什么以及做的方法(method),它们是可以对这个对象进行操作的程序和过程。

1.类基础知识

类(Class)实际上是对某种类型的对象定义变量和方法的原型。

它表示对现实生活中一类具有共同特征的事物的抽象,是面向对象编程的基础。

类是对某个对象的定义。

它包含有关对象动作方式的信息,包括它的名称、方法、属性和事件。

实际上它本身并不是对象,因为它不存在于内存中。

当引用类的代码运行时,类的一个新的实例,即对象,就在内存中创建了。

虽然只有一个类,但能从这个类在内存中创建多个相同类型的对象。

类通过接口与外界发生关系。

可以把类看作“理论上”的对象,也就是说,它为对象提供蓝图,但在内存中并不存在。

从这个蓝图可以创建任何数量的对象。

从类创建的所有对象都有相同的成员:

属性、方法和事件。

但是,每个对象都象一个独立的实体一样动作。

例如,一个对象的属性可以设置成与同类型的其他对象不同的值。

2.类定义的一般形式

className{

public:

类的公有接口

private:

私有的成员函数

私有的数据成员定义

};

类的定义由类头和类体两部分组成。

类头由关键字Class开头,然后是类名,其命名规则与一般标识符的命名规则一致。

类体包括所有的细节,并放在一对花括号中。

类的定义也是一个语句,所以要有分号结尾,否则会产生编译错误。

类体定义类的成员,它支持两种类型的成员:

(1)数据成员,它们指定了该类对象的内部表示。

(2)成员函数,他们指定了该类的操作。

类成员有3种不同的访问权限:

(1)公有(public)成员可以在类外访问。

(2)私有(private)成员只能被该类的成员函数访问。

(3)保护(protected)成员只能被该类的成员函数或派生类的成员函数访问。

数据成员通常是私有的,成员函数通常有一部分是公有的,一部分是私有的。

公有的函数可以在类外被访问,也称之为类的接口。

可以为各个数据成员和成员函数指定合适的访问权限。

2.3变量和方法的声明

2.3.1声明变量

在JSP页面中的“<%!

”和“%>”标记之间声明变量和方法。

JSP中的声明可以用来定义一个或多个合法的变量(包括普通变量和类变量)和方法,并不输出任何的文本到输出流去。

在声明元素中声明的变量和方法将在JSP页面初始化时被初始化。

JSP声明的语法格式为:

<%!

declaration;[declaration;]...%>

其中declaration为声明的变量、方法的名称和内容。

在声明变量变量和方法时,需要注意以下几点:

•声明必须以";"结尾。

•可以直接使用在<%@page%>中被包含进来的已经声明的变量和方法,不需要对它们重新进行声明。

•一个声明仅在一个页面中有效。

如果想每个页面都用到一些声明,最好把它们写成一个单独的文件,然后用<%@include%>或

include>元素包含进来。

将“<%!

”和“%>”之间声明的变量称为JSP的成员变量。

例如:

<%!

inti=10,j=20,k;

Strings=”hello”,sname=”simon”;

Datedate=newDate();

%>

“<%!

”和“%>”之间声明的变量在整个JSP页面都有效,与“<%!

”和“%>”标记所在的位置无关,但通常将标记符“<%!

”和“%>”写在Java程序片的前面。

JSP引擎将JSP页面转译成Java文件时,将“<%!

”和“%>”之间声明的变量作为类的成员变量,这些变量的内存空间直到服务器关闭时才被释放。

当多个用户请求同一个JSP页面时,JSP将会为每个用户启动一个线程,这些线程由JSP引擎服务器来管理。

这些线程共享JSP页面的成员变量,因此任何一个用户对JSP页面成员变量操作的结果,都会影响其他用户。

例2-3JSP页面成员变量示例。

example2-3.jsp

<%@pagecontentType="text/html;charset=GB2312"%>

简易网站计数器

<%!

inti=0;//声明变量i;

%>

<%i++;

%>

欢迎光临本站,您是本站第

<%=i%>

位访客。

程序的运行结果如下:

图2-3计数器程序

可以尝试多刷新几次页面来查看程序的运行结果,或者在局域网中,通过别的计算机来访问该页面,观察页面中计数器的变化。

假如存放该页面的计算机的IP地址为:

192.168.0.35,页面保存在root目录下,则其它计算机访问该页面的链接为:

http:

//192.168.0.35/example2-3.jsp。

注意:

页面中所定义的成员变量的有效范围与标记符“<%!

”和“%>”所在的位置无关,因此上面例子中声明变量的代码:

<%!

inti=0;//声明变量i;

%>

也可以放在程序片代码的后面,效果是一样的。

2.3.2声明方法

和声明变量一样,在标记符“<%!

”和“%>”之间也可以声明方法,声明的方法也在整个JSP页面有效(与标记符“<%!

”和“%>”所在的位置无关),但是该方法内定义的变量只在该方法内部有效。

声明的方法可以在页面中的Java程序片中调用。

当方法被调用时,方法内定义的变量被分配内存,调用完毕后即可释放所占的内存单元。

下面通过一个例子来演示JSP页面中如何来声明和调用方法。

例2-4方法声明示例。

example2-4.jsp

<%@pagecontentType="text/html;charset=GB2312"%>

<%!

intlength,width,height;//声明三个变量分别表示一个长方体的长、宽、高;

intgetAllArea(intl,intw,inth){//声明计算长方体表面积的方法;

return2*(l*w+l*h+w*h);

}

intgetVolumn(intl,intw,inth){//声明计算长方体体积的方法;

returnl*w*h;

}

%>

<%length=10;

width=20;

height=30;

out.println("指定的长方体的表面积为:

"+getAllArea(length,width,height));

out.println("
指定的长方体的体积为:

"+getVolumn(length,width,height));

%>

程序的运行结果如图2-4:

图2-4方法声明示例

在上述例子中,在标记符“<%!

”和“%>”之间声明了两个方法分别用于计算一个长方体的表面积和体积,而在后面的标记符“<%”和“%>”之间的程序片中,调用了这两个方法来计算指定的长方体的表面积和体积。

2.4Java程序片

在JSP,在标记符“<%”和“%>”之间书写的程序代码称为Java程序片,其实前面的例子中已多次用到过。

一般来说,使用java程序片实现逻辑计算。

Java程序片有三种形式:

实体定义、表达式和java代码块。

使用实体前,首先要定义实体。

下面是java程序片的定义和使用的语法格式。

2.4.1实体定义

实体定义包括:

变量定义、方法定义、类定义。

1.变量定义

可以在“<%!

”和“%>”标记符之间定义变量,在这种标记符之间定义的变量,通过JSP引擎转译为java文件时,成为某个类的成员变量,即全局变量。

变量的类型可以是java语言允许的任何数据类型。

这些变量在所定义的JSP页面内有效,即在本JSP页面中,任何java程序片中都可以使用这些变量。

<%!

intx=10,y,z;

Stringstr=”我是个学生”;

Datedate;

%>

在”<%!

”和”%>”标记符之间定义了5个变量,这5个变量都是全局变量。

也就是说在整个JSP页面都有效。

2.方法定义

在”<%!

”和”%>”标记符之间定义方法。

这些方法在所定义的JSP页面内有效,即在本JSP页面内,任何java程序片都可以调用这些方法。

例如,定义一个方法,求n!

<%!

longjicheng(intn)

{

longzhi=1;

for(inti=1;i<=n;i++)zhi=zhi*i;

returnzhi;

}

%>

3.类定义

在”<%!

”和”%>”标记符之间定义类。

这些类在所定义的JSP页面内有效,即在本JSP页面内,任何java程序片都可以使用这些类创建对

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2