第5章JSP的页面元素.docx

上传人:b****1 文档编号:274769 上传时间:2023-04-28 格式:DOCX 页数:26 大小:53.43KB
下载 相关 举报
第5章JSP的页面元素.docx_第1页
第1页 / 共26页
第5章JSP的页面元素.docx_第2页
第2页 / 共26页
第5章JSP的页面元素.docx_第3页
第3页 / 共26页
第5章JSP的页面元素.docx_第4页
第4页 / 共26页
第5章JSP的页面元素.docx_第5页
第5页 / 共26页
第5章JSP的页面元素.docx_第6页
第6页 / 共26页
第5章JSP的页面元素.docx_第7页
第7页 / 共26页
第5章JSP的页面元素.docx_第8页
第8页 / 共26页
第5章JSP的页面元素.docx_第9页
第9页 / 共26页
第5章JSP的页面元素.docx_第10页
第10页 / 共26页
第5章JSP的页面元素.docx_第11页
第11页 / 共26页
第5章JSP的页面元素.docx_第12页
第12页 / 共26页
第5章JSP的页面元素.docx_第13页
第13页 / 共26页
第5章JSP的页面元素.docx_第14页
第14页 / 共26页
第5章JSP的页面元素.docx_第15页
第15页 / 共26页
第5章JSP的页面元素.docx_第16页
第16页 / 共26页
第5章JSP的页面元素.docx_第17页
第17页 / 共26页
第5章JSP的页面元素.docx_第18页
第18页 / 共26页
第5章JSP的页面元素.docx_第19页
第19页 / 共26页
第5章JSP的页面元素.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

第5章JSP的页面元素.docx

《第5章JSP的页面元素.docx》由会员分享,可在线阅读,更多相关《第5章JSP的页面元素.docx(26页珍藏版)》请在冰点文库上搜索。

第5章JSP的页面元素.docx

第5章JSP的页面元素

第5章 JSP的页面元素

●所有HTML文件可以在资源管理器中双击执行

●但是JSP文件必须先放到Web服务器中,然后通过HTTP的方式访问。

因为文件内所有<%%>内代码是被Web服务器解释执行的。

●在一个JSP页面中,主要分为三种元素:

编译指令、操作指令和JSP代码。

1.编译指令告诉JSP的解释引擎(比如:

Tomcat),需要在编译时做什么动作,比如引入一个其它的类,设置JSP页面的使用什么语言编码等。

2.操作指令则是在JSP页面被请求时,动态执行的,比如可以根据某个条件动态跳转到另外一个页面

3.JSP代码指的就是我们自己嵌入在JSP页面中的Java代码,这又分为两种:

第一种是JSP页面中一些变量和方法的声明,在声明时,使用“<%!

”和“%>”标记。

另外一种,就是常用到的用“<%”和“%>”包含的JSP代码块:

JSP语法

(一)

HTML注释

作用:

在客户端显示一个注释.

JSP语法格式:

--comment[<%=expression%>]-->

--Thisfiledisplaystheuserloginscreen-->

例1 

效果:

在客户端的HTML源代码中产生和上面一样的数据:

--Thisfiledisplaystheuserloginscreen-->

--Thispagewasloadedon<%=(newjava.util.Date()).toLocaleString()%>-->

例2

效果:

在客户端的HTML源代码中显示为:

--ThispagewasloadedonJanuary1,2000-->

描述:

这种注释和HTML中很像,也就是它可以在"查看源代码"中看到。

唯一有些不同的就是,你可以在这个注释中用表达式(例子2所示)。

这个表达式是不定的,由页面不同而不同,你能够使用各种表达式,只要是合法的就行。

5.1 JSP代码

主要分为两种:

1.使用<%!

............%>标记:

用来声明JSP页面中的变量和方法

2.使用标记<%............%>:

是一段

JSP页面的基本结构

⏹JSP页面文件是由传统的HTML页面文件中加入Java程序片和JSP标签构成的。

⏹5种元素组合而成:

