在前面的教程中我们已经在一个scriptlet中使用了“out”变量来产生HTML输出。对于更复杂的HTML,如果我们还是使用“out”变量那就会失去JSP编程的许多优势。其实我们可以很简单地就实现Scriptlets 和 HTML的混合。
假如你要在HTML产生一个表格。产生表格是一个普通的操作,在实践中你可能想从一个SQL表格或者从文件的行产生一个表格。为了是所举的例子尽量的简单,我们产生一个表格,使这个表格包含从1到N的数字。虽然以下的例子不是很有用,但是你从中可以学到一些技巧的。以下就是JSP的程序片段:
<TABLE BORDER=2>
<%
for ( int i = 0; i < n; i++ ) {
%>
<TR>
<TD>Number</TD>
<TD><%= i+1 %></TD>
</TR>
<%
}
%>
</TABLE>
在编制代码之前,你应该首先定义一个整型(int)变量“n”,利用这个变量我们要输出“n”行的表格。从上面的代码中我们可以注意到%> 和 <%字符出现在“for”循环中,原来这是为了使你退到HTML然后又回到scriptlet,其实这正是Scriptlets 和 HTML的混合的技巧。
上面的代码其实很简单:可以退出scriptlet的时候,就编写HTML;然后又回到scriptlet中去。任何的循环控制表达式,比如 “while”或者“for”循环以及“if”语句都可以控制HTML。如果HTML处在一个循环中它就会在每一次的循环中执行一次。
实现Scriptlets 和 HTML的混合编制代码的另外一个例子:这里我们假设有一个布尔型(Boolean)的变量“hello”,如果将它的值设置为true,它就将有一个输出;如果将它的值设置为false,它就将有另外一个输出。具体代码如下:
<%
if ( hello ) {
%>
<P>Hello, world
<%
} else {
%>
<P>Goodbye, world
<%
}
%>
本教程的特点是每个教程结束后都要作个练习。这次的练习为:先对上面的例子进行调试。再编写一个JSP来输出由System.getProperties 的返回值,并且记得在每一个属性名和数值后面嵌入"<BR>"。当然是不要使用“out”来输出"<BR>"的啦。