版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
3.1JSP页而的基本结构JSP页面的基本结构包括注释、代码段、声明和表达式。3.1.1变量和方法的声明
JSP的声明可以用来定义变量,在声明元素中声明的变量和方法在JSP页面初始化时被初始化。语法格式:<%!declaration;[declaration;]…%>或<%!声明;[声明;]…%>]下一页返回3.1JSP页而的基本结构
说明:声明将要在JSP程序中用到的变量和方法。必须这样做,不然会出错。可以一次性声明多个变量和方法,只要以“;”结尾就行,当然这些声明在Java中必须是合法的。当声明方法和变量时,需要注意以下的一些规则。
(1)声明必须以“;”结尾(scriptlet有同样的规则,但是表达式就不同了)。
(2)可以直接使用在<%@page>中被包含进来的己经声明的变量和方法,不需要对它们重新进行声明。
(3)一个声明仅在一个页面中有效。如果想每个页面都用到一些声明,最好把它们写成一个单独的文件,然后用<%@include>或<jsp:include>元素包含进来。上一页下一页返回3.1JSP页而的基本结构3.1.2JSP表达式表达式用于输出单个变量或某个计算的结果,可以将某个计算结果转换成一个字符串并目直接使用在输出页面上。表达式可以包含任何Java语言表达式,只要表达式可以求值即可。表达式的语法格式:<%=expression>或<%=表达式%>
当在JSP中使用表达式时需要记住以下几点。
(1)不能用一个分号(“;”)来作为表达式的结束符。
(2)有时候表达式也能作为其他JSP元素的属性值。
(3)一个表达式能够变得很复杂,它可能由一个或多个表达式组成,这些表达式的顺序是从左到右。上一页下一页返回3.1JSP页而的基本结构3.1.3码段代码段是JSP中的代码部分,即Java程序的一段代码,几乎可以使用任何Java语法,它可以使用JSP页面所定义的变量、方法、表达式或JavaBean。代码段语法格式:<%codefragment%>或<%代码%>上一页下一页返回3.1JSP页而的基本结构3.1.4JSP注释图3-2程序运行结果任何程序都有注释,JSP也不例外。JSP中的注释有两种,一种称为HTML式注释,它会在客户端显小;另一种是隐藏注释,它写在JSP程序中,只有服务器端的开发人员才能看到。1.HTML式注释语法格式:<!--comment[<%=expression%>]-->2.隐藏注释语法格式:<%--comment-->或<%/*comment*/%>上一页返回3.2JSP指令3.2.1page指令page指令用来设置整个JSP页面的相关属性和功能,其基本语法如下:<%@page[language="java"][extends="package.class"][import="{package.class}.*},…”[session="true}false"][buffer="none}8kb}sizekb"]下一页返回3.2JSP指令[autoFlush="true}false"][isThreadSafe="true}false"][info="text"][errorPage="relativeURL"][contentType="mimeType[;charset=characterSet]""text/HTML;charset=ISO-8859-1”1[isErrorPage="true}false"]%>page指令包含了很多属性,属性说明见表3-1。上一页下一页返回3.2JSP指令3.2.2include指令
include指令在JSP页面被编译成Servlet时引入程序员期望包含的HTML文件或JSP文件(也可能是其他类型的文件,具体允许包含哪些类型的文件击要根据服务器的情况而定)。
include指令的基本语法如下:<%@includefile="relativeURL"%>
说明:(1)file属性指向击要引用的HTML页面和JSP页面,但是击要注意该页面的路径必须是相对的,否则会出错。上一页下一页返回3.2JSP指令(2)include指令在JSP文件中插入一个包含文本和代码的文件。被包含的文件可以是JSP文件,HTML文件或文本文件。如果被包含的文件是JSP文件,则JSP引擎编译完该JSP文件后,执行的结果将插入到主JSP文件中include指令所在的位置。如果被包含的文件是HTML文件或文本文件,则JSP引擎不对其进行编译,直接将其内容插入到主JSP文件中include指令所在的位置。该包含是静态包含,即被包含的文件处理完,而且结果也插入到主JSP文件完毕,主JSP文件将继续执行include指令下面的内容。上一页下一页返回3.2JSP指令(3)被包含的文件中不能含有<HTML>,</HTML>,<body>,或</body>标签。因为被包含的文件的全部内容将被插入到JSP文件中include指令所在的地方,这些标签将会同JSP文件中己有的同样的标签发生冲突。
(4)假如被包含的文件发生变化,主JSP页面将被重新编译。3.2.3taglib指令
taglib指令是JSP1.1规格中新增的功能,它允许用户自定义新的标签,就如同XML那样。taglib指令的基本语法如下:上一页下一页返回3.2JSP指令<%@tagliburl="relativetagLibURL"prefix="tagPrefix"%>其中url属性用来指明自定义标签库的存放位置。tagPrefix是为了区分不同标签库中的相同标签名,就如同包名和类名的关系。下面的例子显小了如何用定制的标签来产生动态内容,在这种情况下并不击要引入Java类、声明变量或者}5写任何Java代码。上一页返回3.3JSP动作3.3.1include动作include动作是向当前页面加入另一文件的方法。该动作把指定文件插入正在牛成的页面中。其语法如下:jsp:includepage="relativeURL"flush="true"/>
前面已经介绍过include指令,它是在JSP文件被转换成Servlet的时候引入文件,而这单的jsp:include动作不同,插入文件的时间是在页面被清求的时候。jsp:include动作的文件引入时间决定了它的效率要稍微差一点,而且被引用文件不能包含某些JSP代码(例如不能设置HTTP头),但它的灵活性却要好得多。下一页返回3.3JSP动作
例如,下面的JSP页面把3则新闻摘要插入一个JSP页面。改变新闻摘要时只需改变这3个文件,而主JSP页面却可以不做修改。3.3.2forward动作jsp:forward动作把清求转到另外的页面。jsp:forward标记只有一个属性pageopage属性包含的是一个相对URLopage的值既可以直接给出,也可以在清求的时候动态计算,如下面的例子所小:<jsp:forwardpage="/utils/errorReporter.asp/><jsp:forwardpage="<%=someJavaExpression%>上一页下一页返回3.3JSP动作3.3.3param动作
<jsp:param>用来提供参数信息,其基本语法是:jsp:paramname="parameterName"value="parameterValue">其中,name属性是参数的名称,value属性是参数值。上一页下一页返回3.3JSP动作3.3.4useBean动作前面已经介绍过include指令,它是在JSP文件被转换成jsp:useBcan动作时用来装载一个将在JSP页面中使用的JavaBean。这个功能非常有用,因为它使得我们既可以发挥Java组件重用的优势,同时也避免了损失JSP区别于Servlet的方便性。此动作用来生成一个bean组件,并设定它的id号及使用范围。上一页下一页返回3.3JSP动作jsp:useBeanid="beanName"scope="page}request}session}application}"class="package.class"type="package.class"beanName="{package.class}<%=expression%>}type="package.class""/>id="beanName"定义生成bean组件的名字,不能贡名A.scope的值也最好一样,否则JSP引擎将认定最先被创建的那个。上一页下一页返回3.3JSP动作scope="page}request}session}application":定义bean的活动范围,bean只有在它定义的范围!.才能使用,在它的活动范围外将尤法访问到它。
JSP为它设定的范围有以下几个。
(1)page:bean的默认使用范围。
(2)request:作用于任何相同请求的JSP文件中,直到页面执行完毕向客户端发回响应或在此这之前已通过某种方式(如贡定向、链接等方式)转到另一个文件为止。还可通过使用Request对象访问bean,如request.getAttribute(beanName)。上一页下一页返回3.3JSP动作(3)session:作用于整个session的生存周期内,在session的生存周期内,对此bean属性的任何改动,都会影响到在此session内的另一page,另一request对此bean的调用。但必须在创建此bean的文件单事先用page指令指定了session=true。(4)application:作用于整个application的生存周期内,在application周期内,对此bean属性的任何改动,都会影响到此application内另一page,另一request以及另一session对此bean的调用。上一页下一页返回3.3JSP动作class="package.class"用class属性指向的类示例一个bean,其中package名必须是类单用关键字package指定的。
type="package.class"class="package.class"type="package.class"eanName="{package.class}<%=expression%>}”type="package.class"
如:jsp:useBeanid="name"class="package.class"/>
这行代码的含义是:创建一个由class属性指定的类的实例,然后把它绑定到其名字由id属性给出的变量上。不过,就像接下来会看到的,定义一个scope属性可以让bean关联到更多的页面。此时,jsp:useBean动作只有在不存在同样id和scope的bean时才创建新的对象实例,同时,获得现有bean的引用就变得很有必要。上一页下一页返回3.3JSP动作
注:scope=“page”时,运行testBean.jsp文件,name的初始值为”aaaa“。虽然在jsp文件中又贡设为,‘w11”,但刷新后仍为”aaaa“。
scope=“session‘,时,运行test.jsp文件,name的初始值为”aaaa“。虽然在jsp文件中又贡设为”w11“,但刷新后仍为”w11“,只要不关闭此窗口,任何刷新或打开一个新窗口,都输出”w11“。直到关闭所有窗口,再运行testBean.jsp文件,输出才会为初始值”aaaa“。
scope=“application‘,时,运行testBean.jsp文件,name的初始值为”aaaa“。虽然在jsp文件中又贡设为”w11“,但刷新后仍为”w11“,只要不关闭此窗口,任何刷新或打开一个新窗口,都输出“w11”。即使关闭所有窗口,再运行testBean.jsp文件,输出仍为”w11“。除非关闭服务后又重启,再运行testBean.jsp文件,name的输出为初始值”aaaa“。上一页下一页返回3.3JSP动作scope=“request‘,时,新建一文件testBcanl.jsp内容与testBean.jsp一样。先在浏览器中运行testBean.jsp文件,输出name的值为初始值”aaaa“。再在在浏览器中运行testBean.jsp文件,此时输出为”w11“,因为它们算是相同的request。
3.3.5setProperty动作
jsp:setProperty用来设置已经实例化的bean对象的属性,有两种用法。首先,可以在jsp:useBean元素的外面}}u面)使用jsp:setProperty,如下所小:上一页下一页返回3.3JSP动作<jsp:useBeanid="myName”…/><jsp:setPropertyname="myName”property="someProperty"…/>此时,不竹jsp:useBean是找到了一个现有的bean实例,还是新创建了一个beanjspaetProperty都会执行。第一种用法是把jsp:setProperty放入jsp:useBcan元素的内部,如下所小:<jsp:useBeanid="myName”二‘><jsp:setPropertyname="myName”︸property=”someProperty”</jsp:useBean>上一页下一页返回3.3JSP动作
此时,jsp:setProperty只有在新建bean实例时才会执行,如果是使用现有实例则不执行jspaetProperty。
jsp:setProperty动作有下面4个属性。
(1)name:name属性是必需的。它表示要设置属性的是哪个bean。
(2)property:property属性是必需的。它表示要设置哪个属性。有一个特殊用法:如果property的值是“*”,表示所有名字和bean属性名字匹配的请求参数都将被传递给相应的属性set方法。上一页下一页返回3.3JSP动作(3)value:value属性是可选的。该属性用来指定bean属性的值。字符串数据会在目标类中通过标准的valueOf()方法自动转换成数字,boolean}BooleanbyteBytecharCharactero例如,booleanIIIBoolean类型的属性值(比如“true”)通过Boolean.valueOf()转换,int和Integer类型的属性值(比如“42”)通过Integer.valueOf()转换。Value和param不能同时使用,但可以使用其中任意一个。
(4)param:param是可选的。它指定用哪个请求参数作为bean属性的值。如果当前请求没有参数,则什么事情也不做,系统不会把null传递给bean属性的set方法。因此,可以让bean自己提供默认属性值,只有当清求参数明确指定了新值时才修改默认属性值。上一页下一页返回3.3JSP动作
例如,下面的代码片断表小:如果存在numltems清求参数的话,把numberOfltems属性的值设置为清求参数numltems的值;否则什么也不做。
<jsp:setPropertyname="orderBean"property="numberOfItems”param="numItems”/>
如果同时省略value和param,其效果相当于提供一个paramA其值等于property的值。进一步利用这种借助清求参数和属性名字相同进行自动赋值的思想,还可以在propertyCbean属性的名字)中指定“*”,然后省略value和param。此时,服务器会查看所有的bean属性泪I清求参数,如果两者名字相同则自动赋值。上一页下一页返回3.3JSP动作如:前例中student组件,在setProperty中设定的属性<jsp:setPropertyname="student”property="classno”value="56789”/><jsp:setPropertyname=”student”property="name”value="bbbb"/><jsp:setPropertyname=”student”property="aqe”value="33”/>等价:<%Student.age=33;%>输出结果为:56789bbbb33上一页下一页返回3.3JSP动作3.3.6getProperty动作
jsp:getProp
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 谐振耦合多载式无线电能传输系统:原理、特性与优化策略研究
- 2026江苏苏州高新区国有资本控股集团有限公司下属企业招聘5人笔试参考题库及答案详解
- 语境赋能:大学英语口语教学的创新与实践
- 语块赋能:中学英语阅读教学的创新与突破
- 2026山东临沂财贸学校招聘考试模拟试题及答案详解
- 译者主体性视角下《骆驼祥子》“京味”词翻译的多维剖析
- 词块教学法:开启高中英语阅读教学新范式
- 2026河北衡水武邑县圈头乡卫生院招聘见习人员3名笔试模拟试题及答案详解
- 2026年浦东新区公办学校储备教师教辅招聘笔试模拟试题及答案详解
- 第1章 人力资源管理概述
- 2026年湖南省政工专业职称考试(中国近现代史)练习试题及答案
- 2026年云南交投集团曲靖管理处分公司收费员等岗位招聘(招募)(140人)考试备考试题及答案解析
- 2026年天津市公安医院医护人员招聘笔试备考试题及答案解析
- 2026年人教版四年级语文下册期末考试题及答案
- 2026年中国兵器审计中心(西安中心)招聘(5人)笔试备考题库及答案解析
- 2024-2025学年广东省五校高一下学期期末联考化学试题含答案
- 2026年中考生物会考全四册核心知识点梳理
- 中国生育报告2026
- 2026中国焦糖色素市场营销前景展望及投资价值创新性研究报告
- 青海中考:政治高频考点
- 2026年高校教师资格证题库综合试卷及参考答案详解【新】
评论
0/150
提交评论