JSP一道很基础的问题
<body>
<% int i=1;%>
<%=this.i%>
<%!int i=0;%>
</body>
为什么会打印 0 呢....
------解决方案--------------------LZ~~
你是自己知道,来考别人。
还是不知道,来问别人阿?
------解决方案-------------------- <body>
<% int i=1;%> //这个i是局部变量,生命周期出了 <% %> 就结束了.
<%=this.i%> //这个打印的是全局变量.
<%!int i=0;%> //这个声明的是全局变量,这个i赋值是什么打印的就是什么.如果没有这个全局变量就会报错,这样解释清楚了吗?
</body>
------解决方案--------------------......
------解决方案-------------------- <% int i=1;%> //这个i是局部变量,生命周期出了 <% %> 就结束了.
------------------------------------
错了,整个页面都可以用的
------解决方案-------------------- <%!int i=0;%>
jsp编译后会生成一个java类文件,观察这个类文件,你会发现,以上面方式定义的i成为这个类的一个成员变量。
而 <% int i=1;%> 中的i确实是一个局部变量,但是在整个jsp中也都可用
------解决方案--------------------学习中
------解决方案--------------------能用this么?
------解决方案-------------------- <%! int i=0%> ,是个全局变量,你给赋值0了,所有打印为0啊
------解决方案--------------------上面的代码写在servlet里是这样的
public class Xxx extends HTTPServlet {
......
int i = 0;
public void doXxx(HttpServletRequest req,
HttpServletResponse res) throws
ServletException {
......
int i = 1;
out.println(this.i);
......
}
}
所以打出来的是0
想正确输出1的话
把 <% int i=1;%> 改成 <% i=1;%>
------解决方案-------------------- <%!int i=0;%> 声明成员变量
<%int i=0;%> 声明局部变量