第4章JSP语法入门

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第4章JSP语法入门本章介绍JSP页面组成元素的语法及使用方法。从作用上看,JSP页面由三类元素组成:JSP标签、Java程序片和HTML标记组成。JSP标签控制JSP页面属性;java程序片实现逻辑计算;HTML标签创建用户界面。4.1Java程序片4.1.1Java程序片一般来说,使用java程序片实现逻辑计算。Java程序片有三种形式:实体定义、表达式和java代码块。使用实体前,首先要定义实体。下面是java程序片的定义和使用的语法格式。1.实体定义实体定义包括:变量定义、方法定义、类定义。⑴变量定义可以在%!和%标记符之间定义变量,在这种标记符之间定义的变量,通过JSP引擎转译为java文件时,成为某个类的成员变量。变量的类型可以是java语言允许的任何数据类型。这些变量在所定义的JSP页面内有效,即在本JSP页面中,任何java程序片中都可以使用这些变量。例如:%!intx,y=120,z;Stringstr=我是中国人;Datedate;%在%!和%标记符之间定义了5个变量,这5个变量都是全局变量。(2)方法定义在%!和%标记符之间定义方法。这些方法在所定义的JSP页面内有效,即在本JSP页面内,任何java程序片都可以调用这些方法。例如,定义一个方法,求n!.%!longjicheng(intn){longzhi=1;for(inti=1;i=n;i++)zhi=zhi*i;returnzhi;}%(3)类定义在%!和%标记符之间定义类。这些类在所定义的JSP页面内有效,即在本JSP页面内,任何java程序片都可以使用这些类创建对象。例如,定义一个圆类,求圆的面积和周长.%!publicclassCircle{doubler;Circle(doubler){this.r=r;}doublearea(){returnMath.PI*r*r;}doublezhou(){returnMath.PI*2*r;}}%2.表达式可以在%=和%标记符之间插入一个表达式,这个表达式必须能计算出数据值。(注意:%=是一个完整的符号,%和=不能有空格)。表达式的值由服务器负责计算,并将计算结果以字符串形式发送到客户端显示。例如:求x=a+b+c的值。%!inta=30;intb=40;intc=50;%%=a+b+c%表达式%=a+b+c%的作用,相当于先计算a+b+c的值,然后把结果输出到客户端。3.Java代码块可以在%和%标记符之间包含多个java语句,构成java代码块。一个JSP页面可以有许多java代码块,JSP引擎按顺序执行这些java代码块。在java代码块中定义的变量通过JSP引擎转译为java文件时,这些变量成为某个方法的变量,即局部变量。局部变量在本JSP页面内的所有java代码块中起作用(JSP页面转译为servlet源代码时,JSP页面内的所有java代码块合并到同一方法中)。[例1]计算并输出表达式的值。程序ex4_1.jsp代码如下:%!intd;//定义全局变量d%!--下面是第1个java代码块--%inta=30;//定义局部变量a%!--下面是第2个java代码块--%intb=30;//定义局部变量bintc=40;//定义局部变量cd=a+b+c;//计算表达式的值out.print(d);//输出d的值%本程序有两个java代码块。变量d是全局变量,在整个JSP页面内有效,a,b,c是局部变量,在本JSP页面内的所有java代码块中有效。本程序运行后输出100.4.1.2应用实例[例1]统计访问某页面的客户人数问题分析由于多个客户点击同一页面文件,只要在JSP页面程序中定义一个全局变量,作为统计客户的计数器,每当页面被点击执行时,使该变量加1。然后输出该计数器的值.程序结构程序名:21_1.jsp程序算法1.定义全局变量count并初始化.即count=02.页面每次被点击时使变量count加1,即count++3.把计数器的值输出到客户端,即%=count%程序代码%@pagecontentType=text/html;charset=GB2312%HTMLBODYBGCOLOR=cyanFONTsize=4%!intcount=0;%%count++;%P您是第%=count%个访问本站的客户。/FONT/BODY/HTMLBGCOLOR=cyan青绿色[例2]求10!,并输出该值。问题分析首先定义一个求N!的方法,然后通过java代码调用该方法计算10!的值,并输出到客户端程序结构程序名:21_2.jsp程序算法:1.定义方法longjiecheng(intn),该方法求n!。2.调用方法jiecheng(10),计算10!的值。3.通过表达式输出10!的值,即%=jiecheng(10)%。程序代码:%@pagecontentType=text/html;charset=GB2312%HTMLBODYbgcolor=red%!longjiecheng(intn){longzhi=1;for(inti=1;i=n;i++)zhi=zhi*i;returnzhi;}%P10!的阶乘是:%=jiecheng(10)%/BODY/HTML[例3]由客户提供圆的半径,计算圆的面积和周长问题分析:可以先定义一个圆类,该类包含计算面积和周长的方法。通过表单获得用户输入的圆的半径r,然后以半径r为参数创建一个圆对象,计算圆的面积和周长,最后输出计算结果。程序结构程序名:21_3.jsp程序算法:1.定义圆类Circle。2.使用表单创建用户输入界面,获得圆的半径r3.调用构造方法创建一个圆,计算圆的面积和周长4.输出圆的面积和周长[例4]求1到100的连续和,并输出到客户端。问题分析可以先定义一个求和的方法,然后调用该方法计算结果,并将结果输出到客户端。程序结构程序名:21_4.jsp程序算法1.定义求和方法:longcontinueSum(intn)2.调用求和的方法计算:sum=continueSum(100)3.输出sum[例5]计算并输出表达式程序结构:程序名:ex4_6.jsp程序代码:%@pagecontentType=text/html;charset=GB2312%HTMLBODYbgcolor=cyanFONTsize=2P3的平方是:%=Math.pow(3,2)%P5的平方根等于%=Math.sqrt(5)%/FONT/BODY/HTML4.2JSP标签一般使用JSP标签控制页面属性。JSP标签分为JSP注释、指令标签和动作标签三类。指令标签有page、include和taglib。动作标签主要有include、param、forward、plugin、useBean。4.2.1JSP标签格式:1.JSP注释注释本身不产生语句功能,只用来增强JSP文件的可读性,便于用户维护JSP文件。JSP注释分两种:HTML注释和JSP注释。(1)HTML注释JSP页面使用这种注释时,客户端通过浏览器查看JSP源文件时,能够看到HTML注释文字。其语法格式是:!--要注释的内容、文字、说明写在这里--(2)JSP注释使用这种注释时,JSP引擎编译该页面时会忽略JSP注释。下面是其语法格式:%--要注释的内容、文字、说明写在这里--%2.page指令标签page指令主要用来定义整个JSP页面的各种属性。一个JSP页面可以包含多个page指令,指令中,除了import属性外,每个属性只能定义一次,否则JSP页面编译将出现错误。下面是page指令格式:%@page[language=java][extends=classname][import=packname/classname][session=true/false][buffer=none/sizekb][autoFlush=true/false][isThreadeSafe=true/false][info=info_text][errorPage=error_url][isErrorPage=true/false][contentType=MIME_type][pageEncoding=]%本标签由多个属性名=属性值对构成,通过这种方式设置页面的属性。(1)language•language属性定义了JSP页面中所使用的脚本语言。目前JSP必须使用的是java语言,因此该属性的默认值为java,因此也要求JSP页面的编程语言必须符合java语言规则。Language属性设置如下:language=java(2)extends该属性定义JSP页面产生的Servlet所继承的父类。由于该属性将限制JSP引擎提供特定的超类,这些超类可能会改善所提供服务的品质,因此在使用该属性时必须十分注意。(3)import该属性和一般的java语言中的import关键字意义一样,它描述了脚本环境中要使用的类。(4)session该属性指定JSP页面是否参与一个Http会话,它的默认值是true,表示该属性所在的页面参与指定Http的会话。(5)buffer该属性指定输出到客户端的流的缓冲模式,如果属性值为none,将不缓冲,输出直接通过ServletResponse的PrintWriter输出。如果该属性值为一个数字,该数字就表示缓冲区的大小,它的单位是千字节。并且输出的大小至少不会小于这个值。通常,默认的缓冲区大小为8KB。(6)autoFlush该属性的默认值为true,表示当缓冲区满时,到客户端的输出将会自动刷新,若该属性为false,则当缓冲区满时,将会出现缓冲区溢出异常。需要注意的是,在buffer属性值取none的时候,autoflush属性值不能设置为false。因为当buffer取值为none时,表明没有设置缓冲区,因而JSP页面的jspWriter本身将会自动刷新缓冲区。(7)isThreadSafe该属性用来设置JSP页面是否可以多线程使用。默认值为true,如果采用默认值,则在运行JSP页面时,可能会同时接受多个客户的请求。当该属性取值为false时,一个JSP处理器将会逐个的接受客户的请求。(8)info在该属性中定义了一个任意的字符串,可以用来说明JSP页面中待说明的信息,该字符串将会直接加入到翻译好的页面中,可以通过Servlet.getservletInfo()方法获得该属性的值。(9)errorPage该属性用于表示当发生异常错误时调用的JSP页面,通常默认忽略。(10)isErrorPage该属性定义了当前的JSP页面是否为另外一个JSP页面错误显示的目标。(11)contentType该属性定义了JSP页面及其相应的字符编码以及JSP页面响应的MIME类型。对该属性设置的格式如下:TYPE;charset=CHARSET(需要注意的是分号后面有一空格)TYPE的默认值为text/html,字符编码的默认值为ISO-8859-1。MIME(MultipurposeInternetMailExtensions)类型就是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。(12)pageEncoding该属性描述JSP页面的字符编码,通常默认值为’’ISO-8859-1’’(13)isELIgnored该属性用来设置EL(ExpressionLanguage,表达语言,已纳入JSP2.0为标准规范之一)是否被忽略,如果取值为ture,则忽略EL表达式计算,反之则不忽略。该属性的默认值依据web.xml描述文件的版本确定,Servlet2.3以前的版本将忽略。3.include指令标签该指令标签的语法格式如下:%@includef

1 / 65
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功