jsp中和的區別

今天小學弟寫了段代碼讓我看,他遇到的問題是:每次頁面刷新,內容都會疊加,代碼如下

<body>

   <%! String s="";

      String test()  {
           for(int i=1;i<=9;++i)
           {
             for(int j=1;j<=i;j++){
             s+=(i+"*"+j+"="+i*j+"  "); 
             }
            s+="<br>";
           }   
         return s;
        }

    %>
  <h1>  九九乘法表爲:</h1>
  <br>

     <%=test() %> 
        <br>
    </body>

運行結果如下:
這裏寫圖片描述

其實解決辦法很簡單,只要把String s=”“;寫到test()方法裏就行。
而出現這個問題的原因就是:

<%! %>中定義的是全局變量和方法、屬性,在編譯時會直接編譯在servlet類中,
<%%>中定義的是腳本,編譯時會編譯在service方法中,因此只能寫局部變量
在頁面每次刷新時<%%>中的變量會被重新定義,而<%! %>中的變量不會被重新定義,並且這個變量的值
是上一次頁面刷新的值。

可以利用<%! %>來做簡單的頁面訪問量

<%! 
        int count = 0;
        int testCount(){
            count++;
            return count;
        }
%>
    <%=testCount() %>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章