记录一下我用使用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;%>
阅读(14614) | 评论(0) | 转发(0) |