您好,欢迎访问三七文档
JSP语法一、变量和方法的声明变量和方法的声明:%!和%标记符号之间声明变量和方法1.声明变量%!inta,b=10,c;Stringtom=null,jerry=“lovejsp”;Datedate;%在”%!”和”%”标记之间声明的变量在整个JSP页面内都有效,这些变量的内存空间直到服务器关闭后才释放。当多个客户请求一个JSP页面时,JSP引擎为每个客户启动一个线程,这些线程由JSP引擎服务器来管理,这些线程共享JSP页面的成员变量,因此任何一个用户对JSP页面成员变量操作的结果,都会影响到其他用户。例如:Example2_2.jsp%@pagecontentType=text/html;charset=GB2312%HTMLBODYBGCOLOR=cyanFONTsize=1%!inti=0;%%i++;%P您是第%=i%个访问本站的客户。/BODY/HTML一、变量和方法的声明一、变量和方法的声明在处理多线程问题时,必须注意这样一个问题,当两个或多个线程同时访问同一个共享变量,并且其中一个线程需要修改这个变量时,我们应对这样的问题作出处理,否则可能发生混乱。在Java语言中,当处理线程同步时,可以将线程共享的变量放入一个synchronized块中,或将修改该变量的方法用synchronized来修饰。这样当一个客户用synchronized块或synchronized方法操作一个共享变量时,其他线程必须等待,直到该线程执行完该方法或同步块。2.方法的声明“%!”和”%”之间声明方法,该方法在整个JSP页面内有效,但是该方法内定义的变量只在该方法内有效。这些方法将在Java程序片中被调用,当方法被调用时,方法内定义的变量被分配内存,调用完毕即可释放所占的内存。%!intnumber=0;synchronizedvoidcountPeople(){number++;}%%countPeople();//在程序片中调用方法。%PP您是第%=number%个访问本站的客户。一、变量和方法的声明一、变量和方法的声明例如:Example2_6计算PI利用公式PI/4=1-1/3+1/5-1/7+1/9-……%!doublesum=0,i=1,j=1;longnumber=0;synchronizedvoid帮助计算PI(){number++;sum=sum+i/j;j=j+2;i=-i;}%%帮助计算PI();%Pfont一、变量和方法的声明3.声明类可以在“%!”和“%”中间声明一个类,该类在JSP页面内有效,即在JSP页面的Java程序片部分,可以使用该类创建对象。例如,下例中定义了一个Circle类,该类的对象负责求圆的面积和周长。当客户向服务器提交圆的半径后,该对象负责计算面积和周长。一、变量和方法的声明%!publicclassCircle{doubler;Circle(doubler){this.r=r;}double求面积(){returnMath.PI*r*r;}double求周长(){returnMath.PI*2*r;}}%一、变量和方法的声明%Stringstr=request.getParameter(cat);doubler;if(str!=null){r=Double.valueOf(str).doubleValue();}else{r=1;}Circlec=newCircle(r);//创建对象。%%=c.求面积()%%=c.求周长()%二、Java程序片可以在“%”和“%”之间插入Java程序片。一个JSP页面可以有许多程序片,这些程序片将被JSP引擎按顺序执行。有时候可以将一个程序片分割成几个更小的程序片,然后在这些小的程序片之间再插入JSP页面的一些其他标记元素。当多个客户请求一个JSP页面时,JSP引擎为每个客户启动一个线程,一个客户的局部变量和另一个客户的局部变量会被分配不同的内存空间。因此,一个客户对JSP页面的局部变量操作的结果,不会影响到其他客户的这个局部变量。三、表达式可以在“%=”和“%”之间插入一个表达式(注意:不可插入语句,“%=”是一个完整的符号,“%”和“=“之间不能有空格),这个表达式必须能求值。表达式的值由服务器负责计算,并将计算结果用字符串的形式发送给客户端显示。例如:%=request.getParameter(“txt”)%%=Math.sin(0.9)%%=910%五、JSP指令标签1.Page指令page指令用来定义整个JSP页面的一些属性和这些属性的值。例如,可以用page指令定义JSP页面的contentType属性的值为“text/html;charset=gb2312”,这样页面就可以显示标准的汉语。例如:%@pagecontentType=text/html;charset=GB2312%page指令的格式:%@page属性1=“属性1的值“属性2=“属性2的值”……%属性值总是用单引号或双引号括起来。五、JSP指令标签•Language属性•Import属性•contentType属性•Session属性•buffer属性•autoFlush属性•isThreadSafe属性•Info属性五、JSP指令标签•Language属性定义JSP页面使用的脚本语言,该属性的值目前只能取java.Language属性的默认值是java。%@pagelanguage=“java”%•Import属性该属性的作用是为JSP页面引入Java核心包中的类,这样就可以在JSP页面的程序部分、变量及函数声明部分、表达式部分使用包中的类。可以为该属性制定多个值,该属性的值可以是Java某包中的所有类或一个具体的类。%@pageimport=“java.io.*”%%@pagelanguage=“java.util.Date”%五、JSP指令标签•contentType属性定义JSP页面响应的MIME(MultipurposeInternetMailExtention)类型和JSP页面的字符编码。属性值的一般形式是:“MIME类型”或“MIME类型;charset=编码”,例如:%@pagecontentType=text/html;charset=GB2312%contentType属性的默认值是“text/html;charset=ISO-8859-1”•Session属性用于设置是否需要使用内置的session对象,其属性值可以是true或false,默认为true。五、JSP指令标签•Buffer属性内置输出流对象out负责将服务器的某些信息或运行结果发送给客户端显示,buffer属性用来指定out设置的缓冲区的大小或不使用缓冲区。Buffer属性可以取值none,设置out不使用缓冲区,buffer属性的默认值为8kb。例如:%@pagebuffer=“24kb”%•autoFlush属性指定out的缓冲区被填满时,缓冲区是否自动刷新,其取值可以是true或false,默认为true。五、JSP指令标签•isThreadSafe属性用来设置JSP页面是否可以多线程访问。可以取值为true或false。当其取true时,JSP页面能同时相应多个客户的请求;false时,JSP页面同一时刻只能处理相应一个客户的请求,其他客户需排队,默认为true。•Info属性该属性为JSP页面准备一个字符串,属性值是某个字符串。例如%@pageinfo=“wearestudent”%可以在JSP页面中使用下面的方法,获取info属性的值。getservletInfo()五、JSP指令标签Page指令中如果一个属性指定多个值,那么这些值用逗号分割。Page指令可以给import属性指定多个值;而给其他属性只能指定一个值。%@pagecontentType=text/html;charset=GB2312%%@pageimport=“java.util.*”%%@pageimport=“java.util.*”,”java.awt.*”%五、JSP指令标签2.Include指令标签如果需要在JSP页面内某处整体嵌入一个文件,可以使用指令标签。该标签语法如下:%@includefile=“文件的名字”%该指令标签的作用是在JSP页面出现该指令的位置初,静态地插入一个文件。被插入的文件必须是可访问的和可使用的。例:Example2_14.jspExample2_14_1.jspExample2_15.jspcomputer.jsp六、JSP动作标签•Include动作标签•Param动作标签•Forward动作标签•Plugin动作标签六、JSP动作标签1.Include动作标签jsp:includepage=“文件的名字”/或jsp:includepage=“文件的名字”/jsp:include六、JSP动作标签该动作标签告诉JSP页面动态包含一个文件,即JSP页面运行时才将文件加入。与静态插入文件的include指令标签不同,当JSP引擎把JSP页面转译成java文件时,不把JSP页面中动作指令include所包含的文件与原JSP页面合并成一个新的JSP页面,而是告诉Java解释器,这个文件在JSP运行时(java文件的字节码文件被加载执行)才包含进来。如果包含的文件是JSP文件,JSP引擎就执行这个文件,然后将执行的结果发送到客户端,并由客户端负责显示这些结果。六、JSP动作标签注意:include动作标签与静态插入文件的include指令标签有很大的不同。动作标签是在执行时才对包含的文件进行处理,因此JSP页面和它所包含的文件在逻辑和语法上是独立的,如果对包含的文件进行了修改,那么运行时可以看到所包含文件修改后的结果;而静态include指令包含的文件如果发生了变化,则必须重新将JSP页面转译成Java文件(可将该JSP叶面重新保存,然后再访问,就可产生新的转译Java文件),否则只能看到所包含的修改前的文件内容。另:书写include动作标签jsp:includepage…/要注意“jsp”“:”“include”三者之间不能有空格六、JSP动作标签2.param动作标签param标签以“名字——值”对应的形式为其他标签提供附加信息,这个标签与jsp:includejsp:forwardjsp:plugin标签一起使用。jsp:paramname=“名字”value=“指定给param的值”当该标签与jsp:include标签一起使用时,可以将param标签中的值传递到include指令要加载的文件中去,因此include动作标签如果结合param标签,可以在加载文件的过程中向文件提供信息。例如:tom.jsp和Example2_18.jsp六、JSP动作标签jsp:includepage=tom.jspjsp:paramname=computervalue=300//jsp:include在tom.jsp中通过下面语句得到computer的值Stringstr=request.getParameter(computer);六、JSP动作标签3.Forward动作标签Forward指令:jsp:forwardpage=“要转向的页面”/jsp:forward或jsp:forwardpage=“要转向的页面”/该指令的作用是从该指令处停止当前页面的继续执行,而转向其他的一个JSP页面。例如:Example2_19.jsp
本文标题:JSP语法
链接地址:https://www.777doc.com/doc-3543941 .html