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

4 篇文章 0 订阅
4 篇文章 0 订阅

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值