JavaWeb从入门到精通(视频实战版)
上QQ阅读APP看书,第一时间看更新

2.3 JSP的基本语法

JSP网页主要分为脚本与网页数据两部分。网页数据就是JSP服务器不处理的部分,例如,HTML的内容会直接送到客户端执行。脚本是必须经由JSP服务器处理的部分,而大部分脚本都以XML作为语法基础,并且大小写必须一致。脚本有4种类型:编译指令、JSP脚本、动作标签和表达式语言(Expression Language)。其中表达式语言又简称为EL,是JSP 2.0新增的功能,将在第二篇介绍。

2.3.1 给JSP加注释

注释一般可分为两种:一种为在客户端显示的注释;另外一种就是客户端看不到,只给开发程序员专用的注释。

1)客户端可以看到的注释以“<!--”开头,以“-->”结尾,如:

<!--comment [ <%= expression %> ]-->

这种注释的方式和HTML中的注释很像,可以使用“查看源代码”来查看这些程序代码,但是与HTML注释唯一有些不同的是,JSP注释可以在注释中加上动态的表达式。

<!--现在时间为: <%= (new java.util.Date()).toLocaleString() %> -->

在客户端的HTML源文件中显示为:

<!--现在时间为: January 1, 2004 -->

2)开发程序员专用的注释以“<%--”开头,以“--%>”结尾,如:

<%--comment --%>

JSP服务器不会对<%--和--%>之间的语句进行编译,它不会显示在客户端的浏览器上,也无法从源文件中看到,如实例2-4所示。

【实例2-4】helloread.jsp示例

01   <HTML>
02     <BODY>
03        <!--嵌入JSP代码-->
04        <%
05           for (int i = 3; i < 5; i++) {
06        %>
07        <font size=<%=i%>> <strong>读者, 您好!</strong> </font>
08        <!--嵌入JSP代码-->
09        <%
10           }
11        %>
12        <%--这里所在的东西不会被编译, 客户端的源文件中也不会出现--%>
13     </BODY>
14   </HTML>

【代码剖析】上面代码中第3行为客户端可以看到的注释,第12行为程序员专用的注释。

2.3.2 在JSP中声明变量和函数

在JSP中声明变量或者函数,是以“<%!”开头、以“--%>”结尾,如:

<%! declaration; [ declaration; ]+ ... %>

实例2-5中给出了几种处理声明的例子。

【实例2-5】jspdec.jsp示例

01   <html>
02     <head>
03     </head>
04     <body>
05        <!--JSP中声明变量-->
06        <%!int i = 0;%>
07        <%!int e, f, d;%>
08        <%!Object a = new Object();%>
09        <%!public String f(int i) {      <!--定义了一个名为f的函数-->
10        if (i < 3)
11          return "i小于3";
12        else
13          return "i大于等于3";
14        }%>
15     </body>
16   </html>

【代码剖析】上面代码中第6行声明了一个整数变量i,在第7行声明了三个整型变量e、f和d,在第9行声明了一个函数f。

程序中用到的变量和方法,都必须以这种方式来声明,可以一次性声明多个变量和方法,只要以“;”结尾就行。当然这些声明在Java中要是合法的。可以直接使用在<% @ page %>中被包含进来的已经声明的变量和方法,不需要对它们重新进行声明,一个声明仅在一个页面中有效。如果你想每个页面都用到一些声明,最好把它们写成一个单独的文件,然后用<%@include %>指令包含进来。

2.3.3 用JSP表达式输出结果

JSP表达式是以“<%=”为起始、以“%>”为结尾,其中间内容包含一段合法的表达式,如:

<%= expression %>

前面章节中曾经使用JSP表达式:

<font size= <%=i%>>读者, 您好!</font>
欢迎: <%=request.getParameter("username")%>

表达式元素表示的是一个在脚本语言中被定义的表达式,在运行后被自动转化为字符串,然后插入到这个表达式在JSP文件的位置显示,有时候表达式也能作为其他JSP元素的属性值。一个表达式能够变得很复杂,它可能由一个或多个表达式组成。无论这个表达式有多复杂,其必须是Java语言合法的表达式,这些表达式的顺序是从左到右,最终的结果是一个字符串。

2.3.4 用JSP脚本实现程序逻辑

JSP脚本又称为scriptlet,包含一个有效的程序段,是以“<%”开头、以“%>”结尾,如:

<% code fragment %>

前面章节中的例子就两次用到JSP脚本:

<body>
    <!--嵌入JSP代码-->
    <%for(int i=3,i<5,i++){%>// jsp 脚本
    <font size=<%=i%>> <strong>读者, 您好!</strong> </font>
    <%}%>// jsp脚本
    <%--这里所在的东西不会被编译, 客户端的源文件中也不会出现--%>
</body>

一个JSP脚本能够包含多个Java语句、方法、变量、表达式,可以声明将要用到的变量或方法,也可以使用任何JSP内置对象和JSP标签<jsp:useBean>声明过的对象。JSP脚本是在网页中嵌入Java程序的部分,当然语句必须遵从Java语言的语法,而且任何文本、HTML标记、JSP元素必须在脚本之外。