<%@ page contentType="text/html;charset=GB2312" %>
<%!
int m=100;
%>
原值:<%=m%>
<br>
<%
m=200;
%>
现值:<%=m%>
该网页的执行结果不断刷新结果一直是:
原值:100
现值:200
或者打开其他新的标签页结果仍然是:
原值:100
现值:200
按照!的用法结果不应该是如下结果吗?
原值:200
现值:200 求教可能是哪方面的问题?
<%!
int m=100;
%>
原值:<%=m%>
<br>
<%
m=200;
%>
现值:<%=m%>
该网页的执行结果不断刷新结果一直是:
原值:100
现值:200
或者打开其他新的标签页结果仍然是:
原值:100
现值:200
按照!的用法结果不应该是如下结果吗?
原值:200
现值:200 求教可能是哪方面的问题?
就等价于
int m = 100;
print(m);
m = 200;
print(m);
public final class _youjspname_jsp extends org.apache.jasper.runtime.HttpJspBase
implements org.apache.jasper.runtime.JspSourceDependent { int n = 0;
private static java.util.Vector _jspx_dependants; public java.util.List getDependants() {
return _jspx_dependants;
} public void _jspService(HttpServletRequest request, HttpServletResponse response)
throws java.io.IOException, ServletException {
int m = 0;
...
}
}
其中_jspService()是jsp的主体~~在上面的代码中,有两个变量,全局变量n和局部变量m,其中n就是用<%!int n = 0;%>定义的,m是用<%int m = 0;%>定义的,如果你在<%!%>里面定义一个方法,那么这个方法将是class _youjspname_jsp的一个方法;<%%>是不允许定义方法的,原因很明显:方法里面不允许定义方法!
就等价于
int m = 100;
print(m);
m = 200;
print(m);<%!
int m=100;
%>
上面有个符号!(感叹号),m不应该是全局变量吗?
int m = 100;
public void prnt() {
print(m);
m = 200
print(m);
}
}
<%@ page contentType="text/html;charset=GB2312" %>
<%!
int m=100;
%>
原值:<%=m%>
<br>
<%
m=200;
%>
现值:<%=m%> 的执行原理。其中的符号!是什么意思?
执行结果是怎样的,不断刷新后!
就等价于
int m = 100;
print(m);
m = 200;
print(m);<%!
int m=100;
%>
上面有个符号!(感叹号),m不应该是全局变量吗?
全局变量不是这个意思。另外,全局变量这个说法。不准确。还是去看下产生的servlet源码吧。你每次刷新。都会从服务器重新加载一个servlet对象。m又重新初始化为100了。原始的值没有了。
<%@ page contentType="text/html;charset=GB2312" %>
<%!
int m=100;
%>
原值:<%=m%>
<br>
<%
m=200;
%>
现值:<%=m%> 的执行原理。其中的符号!是什么意思?
执行结果是怎样的,不断刷新后!<%!%>在jsp中是声明标签,就是你声明一个变量
<%@ page contentType="text/html;charset=GB2312" %>
<%!
int m=100;
%>
原值:<%=m%>
<br>
<%
m=200;
%>
现值:<%=m%> 的执行原理。其中的符号!是什么意思?
执行结果是怎样的,不断刷新后!
你每次刷新页面相当于调用a.prnt()
你说第一个m应该打多少
<%@ page contentType="text/html;charset=GB2312" %>
<%!
int m=100;
%>
原值:<%=m%>
<br>
<%
m=200;
%>
现值:<%=m%> 的执行原理。其中的符号!是什么意思?
执行结果是怎样的,不断刷新后!
你每次刷新页面相当于调用a.prnt()
你说第一个m应该打多少执行完后对象还在吗?
就等价于
int m = 100;
print(m);
m = 200;
print(m);
在”<%!”和”%>”标记之间声明的变量在整个JSP页面内都有效,这些变量的内存空间直到服务器关闭后才释放。当多个客户请求一个JSP页面时,JSP引擎为每个客户启动一个线程,这些线程由JSP引擎服务器来管理,这些线程共享JSP页面的成员变量,因此任何一个用户对JSP页面成员变量操作的结果,都会影响到其他用户。
<%@ page contentType="text/html;charset=GB2312" %>
<%!
int m=100;
%>
原值:<%=m%>
<br>
<%
m=200;
%>
现值:<%=m%> 的执行原理。其中的符号!是什么意思?
执行结果是怎样的,不断刷新后!
你每次刷新页面相当于调用a.prnt()
你说第一个m应该打多少其他人调用这个网页会是什么结果? 在”<%!”和”%>”标记之间声明的变量在整个JSP页面内都有效,这些变量的内存空间直到服务器关闭后才释放。当多个客户请求一个JSP页面时,JSP引擎为每个客户启动一个线程,这些线程由JSP引擎服务器来管理,这些线程共享JSP页面的成员变量,因此任何一个用户对JSP页面成员变量操作的结果,都会影响到其他用户。