1)普通的HTML标记符

2)JSP标签,如指令标签、动作标签

3)

JSP的脚本部分

变量和方法的声明

4)Java程序片

5)Java表达式

●把JSP页面中普通的HTML标记符号,交给客户的浏览器执行显示。

●JSP标签、数据和方法声明、Java程序片由服务器负责执行,将需要显示的结果发送给客户的浏览器。

●Java表达式由服务器负责计算,并将结果转化为字符串,然后交给客户的浏览器负责显示。

变量和方法、类的声明

在“<%!

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

声明方法

在“<%!

”和“%>”之间声明方法,该方法在整个JSP页面内有效,但是在该方法内定义的变量只在该方法中有效。

这些方法将在JAVA程序片中被调用,当方法被调用时,方法内定义的变量被分配内存,调用完毕即可释放所占的内存。

声明类

可以在“<%!

”和“%>”之间声明一个类,该类在JSP页面内有效,即在JSP页面的JAVA程序片部分,可以使用该类创建对象。

Java程序片

•在“<%”和“%>”之间的java程序称为Java程序片

•可以有多个程序片在一个JSP页面中

•程序片中的变量是局部变量

•可以把程序片分隔成多个程序片

表达式

⏹可以在“<%=”和“%>”之间插入一个表达式

⏹<%=是一个完整的符号

⏹表达式的值由服务器负责计算

⏹表达式的结果用字符串形式发送到客户端显示

JSP中的注释

⏹HTML注释:

在标记符号“

--”和“-->”之间加入注释内容。

⏹JSP注释:

在标记符号“<%--”和“--%>”之间加入注释内容。

<%--注释--%>JSP引擎忽略JSP注释

隐藏注释

作用:

写在JSP程序中,但不是发给客户。

JSP语法格式:

  <%--comment--%>

例子:

<%@pagelanguage="java"%>

ACommentTest

ATestofComments

<%--Thiscommentwillnotbevisibleinthepagesource--%>

描述:

用隐藏注释标记的字符会在JSP编译时被忽略掉。

这个注释在你希望隐藏或注释你的JSP程序时是很有用的。

注:

JSP编译器不是会对<%--and--%>之间的语句进行编译的,它不会显示在客户的浏览器中,也不会在源代码中看到在<%----%>之间,你可以任意写注释语句,但是不能使用"--%>",如果你非要使用请用"--%\>"。

JSP语法

(二):

JSP代码(脚本元素)

用来在JSP中包含脚本代码(通常是JAVA代码)的。

它声明变量和方法,包含任意脚本代码和对表达式求值。

主要包含三种类型:

●声明

●JAVA程序块

●表达式

声明

作用:

在JSP程序中声明合法的变量和方法

JSP语法格式:

<%!

declaration;[declaration;]+...%>

<%!

inti=0;%>

<%!

inta,b,c;%>

<%!

Circlea=newCircle(2.0);%>

例子

描述:

声明你将要在JSP程序中用到的变量和方法。

你也必须这样做,不然会出错。

当JSP页面被编译执行的时候,整修页面被编译成一个类,这些变量是JSP页面类的成员变量。

同时这些变量也是被共享的,任何一个用户的操作都会影响到其他用户。

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

<%!

inti=0;%>

<%

i++;

out.print(i);

%>

个人访问本站

例:

 

执行程序,并刷新浏览器,可以看到值是增加的。

也可以声明函数,一地在函数前面加上synchronized关键字,功能是当前一个用户在执行该方法的时候,其他的用户必须等待,直到该用户完成操作。

使用方法如程序:

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

<%!

intnumber=0;

synchronizedvoidcountPeople(){

number++;

}

%>

<%

countPeople();

%>

您是第<%out.print(number);%>个访问本站的客户。

 

你可以一次性声明多个变量和方法,只要以";"结尾就行,当然这些声明在Java中要是合法的。

当你声明方法或变量时,请注意以下的一些规则:

●声明必须以";"结尾

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

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

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

