JSP中的Scriptlet

3.2Scriptlet

       JSP中大部分都是由腳本小程序組成,所謂的腳本小程序就是裏面直接包含了JAVA代碼。
JSPScriptlet一共分爲三種:
       · <%%>:定義局部變量,編寫語句
       · <%!%>:定義全局變量,可以編寫類、方法
       · <%=%>:表達式輸出,專門輸出變量或一個具體值

3.2.1<%%>

       此爲最常見的Scriplet代碼,代碼如下:
JSPDemo02.jsp

<%

         int i = 10 ;

         int j = 20 ;

         out.println(i * j) ;

         out.println("<h1>"+(++i)+"</h1>") ;

%>

       發現,以上的程序無論怎麼刷新頁面,i的內容依然是11,是固定的,因爲每次都重新聲明瞭。

3.2.2<%!%>

       一般情況下都會使用此Scriplet定義一個全局變量,全局變量是無論怎麼刷新,都只聲明一次,只有很少的情況下才會用此語句去定義一個方法,但是100%情況下是不可能去定義一個類的。
<%!

         int i = 10 ;

         int j = 20 ;

%>

<%

         out.println(i * j) ;

         out.println("<h1>"+(++i)+"</h1>") ;

%>

       程序中,只要一刷新頁面,則就自己增加,因爲聲明的是一個全局變量,所以只聲明一次。
例如:<%!%>定義一個方法,不要輕易這樣使用
<%!

         int i = 10 ;

         int j = 20 ;

         public int add(int x,int y){

                   return x + y ;

         }

%>

<%

         out.println(add(10,20)) ;

         out.println("<h1>"+(++i)+"</h1>") ;

%>

3.2.3<%=%>

       表達式輸出,專門輸出一個變量或一個具體的值。
例如:以下代碼使用了表達式輸出
<%

         int i = 10 ;

%>

<%=i%>

<%="hello World!!!"%>

3.2.4、使用那種輸出更好呢?

       之前已經學過了兩種輸出數據:
              · out.println
              · <%=%>
       爲了驗證此程序,下面通過兩段代碼進行比較,此代碼的功能就是在屏幕上打印一個表格。
1  使用out.println()完成

<%

         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代碼綁在一起了,所以修改困難
2  使用<%=%>完成

       所以,最好將HTMLJAVA代碼進行分割
<table border="1">

<%

         for(int i=0;i<10;i++){

%>

                   <tr>

<%

                   for(int j=0;j<10;j++){

%>

                            <td><%=i*j%></td>

<%

                   }

%>

                   </tr>

<%

         }

%>

</table>

       通過以上實現的代碼,發現使用表達式輸出要比直接使用out.println輸出更方便,而且便於修改,所以在開發中嚴格要求,不允許出現任何的out.println語句。

3.2.5、思考?

       要求JSP頁面可以根據用戶前臺表單輸入的信息,打印表格,例如:前臺可以輸入表格的行數和列數。接收之後進行打印。
JSPDemo08.htm
<FORM METHOD="POST" ACTION="JSPDemo08.jsp" border="1">

<TABLE>

<TR>

         <TD colspan="2">打印表格</TD>

</TR>

<TR>

         <TD>輸入要打印表格的行數:</TD>

         <TD><input type="text" name="rownum"></TD>

</TR>

<TR>

         <TD>輸入要打印表格的列數:</TD>

         <TD><input type="text" name="colnum"></TD>

</TR>

<TR>

         <TD colspan="2">

                   <input type="submit" value="打印">

                   <input type="reset" value="重置">

         </TD>

</TR>

</TABLE>

</FORM>

JSPDemo08.jsp

<%

         // 需要接收請求內容

         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>

<%

         }

%>

<table border="1">

<%

         for(int i=0;i<row;i++){

%>

                   <tr>

<%

                   for(int j=0;j<col;j++){

%>

                            <td><%=i*j%></td>

<%

                   }

%>

                   </tr>

<%

         }

%>

</table>

       整個程序上體現出了完整的交互性的效果,根據用戶輸入的內容可以自己進行相應的輸出。而且JAVA中的所有語句,在此處都可以使用。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章