Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1699810
  • 博文数量: 210
  • 博客积分: 10013
  • 博客等级: 上将
  • 技术积分: 2322
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-25 15:56
文章分类

全部博文(210)

文章存档

2011年(34)

2010年(121)

2009年(37)

2008年(18)

我的朋友

分类: Java

2009-12-29 10:11:08

   记录一下我用使用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;%>
阅读(14618) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~