include>元素包含进来。

●在JSP中,声明是一段JAVA代码,它用来定义在产生的类文件中的类范围变量和方法。

当JSP页面进行初始化并且有了“类”的范围时,进行声明的初始化。

对于其他的声明和表达式或者是代码来讲,在声明中定义的任何东西在整个JSP中都可以使用。

声明段在<%!

和%>之间。

代码块

包含一个有效的程序段.

JSP语法

<%codefragment%>

例子

<%Stringname=null;

if(request.getParameter("name")==null){%>

<%@includefile="error.html"%>

<%}else{

foo.setName(request.getParameter("name"));

if(foo.getName().equalsIgnoreCase("integra"))

name="acura";

if(name.equalsIgnoreCase("acura")){%>

可以在“<%”和“%>”之间插入Java程序片,一个JSP页面可以有许多JAVA程序片,这些代码块将被JSP服务器按照顺序执行。

在一个代码块中声明的变量是JSP页面的局部变量,只在当前页面中有效,如程序所示

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

<%inti=0;%>

<%

i++;

out.print(i);

%>

个人访问本站

 

该程序去掉了上面程序中的“!

”,这样变量i就变成局部变量了。

该变量是局部变量,所以不能用来计数,该变量始终为1。

描述:

可包含多个jsp语句,方法,变量,表达式。

能做以下的事:

●声明将要用到的变量或方法(参考声明).

●编写JSP表达式(参考表达式).

●使用任何隐含的对象和任何用

useBean>声明过的对象

●编写JSP语句(如果你在使用Java语言,这些语句必须遵从JavaLanguageSpecification,).

●任何文本,HTML标记,JSP元素必须在scriptlet之外

●当JSP收到客户的请求时,scriptlet就会被执行,如果scriptlet有显示的内容,这些显示的内容就被存在out对象中。

Scriptlet是一段可以在处理请求时间执行的JAVA代码。

Scriptlet包含在<%和%>之间。

Scriptlet具体要做什么要看代码是如何写的。

它可以产生输出,发到客户的输出流中。

在被编译的类中,多个这样的代码将按在JSP程序出现的顺序合并成一个。

像其他的JAVA代码或方法一样,可以修改在它内部的对象,作为方法引用的结果

在查看网页源代码的时候,这一部分是看不见的,只有执行的结果。

因为这里的代码是被服务器执行的。

JavaScript代码是可以看到的,因为JavaScript是被浏览器解释执行的。

表达式

作用:

包含一个符合JSP语法的表达式

JSP语法格式:

<%=expression%>

<%=map.size()%>

<%=numguess.getHint()%>

例子

描述:

表达式元素表示的是一个在脚本语言中被定义的表达式,在运行后被自动转化为字符串,然后插入到这个表达示在JSP文件的位置显示。

因为这个表达式的值已经被转化为字符串,所以你能在一行文本中插入这个表达式.

当你在JSP中使用表达式时请记住以下几点:

●你不能用一个分号(";")来作为表达式的结束符.但是同样的表达式用在scriptlet中就需要以分号来结尾了!

查看Scriptlet这个表达式元素能够包括任何在JavaLanguageSpecification中有效的表达式.

●有时候表达式也能做为其它JSP元素的属性值.一个表达式能够变得很复杂,它可能由一个或多个表达式组成,这些表达式的顺序是从左到右。

表达式是用于在返回给客户的响应流中产生输出值的一个Scriptlet的简单表示法。

当表达式进行计算时,结果转换成了一个字符串并且显示出来。

一个表达式被封装<%=和%>在之间。

如果表达式的任何部分是一个对象。

就通过使用这个对象的toString()方法进行转换

JSP语法(三):

JSP指令

JSP指令(directive)是用作从JSP发送到JSP包容器上的一个信息。

它们用来设置全局变量,如声明类、要实现的方法和输出内容的类型等等。

它们并不向客户产生任何输出。

所有的指令都在整个JSP文件的范围内有效。

换句话说,一个指令影响整个JSP文件,并且仅仅只是这个JSP文件。

在标签中指令都是用@字符在标签内标出的,一般的语法是:

<%@指令名attribute=”value”attribute=”value”%>

三类指令是:

●页面(Page)指令

●Include指令

●Taglib指令

JSP指令标签

⏹Page指令:

用来定义整个JSP页面的一些属性和这些属性的值。

⏹Page指令格式:

<%@page属性1=“属性1的值”属性2=“属性2的值”…%>

注意:

1)page指令的作用对整个页面有效,与位置无关,习惯写在最前面。

2)一个属性可以指定几个属性值,属性值之间用逗号分隔。

