班级资料-JSP标记_第1页
班级资料-JSP标记_第2页
班级资料-JSP标记_第3页
班级资料-JSP标记_第4页
班级资料-JSP标记_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三章JSP标记1JSP的三类标记JSP标记包括:指令标记动作标记自定义标记2§3.1指令标记指令标记常用的是“网页指令”,“包含指令”。它们包含在“<%@%>”卷标里。指令标记主要有:page指令include指令3§3.1.1page指令page指令定义整个JSP页面的一些属性。page指令的格式为:

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

也可写成多条指令的形式:

<%@page属性1=“值1”%> <%@page属性2=“值2”%>4page指令的属性page指令的属性有:language、import、contentType、session、buffer、autoFlush、isThreadSafe、info5语法格式如下:<%@page[language="java"][import="{package.class|package.*},..."][ contentType="text/html;charset=GB2312"][session="true|false"][buffer="none|8kb|sizekb"][autoFlush="true|false"][isThreadSafe="true|false"][info=“wearetheworld"]%>6page指令说明<%@page%>指令作用于整个JSP页面,包括静态的包含文件;但是不能作用于动态的包含文件。可以在一个页面中用上多个“<%@page%>”指令,但其中的属性只能用一次,import属性例外。无论把<%@page%>指令放在JSP的文件的哪个地方,它的作用范围都是整个JSP页面,通常放在文件顶部。7page指令的contentType属性定义JSP页面字符的编码。格式:<%@pagecontentType=“text/html;charset=gb2312”%>表示用HTML解析器来显示页面信息。contentType的默认值为:<%@pagecontentType=“text/html;charset=iso-8859-1”%>8例:a.jsp:<%@pagecontentType="text/html;charset=gb2312"%> ……b.jsp:<%@pagecontentType=“application/msword;charset=gb2312"%> ……c.jsp:<%@pagecontentType=“application/x-msexcel;charset=gb2312"%> ……9page指令的import属性为JSP页面引入Java包中的类,可以为该属性指定多个值:<%@pageimport=“java.io.*”import=“java.util.*”%>也可以使用多个page指令为import属性指定几个值:<%@pageimport=“java.io.*”%><%@pageimport=“java.util.*”%>注:除import属性外,其它属性只能被指定一个值。10page指令的import属性在jsp文件中,下面包中的类会自动导入,所以不必再显式的导入:java.lang.*javax.servlet.*javax.servlet.jsp.*javax.servlet.http.*

11page指令的language属性声明脚本语言的种类,目前只能是java格式:

<%@pagelanguage=“java”%>12page指令的session属性session属性值为逻辑型,表示是否使用内置对象session。格式:

<%@pagesession="true"%>默认值为true。13page指令的info属性该属性为JSP页面准备一个字符串,属性值是某个字符串,如:<%@pageinfo=“Howdoyoudo?”%>在页面中使用getServletInfo()方法获取info属性的值。14page指令的info属性<%@pagecontentType="text/html;charset=GB2312"%><%@pageinfo="Howdoyoudo?"%><bodybgcolor=cyan> info属性的值是:

<p>

<%Strings=getServletInfo(); out.println(s); %>

</body>15page指令的isThreadSafe属性逻辑型值,为true时,CPU的使用权在各个线程间切换;为false时,一个线程执行完后才能执行其它线程。格式:

<%@pageisThreadSafe="true"%>默认值为true16§3.1.2include指令在JSP页面内出现该指令处静态嵌入一个文件。格式:

<%@includefile=“文件名”%>17例:<%@pagecontentType="text/html;charset=gb2312"%><body>

下面是include的文件:<p>

<%@includefile="hello.txt"%> <%@includefile="dir/hello.txt"%> <%@includefile="/dir/hello.txt"%>

//上面两行均表示dir位于当前web服务目录下。</body>18include指令说明所谓静态嵌入就是当前JSP页面和嵌入的部分合并成一个新的JSP页面,然后JSP引擎编译这个新页面。因此被嵌入的文件必须符合JSP语法规则,否则主体程序的编译不能通过。静态嵌入的文件其实是主体文件的一部分,page指令的约束是有效的。19例:<%@pagecontentType="text/html;charset=GB2312"%><HTML><BODYBgcolor=cyan><p>输入一个正数,求其平方根:

<%@includefile="b.jsp"%></BODY></HTML>20<%@pagecontentType="text/html;charset=GB2312"%><FORMaction=""method=post><INPUTtype="text"name="txt"><inputtype="submit"value="提交"></FORM><%Strings=request.getParameter("txt"); if(s!=null){ try{ doublenumber=Integer.parseInt(s); out.print("<P>"+Math.sqrt(number)); } catch(NumberFormatExceptione){ out.print("<P>"+"请输入数字字符"); } }%>b.jsp:21§3.2动作标记动作标记主要有:includeparamforwardpluginuseBean22§3.2.1include标记动态包含一个文件:静态文件(txt、html)或动态文件(jsp)。格式:

<jsp:includepage=“文件名”/>

或者:

<jsp:includepage=“文件名”>

子标记

</jsp:include>注:不需要子标记时必须使用第一种形式。23例:包含文件hello.txt<%@pagecontentType="text/html;charset=GB2312"%><bodybgcolor=cyan> <H3>hello.txt文件的内容是:</H3> <hr><br>

<jsp:include

page="hello.txt"/></body>24比较:<%@includefile=“文件名”%><jsp:include

page=“文件名”/>指令标记是将静态嵌入文件作为主体文件的一部分,所以主文件和子文件其实是一体。动作标记是动态嵌入文件,子文件不必考虑主文件的属性。指令标记在编译时就将子文件载入。动作标记在运行时才将子文件载入。25§3.2.2param标记param标记的功能是传递数据,需要放置在一对<jsp:include>、</jsp:include>标记之间。也可与forward、plugin标记一起使用。param标记不会单独出现。格式为:<jsp:paramname=“变量名”value=“变量值”/>26例:用param标记传递数据<%@pagecontentType="text/html;charset=GB2312"%><bodybgcolor=cyan> <H3>动态包含b.jsp文件:</H3> <hr><br>

<jsp:include

page="b.jsp"> <jsp:param

name="txt"value="10000"/> </jsp:include></body>27b.jsp内容:<%@pagecontentType="text/html;charset=GB2312"%><body> <% Strings=request.getParameter("txt");

int

d=Integer.parseInt(s); longsum=0;

for(int

i=1;i<=d;i++)

sum+=i; %>

Sum=<%=sum%></body>28例:动态包含文件<bodybgcolor=cyan>

动态包含文件b.jsp:<P> <hr> <jsp:includepage="b.jsp"> <jsp:paramname="txt"value="300"/> </jsp:include> <hr> <formmethod="post"action="b.jsp"> <inputtype="text"name="txt"> <inputtype="submit"value="提交"> </form></body>29b.jsp:<%@pagecontentType="text/html;charset=gb2312"%><% Strings=request.getParameter("txt"); out.println("youinput:"+s);%>30§3.2.3forward标记Forward标记具有导向功能,可导向该标记所指网页,同时也具有传递数据的功能。格式:

<jsp:forward

page=“要转向的页面”/>

或者:

<jsp:forward

page=“要转向的页面”>

子标记

</jsp:forward>

注:不需要子标记时必须使用第一种形式。31例:导向b.jsp<%@pagecontentType="text/html;charset=GB2312"%><bodybgcolor=cyan> <H3>forward动作标签练习</H3> <hr><br>

<jsp:forward

page="b.jsp"/>

</body>32b.jsp内容:<%@pagecontentType="text/html;charset=GB2312"%><bodycolor=cyan> <CENTER> <FONTSIZE="7"COLOR="red">被导向页面</FONT> </CENTER></body>33<jsp:forward>标记语法格式总结:1.<jsp:forwardpage={"relativeURL"|"<%=expression%>"}/>2.<jsp:forwardpage={"relativeURL"|"<%=expression%>"}>

<jsp:paramname="parameterName"value="{parameterValue|<%=expression%>}"/> [<jsp:param…/>]</jsp:forward>注:[<jsp:param…/>]表示可以有多个<jsp:param>标记。34<%@pagecontentType="text/html;charset=gb2312"%><body><%doublei=Math.random();%><jsp:forwardpage="redirect.jsp"><jsp:paramname="num"value="<%=i%>"/></jsp:forward></body>35§3.2.4plugin标记plugin标记的功能是加载JavaApplet.36例:加载applet<%@pagecontentType="text/html;charset=GB2312"%><body> <FONTSIZE="4"COLOR="red">

加载JavaApplet </FONT> <hr><br>

<jsp:plugintype="applet"code="a.class”width=“400”height=“300”/></body>37§3.3自定义标记自定义标记主要是tag标记。38§3.3.1tag文件tag文件是以.tag为扩展名的文件,结构与jsp文件几乎相同,其目的是为了实现代码复用。tag文件中可以有HTML标记、某些特殊的指令标记、成员变量和方法的声明、Java程序片、Java表达式。tag文件可以方便的被jsp文件调用,但是用户不能通过Tag文件所在的Web服务目录直接访问它。39§3.3.2tag文件的存放tag文件的存放位置:

tag文件必须放到“Web服务目录\WEB-INF\tags”或其下级目录中才能被调用。WEB-INF和tags都是固定的目录名称,而tags下的子目录可由用户命名。40§3.3.3tag标记编写了一个tag文件并保存到特定目录中后,也就自定义了一个标记,格式为:

<tag文件名/>

或:

<tag文件名>

标记体

</tag文件名>一个tag文件对应着一个标记,称为tag标记,存放在同一目录中的tag文件所对应的tag标记的全体称为一个自定义标记库,简称标记库。41§3.3.4tag文件的使用JSP页面通过tag标记调用一个tag文件分为两步:第一步:使用<taglib>指令引入该Web服务目录下的标记库。<taglib>指令格式:

<%@

taglib

tagdir=“标记库目录”prefix=“前缀”%>一个JSP页面可以使用几个<taglib>指令标记引入多个标记库,例如:<%@taglibtagdir="/WEB-INF/tags"prefix="beijing"%><%@taglibtagdir="/WEB-INF/tags/tj"prefix="tianjin"%>42§3.3.4tag文件的使用第二步:用带前缀的Tag标记调用相应的Tag文件,其中的前缀由<taglib>指令中的prefix属性指定。

<前缀:tag文件名/>

或:

<前缀:tag文件名>

标记体

</前缀:tag文件名>43例:调用tag文件(a.jsp)<%@pagecontentType="text/html;charset=gb2312"%><%@taglib

tagdir="/WEB-INF/tags"prefix="test"%><%@taglibtagdir="/WEB-INF/tags/mytag"prefix="my"%><body>

调用Hello.tag文件结果:<p>

<test:Hello

/> <my:Hello/></body>44Hello.tag文件<body> Hello,tagworld!</body>45例:调用tag文件计算(a.jsp)<%@pagecontentType="text/html;charset=gb2312"%><%@taglib

tagdir="/WEB-INF/tags"prefix="test"%><body>

先调用ContinueSum.tag文件<p>

<test:ContinueSum/> <p>

再调用PrimeNum.tag文件<p>

<test:PrimeNum/></body>46ContinueSum.tag<body>

<% Strings="此tag文件求1到100连加和:";

Stringmsg=newString(s.getBytes("iso-8859-1"),"gbk"); out.println(msg+"<p>");

int

i,s=0;

for(i=1;i<=100;i++)

s+=i;

out.println("sum="+s); %></body>47PrimeNum.tag<body>

该tag文件计算100以内的素数:<br> <% int

i,j;

for(i=2;i<=100;i++){ for(j=2;j<=Math.sqrt(i);j++){

if(i%j==0)break; }

if(j>Math.sqrt(i))out.println(i+","); } %></body>48如果JSP页面要向tag文件传递信息,可以使用带有标记体的tag标记来执行tag文件,标记体会传给相应的tag文件,格式为:

<前缀:tag文件名>

标记体

</前缀:tag文件名>Tag文件使用<jsp:doBody/>标记来获得jsp页面传过来的标记体。tag标记的标记体49例:向tag文件传递数据<%@pagecontentType="text/html;charset=gb2312"%><%@taglib

tagdir="/WEB-INF/tags"prefix="test"%><body>

<test:Show>

Hello,world! </test:Show></body>50Show.tag<body> <%

for(inti=0;i<3;i++){ %> <H1>

<jsp:doBody/> </H1> <% } %></body>51§3.3.5tag文件中的常用指令Tag文件中常用的指令有:tag,taglib,include,attribute,variable等。其中taglib用于指明标记库的位置;

include类似jsp文件的include指令标记。521、tag指令tag指令类似jsp文件的page指令,tag文件通过tag指令指定某些属性的值,以便从总体上影响tag文件的表示和处理。tag指令的格式:

<%@tag属性1=“值1”属性2=“值2”…%>531、tag指令在一个tag文件中可以使用多条tag指令,因此可以用多条tag指令为属性指定需要的值:<%@tag属性1="属性值"%><%@tag属性2="属性值"%>……<%@tag属性n="属性值"%>541、tag指令tag指令的常用属性有:body-contentlanguageimportpageEncoding551、tag指令(一)tag指令的body-content

属性body-content属性可以设置JSP页面在使用该Tag标记时是否允许有标记体,还可设置对标记体的要求和处理方式。该属性有三个值:empty,scriptless(默认),tagdependent。empty表示没有标记体,只能以<tag文件名/>形式调用tag文件。561、tag指令为scriptless时,还可以用

<tag文件名>

标记体

</tag文件名>

形式调用tag文件,但标记体中不能有Java程序片、表达式。(可以有指令标记、动作标记)。571、tag指令为tagdependent时,可用上述两种形式调用tag文件,但只处理标记体中的纯文本。

不处理程序片、表达式、jsp指令标记、jsp动作标记。58例:body-content取不同值的区别a.jsp:<%@pagecontentType="text/html;charset=gb2312"%><%@taglib

tagdir="/WEB-INF/tags"prefix="test"%><body>

<test:Show> Hello <jsp:includepage=“a.txt”/> </test:Show></body>59Show.tag<%@tagbody-content=“empty/scriptless/tagdependent"%><body>

<jsp:doBody/></body>1.取值empty时,a.jsp不能正常执行2.取值scriptless时,显示Hello与a.txt的内容3.取值tagdependent时,显示字符串Hello60例:body-content取不同值的区别<test:Show> Hello

<%=“ok”%></test:Show>若标记体有程序片或表达式:1.取值empty时,a.jsp不能正常执行2.取值scriptless时,a.jsp不能正常执行3.取值tagdependent时,显示字符串Hello611、tag指令(二)tag指令的

language属性language属性指定tag文件使用的脚本语言,目前只能为java,其默认值就是java。如:<%@taglanguage=“java”%>621、tag指令(三)tag指令的

import属性为tag文件引入包中的类,可以在tag文件的程序片部分、变量及方法声明部分、表达式部分使用这些类。如:<%@tagimport=“java.util.*”%>631、tag指令在tag文件中,下面包中的类会自动导入,所以不必再显式的导入:java.lang.*javax.servlet.*javax.servlet.jsp.*javax.servlet.http.*

641、tag指令(四)tag指令的pageEncoding属性指定tag文件的字符编码,默认是ISO-8859-1,改变方法为:<%@tagpageEncoding="gb2312"%>652、include指令tag文件中的include指令标记,其用法与用途与jsp文件中的include指令标记类似。格式:

<%@includefile="a.txt"%>其中a.txt与tag文件在同一目录下。/a.txt

表示a.txt在Web服务目录下。663、attribute指令在tag文件中使用attribute指令,可以动态的向该tag文件传递数据。格式:

<%@attributename=“变量名”required=“true|false”type=“值的类型”%>其中name属性是必须的,是变量的名字;required属性与type属性是可选的。673、attribute指令jsp页面向tag文件中的变量传递值的方法为:格式1:

<前缀:tag文件名变量名=“值”…/>格式2:

<前缀:tag文件名变量名=“值”…>

标记体

</前缀:tag文件名>683、attribute指令required属性的默认值是false,表示调用该tag文件时可以不为该属性赋值,为true时必须为该属性赋值。type属性表示变量的类型,默认为String类型。也可以是其它类型,例如:type="java.util.Date"69例:利用tag文件求三角形面积<%@pagecontentType="text/html;charset=gb2312"%><%@taglib

tagdir="/WEB-INF/tags"prefix="test"%><body>

<test:Area

sidea="3"sideb="4"sidec="5"/></body>70Area.tag<%@attributename="sidea"required="true"%><%@attributename="sideb"required="true"%><%@attributename="sidec"required="true"%

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论