天天看點

JSP中的Scriptlet

       在JSP中大部分都是由腳本小程式組成,所謂的腳本小程式就是裡面直接包含了JAVA代碼。

在JSP中Scriptlet一共分為三種:

       · <%%>:定義局部變量,編寫語句

       · <%!%>:定義全局變量,可以編寫類、方法

       · <%=%>:表達式輸出,專門輸出變量或一個具體值

       此為最常見的Scriplet代碼,代碼如下:

<b>JSPDemo02.jsp</b><b>:</b>

&lt;%

         int i = 10 ;

         int j = 20 ;

         out.println(i * j) ;

         out.println("&lt;h1&gt;"+(++i)+"&lt;/h1&gt;") ;

%&gt;

       發現,以上的程式無論怎麼重新整理頁面,i的内容依然是11,是固定的,因為每次都重新聲明了。

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

&lt;%!

       程式中,隻要一重新整理頁面,則就自己增加,因為聲明的是一個全局變量,是以隻聲明一次。

<b>例如:</b>在&lt;%!%&gt;定義一個方法,不要輕易這樣使用

<b>         public int add(int x,int y){</b>

<b>                   return x + y ;</b>

<b>         }</b>

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

       表達式輸出,專門輸出一個變量或一個具體的值。

<b>例如:</b>以下代碼使用了表達式輸出

&lt;%=i%&gt;

&lt;%="hello World!!!"%&gt;

       之前已經學過了兩種輸出資料:

              · out.println

              · &lt;%=%&gt;

       為了驗證此程式,下面通過兩段代碼進行比較,此代碼的功能就是在螢幕上列印一個表格。

<b>1</b><b>、  </b><b>使用out.println()</b><b>完成</b>

         out.println("&lt;table border=\"1\"&gt;") ;

         for(int i=0;i&lt;10;i++){

                   out.println("&lt;tr&gt;") ;

                   for(int j=0;j&lt;10;j++){

                            out.println("&lt;td&gt;"+(i*j)+"&lt;/td&gt;") ;

                   }

                   out.println("&lt;/tr&gt;") ;

         }

         out.println("&lt;/table&gt;") ;

       以上确實已經完成了功能。但是現在需要美化表格的話,根本無法用網頁工具進行編輯。因為把JAVA代碼和HTML代碼綁在一起了,是以修改困難

<b>2</b><b>、  </b><b>使用&lt;%=%&gt;</b><b>完成</b>

       是以,最好将HTML與JAVA代碼進行分割

&lt;table border="1"&gt;

                   &lt;tr&gt;

                            &lt;td&gt;&lt;%=i*j%&gt;&lt;/td&gt;

                   &lt;/tr&gt;

&lt;/table&gt;

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

       要求JSP頁面可以根據使用者前台表單輸入的資訊,列印表格,例如:前台可以輸入表格的行數和列數。接收之後進行列印。

<b>JSPDemo08.htm</b><b>:</b>

&lt;FORM METHOD="POST" ACTION="JSPDemo08.jsp" border="1"&gt;

&lt;TABLE&gt;

&lt;TR&gt;

         &lt;TD colspan="2"&gt;列印表格&lt;/TD&gt;

&lt;/TR&gt;

         &lt;TD&gt;輸入要列印表格的行數:&lt;/TD&gt;

         &lt;TD&gt;&lt;input type="text" name="rownum"&gt;&lt;/TD&gt;

         &lt;TD&gt;輸入要列印表格的列數:&lt;/TD&gt;

         &lt;TD&gt;&lt;input type="text" name="colnum"&gt;&lt;/TD&gt;

         &lt;TD colspan="2"&gt;

                   &lt;input type="submit" value="列印"&gt;

                   &lt;input type="reset" value="重置"&gt;

         &lt;/TD&gt;

&lt;/TABLE&gt;

&lt;/FORM&gt;

<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){

                   &lt;h1&gt;ERROR!!!&lt;/h1&gt;

         for(int i=0;i&lt;row;i++){

                   for(int j=0;j&lt;col;j++){

       整個程式上展現出了完整的互動性的效果,根據使用者輸入的内容可以自己進行相應的輸出。而且JAVA中的所有語句,在此處都可以使用。

本文轉自 李興華 51CTO部落格,原文連結:http://blog.51cto.com/lixinghua/101379,如需轉載請自行聯系原作者