3)可以使用多个page指令给属性import指定几个值,但其他属性只能使用一次page指令给属性值指定的一个值。

Page指令几个常用的属性

●language属性:

定于JSP页面使用的脚本语言,该属性的值目前只能取JAVA

格式:

<%@pagelanguage=“java”%>

●import属性:

为JSP页面引入JAVA核心包中的类,就可以在JSP页面的程序片部分、变量及函数声明部分、表达式部分使用包中的类。

格式:

<%@pageimport=“java包中的类”%>

●contentType属性:

定义JSP页面响应MIME类型和JSP页面字符的编码。

属性值一般形式时“MIME”或“MIME类型;charset=编码”,

常用的格式:

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

●session属性:

用于设置是否需要使用内置的session对象,session属性的值可以时true或false,session属性默认的值是true。

●buffer属性:

内置输出对象out负责将服务器的某些信息或运行结果发送到客户端显示,buffer属性用来指定out设置的缓冲区的大小或不使用缓冲区。

格式:

<%@pagebuffer=“kb”%>默认值是8kb

●autoFlush属性:

指定out的缓冲区被填满是,缓冲区是否自动刷新。

可以取true或false,默认是true。

格式:

<%@pageautoFlush=“true[false]”%>

注意:

当buffer的值是none时,autoFlush的值就不能设置成false。

●isThreadSafe属性:

用来设置JSP页面是否可多线程访问。

该属性值可以取true或false。

默认是

格式:

<%@pageisThreadSafe=“true[false]”%>

●Info属性:

该属性为JSP页面准备一个字符串,属性值是某个字符串。

格式:

<%@pageinfo=“字符串”%>

使用getServletInfo()方法来获取info属性的属性值。

Page指令

定义JSP文件中的全局属性。

页面指令定义了许多影响整个页面的重要属性。

单一的JSP页面可以包含多个页面指令,在过程中,所有的页面指令被制取出来并同时应用到同一个页面上。

然而在给定的JSP中,任何由页面指令定义的属性/值只能出现一次。

