在JSP中大部分都是由腳本小程式組成,所謂的腳本小程式就是裡面直接包含了JAVA代碼。
在JSP中Scriptlet一共分為三種:
· <%%>:定義局部變量,編寫語句
· <%!%>:定義全局變量,可以編寫類、方法
· <%=%>:表達式輸出,專門輸出變量或一個具體值
此為最常見的Scriplet代碼,代碼如下:
<b>JSPDemo02.jsp</b><b>:</b>
<%
int i = 10 ;
int j = 20 ;
out.println(i * j) ;
out.println("<h1>"+(++i)+"</h1>") ;
%>
發現,以上的程式無論怎麼重新整理頁面,i的内容依然是11,是固定的,因為每次都重新聲明了。
一般情況下都會使用此Scriplet定義一個全局變量,全局變量是無論怎麼重新整理,都隻聲明一次,隻有很少的情況下才會用此語句去定義一個方法,但是100%情況下是不可能去定義一個類的。
<%!
程式中,隻要一重新整理頁面,則就自己增加,因為聲明的是一個全局變量,是以隻聲明一次。
<b>例如:</b>在<%!%>定義一個方法,不要輕易這樣使用
<b> public int add(int x,int y){</b>
<b> return x + y ;</b>
<b> }</b>
out.println(add(10,20)) ;
表達式輸出,專門輸出一個變量或一個具體的值。
<b>例如:</b>以下代碼使用了表達式輸出
<%=i%>
<%="hello World!!!"%>
之前已經學過了兩種輸出資料:
· out.println
· <%=%>
為了驗證此程式,下面通過兩段代碼進行比較,此代碼的功能就是在螢幕上列印一個表格。
<b>1</b><b>、 </b><b>使用out.println()</b><b>完成</b>
out.println("<table border=\"1\">") ;
for(int i=0;i<10;i++){
out.println("<tr>") ;
for(int j=0;j<10;j++){
out.println("<td>"+(i*j)+"</td>") ;
}
out.println("</tr>") ;
}
out.println("</table>") ;
以上确實已經完成了功能。但是現在需要美化表格的話,根本無法用網頁工具進行編輯。因為把JAVA代碼和HTML代碼綁在一起了,是以修改困難
<b>2</b><b>、 </b><b>使用<%=%></b><b>完成</b>
是以,最好将HTML與JAVA代碼進行分割
<table border="1">
<tr>
<td><%=i*j%></td>
</tr>
</table>
通過以上實作的代碼,發現使用表達式輸出要比直接使用out.println輸出更友善,而且便于修改,是以在開發中嚴格要求,不允許出現任何的out.println語句。
要求JSP頁面可以根據使用者前台表單輸入的資訊,列印表格,例如:前台可以輸入表格的行數和列數。接收之後進行列印。
<b>JSPDemo08.htm</b><b>:</b>
<FORM METHOD="POST" ACTION="JSPDemo08.jsp" border="1">
<TABLE>
<TR>
<TD colspan="2">列印表格</TD>
</TR>
<TD>輸入要列印表格的行數:</TD>
<TD><input type="text" name="rownum"></TD>
<TD>輸入要列印表格的列數:</TD>
<TD><input type="text" name="colnum"></TD>
<TD colspan="2">
<input type="submit" value="列印">
<input type="reset" value="重置">
</TD>
</TABLE>
</FORM>
<b>JSPDemo08.jsp</b><b>:</b>
// 需要接收請求内容
int row = 0 ;
int col = 0 ;
try{
row = Integer.parseInt(request.getParameter("rownum")) ;
col = Integer.parseInt(request.getParameter("colnum")) ;
}catch(Exception e){
<h1>ERROR!!!</h1>
for(int i=0;i<row;i++){
for(int j=0;j<col;j++){
整個程式上展現出了完整的互動性的效果,根據使用者輸入的内容可以自己進行相應的輸出。而且JAVA中的所有語句,在此處都可以使用。
本文轉自 李興華 51CTO部落格,原文連結:http://blog.51cto.com/lixinghua/101379,如需轉載請自行聯系原作者