欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

jsp中<%%>和<%! %>的区别

程序员文章站 2024-02-17 16:27:28
...

今天小学弟写了段代码让我看,他遇到的问题是:每次页面刷新,内容都会叠加,代码如下

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

运行结果如下:
jsp中<%%>和<%! %>的区别

其实解决办法很简单,只要把String s=”“;写到test()方法里就行。
而出现这个问题的原因就是:

<%! %>中定义的是全局变量和方法、属性,在编译时会直接编译在servlet类中,
<%%>中定义的是脚本,编译时会编译在service方法中,因此只能写局部变量
在页面每次刷新时<%%>中的变量会被重新定义,而<%! %>中的变量不会被重新定义,并且这个变量的值
是上一次页面刷新的值。

可以利用<%! %>来做简单的页面访问量

<%! 
        int count = 0;
        int testCount(){
            count++;
            return count;
        }
%>
    <%=testCount() %>
相关标签: jsp 变量定义