【jsp】局部变量和全局变量

1.

jsp三种脚本元素

<%! 声明 这里定义的变量是全局变量%>


<% 脚本 这里定义的是局部变量%>


<%=对象% 

全局变量到处可以用,例如<%!%>声明的,局部变量就是只有函数内部可以用<%%>


2.

记录一下我用使用jsp页面中<%! %>全局变量声明遇到的问题,我们用全局变量一般保存的是在这个页面中要多次用到的变量,如用户ID等等,但是在<%! %>给变量定义赋值后,关闭页面再此打开后值是不变的,这使得想用全局变量接收提交的参数的时候出现一些问题:比如用户ID依然是上次的ID等等。
   原因我查了一下,大致是因为下列原因:
   1.使用<%! %>定义的变量编译成servlet后成为servlet的私有成员变量,在servlet环境中,对于一个JSP页只允许有一个结果servlet的实例在运行和响应所有的页面请求。因此,在结果servlet中所有的成员变量可以被所有的请求所共享,所以只要成员变量没有重新赋值,下次访问该页面时仍然不变。
   2.而在<% %>中定义的变量编译成servlet后成为service()方法的一个本地变量,而service()方法中的本地变量只能每响应一次请求就重建一次。
   所以解决办法是变量定义在<%! %>之中,但是在<%%>里面用接收到的参数进行赋值,这样该全局变量就可以在每次请求的时候重新赋值。比如:
   <%!int i=0;%>
   <%i++;%>
另外引用<%!int i=0;%>定义的变量用<%=this.i;>;引用<%int i=0;%>用<%=i;%>

你可能感兴趣的:(jsp,心得,日志)