可以在”<%”和”%>”之間插入Java程序片。一個JSP頁面可以有許多程序片,這些程序片將被JSP引擎按順序執行。在一個程序片中聲明的變量稱做JSP頁面的局部變量,它們在JSP頁面內的所有程序片部分以及表達式部分內都有效。這是因爲JSP引擎將JSP頁面轉成Java文件時,將各個程序片的這些變量作爲類中的某個方法的變量,即局部變量。利用程序片的這個性質,有時可以將一個程序片分割成幾個更小的程序片,然後在這些小的程序片之間再插入JSP頁面的一些其它標記元素。當程序片被調用執行時,這些變量被分配內存空間,所有程序片調用完畢,這些變量即可釋放所佔的內存。
當多個客戶請求一個JSP頁面時,JSP引擎爲每個客戶啓動一個線程,一個客戶的局部變量和另一個客戶的局部變量被分配不同的內存空間。因此,一個客戶對JSP頁面局部變量操作的結果,不會影響到其它客戶的這個局部變量。
下面例子中的程序片負責計算1到100的連續和。
<%@ page contentType="text/html;charset=GB2312"%>
<HTML>
<BODY BGCOLOR=cyan>
<FONT Size=4>
<%!
long continueSum(int n)
{
int sum =0;
for(int i=1;i<=n;i++)
{
sum+=i;
}
return sum;
}
%>
<P>1到100的連續和: <BR>
<%
long sum;
sum=continueSum(100);
out.print(" "+sum);
%>
</FONT>
</BODY>
</HTML>
運行效果:
<%@ page contentType="text/html;charset=GB2312"%>
<%@ page import="java.io.*"%>
<HTML>
<BODY BGCOLOR=cyan>
<FONT Size=4>
<P>請輸入E-mail:
<BR>
<FORM action="" method=get name=form>
<INPUT type="text" name="client" value="1">
<INPUT TYPE="submit" value="送出" name=submit></FORM>
<%
String str=request.getParameter("client");
double r;
if(str!=null)
{
int index=str.indexOf("@");
if(index==-1){
%>
<BR>您的E-mail地址中沒有@.
<%
}
else{
int space =str.indexOf(" ");
if(space!=-1){
%>
<BR>您的E-mail地址含有非法的空格。
<%
}
else{
int start =str.indexOf("@");
int end =str.lastIndexOf("@");
if(start!=end){
%>
<BR>您的E-mail地址中有兩個以上的符號:@
<%
}else{
out.print("<BR>"+str);
%>
<BR>您的E-mail地址書寫正確。
<%
}
}
}
}
%>
</FONT>
</BODY>
</HTML>
上面的例子將通過將程序片分割成幾部分,來驗證用戶輸入的E-mail地址中是否含有非法字符。
運行效果: