4.3 JSP中的Java片断代码
JSP中的Java程序片断用来包含JSP页面中的Java程序逻辑,共有4种形式,分别是注释、声明、表达式和程序段。这4种Java程序片断都是以“<%”开头,相对应的则以“%>”结束。
4.3.1 注释
JSP程序中可以包含3种不同类型的注释:一种是JSP标准注释,另一种是利用Java语言本身的注释,还有一种就是沿用HTML的注释。
1)JSP标准注释
JSP标准注释通常用来编写JSP的说明文档,当JSP网页在服务器中编译时将被完全忽略,其语法形式为:
<%--comment--%>
用这种注释方法的好处是可以把开发人员希望隐藏的JSP程序注释起来。JSP编译器是不会对“<%--comment--%>”之间的语句进行编译的,这些注释将不会显示在客户的浏览器中,同样用户通过浏览器的“查看”|“源文件”操作也不会在返回页面的源代码中查看到。
2)利用Java语言本身的注释
在JSP的Java程序片断中,可以遵循Java语言本身的注释规则,即在一对“<%”和“%>”之间用一对“/*”和“*/”把注释语句添加进去,如果单行注释也可以用“//”添加注释。这样的注释语句在JSP页面编译时也将被完全忽略,通过客户端浏览器的“查看”|“源文件”操作也不会看到这样的注释。其语法形式为:
<%/*comment*/%>
3)沿用HTML的注释
熟悉HTML的读者应该知道,HTML中的注释能在客户端显示的HTML页面的源代码中被看到。JSP页面中的这种仿HTML注释和HTML中的注释很相像,也可以在浏览器的“查看”|“源文件”操作中查看到。唯一有所不同的就是,可以在这个注释中使用JSP表达式,从而记录一些JSP页面的动态运行结果。其语法形式为:
<!--comment [ <%=expression %> ]-->
4.3.2 程序段
JSP中的程序段就是一段Java程序代码。JSP程序段封装了JSP页面的处理逻辑——Java程序代码,它用“<%”做起始标记,用“%>”做结束标记。可以使用Java语言规范中任何有效的Java程序代码作为JSP中的程序段。当Web服务器接受请求时,这段Java程序代码就会随同页面一起被执行。
JSP程序段的语法如下:
<% Java Scriptlet %>
利用程序段可以完成如下工作。
❑ 编写Java语句(使用遵从Java语言规范的语法)。
❑ 声明所要用到的变量、类或是方法(作用域都是局部的)。
❑ 编写JSP表达式(结尾要用分号)。
❑ 使用任何内置对象和任何用<jsp:useBean>声明过的对象。
4.3.3 声明
声明用于声明JSP程序中要用到的一个或多个变量(包括普通变量和类变量)和方法。在声明元素时声明的变量和方法将在JSP页面运行时进行初始化。用户可以一次性地声明多个变量和方法,只要以“;”结尾即可。JSP声明的语法如下:
<%! declaration; [declaration;]…… %>
声明的具体使用的示例代码如下:
<%! int i=16; %> <%! int a,b,c; %> <%! String s=”hello”; char ch=’G’; int value; %> <%! Circle a=new Circle (5,0); %>
通过上述示例代码可以看到,在JSP声明中,不仅可以定义普通变量和方法,还可以定义一个类变量,JSP程序中的其他部分可以使用这个类变量。
这里格外需要注意的是,对于在<%!……%> JSP声明中定义的变量将作为全局变量,而在<%……%.>JSP程序段中定义的变量则是本地变量,这里的本地变量和全局变量的含义与普通程序中不同,并不是说全局变量可以在JSP页面中的其他任何地方使用,而本地变量对于JSP程序中此程序段之外的其他部分来说是不可见的。这里的全局变量指的是访问该页面的所有客户端共享的,而本地变量指的是访问该页面的各个客户端所独有的。
【实例4-2】全局变量的应用。
01 <%@ page contentType="text/html;charset=GBK" %> 02 <html> 03 <body> 04 <%! int i=0; %> //声明全局变量i 05 <% 06 i++; //每个请求该页面的客户端操作都将对i进行加1操作 07 out.print(i); //输出全局变量的值 08 %>个人访问本站 09 </body> 10 </html
【代码说明】在实例4-2定义的页面中,第4行声明了一个全局变量i,并设置初始值为0。在第6行中对这个全局变量进行自加操作,并在第7行中将其输出并显示在页面上。
【运行结果】打开浏览器在其中输入访问的URL地址后,将显示如图4.31所示的访问页面。再次重新打开一个浏览器,输入相同的URL地址,这就相当于另一个客户端,将显示如图4.32 所示的访问页面。
从实例4-2的运行结果可以看出,这两个客户端共享全局变量。如果将实例4-2第4行中的“!”去掉,将变量变为局部变量,再按照上述步骤进行测试,看看是否每个客户端浏览器显示的都是“1个人访问本站”。
说明
在运行修改后的JSP页面之前,最好重新启动Tomcat服务器,以防之前的全局变量影响程序运行结果。
图4.31 第一个客户端访问页面
图4.32 第二个客户端访问页面
4.3.4 表达式
表达式用来在JSP页面中输出作为运行结果的字符串或是数值变量。JSP表达式可以被看做是一种简单的输出形式,任何在Java语言规范中有效的表达式都能够作为JSP表达式在JSP页面中使用。在运行JSP页面时,JSP表达式被自动地转化为字符串输出,因此可以在一行文本中插入JSP表达式。JSP表达式的语法如下:
<%=expression%>
表达式具体使用的示例代码如下:
<% =(new java.util.Date()).toString() %> <%=circle.getArea()%>
由于表达式的书写格式比较烦琐,而且完全可以由JSP中的内置对象out(该对象将在第5章中详细介绍)来替代,因此在实际开发中,表达式的使用并不广泛。