(除了import属性外,因为可以多次引入。

JSP语法:

page指令主要有如下属性:

[language="ScriptLanguage"]

[extends="package.class"]

[import="{package.class|package.*},..."]

[session="true|false"]

[buffer="none|8kb|sizekb"]

[autoFlush="true|false"]

[isThreadSafe="true|false"]

[info="text"]

[errorPage="relativeURL"]

[contentType="mimeType[;charset=characterSet]"|"text/html;charset=ISO-8859-1"]

[isErrorPage="true|false"]

例子

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

<%@pagebuffer="5kb"autoFlush="false"%>

<%@pageerrorPage="error.jsp"%>

描述

<%@page%>指令作用于整个JSP页面,同样包括静态的包含文件。

但是<%@page%>指令不能作用于动态的包含文件,比如

include>

你可以在一个页面中用上多个<%@page%>指令,但是其中的属性只能用一次,不过也有个例外,那就是import属性。

因为import属性和Java中的import语句差不多(参照JavaLanguage),所以你就能多用此属性几次了.

无论你把<%@page%>指令放在JSP的文件的哪个地方,它的作用范围都是整个JSP页面。

不过,为了JSP程序的可读性,以及好的编程习惯,最好还是把它放在JSP文件的顶部。

Include指令标签

Include指令:

在JSP页面内某处整体嵌入一个文件,使用该指令标签。

格式:

<%@includefile=“文件的名字”%>

作用:

在JSP页面出现该指令的位置处,静态插入一个文件,被插入的文件必须是可访问和可使用的。

即该文件必须和当前JSP页面在同一个Web服务目录中。

静态插入:

就是当前JSP页面和插入的部分合并成一个新的JSP页面,然后JSP引擎再将这个新的JSP页面转译成Java类文件。

注意:

新合成的JSP页面必须符合JSP语法规则。

Taglib指令

定义一个标签库以及其自定义标签的前缀。

JSP语法

<%@tagliburi="URIToTagLibrary"prefix="tagPrefix"%>

例子

<%@tagliburi="prefix="public"%>

loop>

……….

loop>

描述

<%@taglib%>指令声明此JSP文件使用了自定义的标签,同时引用标签库,也指定了他们的标签的前缀。

这里自定义的标签含有标签和元素之分。

因为JSP文件能够转化为XML,所以了解标签和元素之间的联系很重要。

标签只不过是一个在意义上被抬高了点的标记,是JSP元素的一部分。

JSP元素是JSP语法的一部分,和XML一样有开始标记和结束标记。

元素也可以包含其它的文本,标记,元素。

比如,一个jsp:

plugin元素有

plugin>开始标记和    

plugin>结束标记,同样也可以有

params>和

fallback>元素。

你必须在使用自定义标签之前使用<%@taglib%>指令,而且你可以在一个页面中多次使用,但是前缀只能使用一次

属性

1.uri="URIToTagLibrary" UniformResourceIdentifier(URI)根据标签的前缀对自定义的标签进行唯一的命名,URI可以是以下的内容:

●UniformResourceLocator(URL),由RFC2396定义,查看http:

//www.hut.fi/u/jkorpela/rfc/2396/full.html

●UniformResourceName(URN),由RFC2396定义一个相对或绝对的路径

2.prefix="tagPrefix"

在自定义标签之前的前缀,比如,在

loop>中的public,如果这里不写public,那么这就是不合法的。

请不要用jsp,jspx,java,javax,servlet,sun,和sunw做为你的前缀。

forward>

重定向一个HTML文件,JSP文件,或者是一个程序段。

JSP语法

forwardpage={"relativeURL"|"<%=expression%>"}/>

or

forwardpage={"relativeURL"|"<%=expression%>"}>

paramname="parameterName"

value="{parameterValue|<%=expression%>}"/>+

forward>

例子

forwardpage="/servlet/login"/>

forwardpage="/servlet/login">

paramname="username"value="jsmith"/>

forward>

描述

forward>标签从一个JSP文件向另一个文件传递一个包含用户请求的request对象.

forward>标签以下的代码,将不能执行.

你能够向目标文件传送参数和值,在这个例子中我们传递的参数名为username,值为scott,如果你使用了

param>标签的话,目标文件必须是一个动态的文件,能够处理参数.

如果你使用了非缓冲输出的话,那么使用

forward>时就要小心。

如果在你使用

forward>之前,jsp文件已经有了数据,那么文件执行就会出错.

属性

page="{relativeURL|<%=expression%>}"

这里是一个表达式或是一个字符串用于说明你将要定向的文件或URL.这个文件可以是JSP,程序段,或者其它能够处理request对象的文件(如asp,cgi,php).

paramname="parameterName"value="{parameterValue|<%=expression%>}"/>+

向一个动态文件发送一个或多个参数,这个文件一定是动态文件。

如果你想传递多个参数,你可以在一个JSP文件中使用多个

param>。

name指定参数名,value指定参数值。

getProperty>

getProperty>

获取Bean的属性值,用于显示在页面中

JSP语法

getPropertyname="beanInstanceName"property="propertyName"/>

例子

useBeanid="calendar"scope="page"class="employee.Calendar"/>

Calendarof

get

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

当前位置:首页 > 自然科学 > 物理

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

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