<%@ page contentType="text/html;charset=GB2312" %>
<%!
int m=100;
%>
原值:<%=m%>
<br>
<%
m=200;
%>
现值:<%=m%>
该网页的执行结果不断刷新结果一直是:
原值:100
现值:200
或者打开其他新的标签页结果仍然是:
原值:100
现值:200
按照!的用法结果不应该是如下结果吗?
原值:200
现值:200
求教可能是哪方面的问题?
------解决方案--------------------
你可以打开jsp文件产生的servlet看下代码。
程序是和普通的java文件一模一样顺序执行的。
------解决方案--------------------
你把jsp那部分去掉
就等价于
int m = 100;
print(m);
m = 200;
print(m);
------解决方案--------------------
你这个是在不断地执行三楼 的这段代码,因为你每次都给这个m初始化 值为100
------解决方案--------------------
jsp写的代码,经过Tomcat或别的什么容器编译后,最终是以_youjspname_jsp.java形式出现的,代码基本样式如下:
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的一个方法;<%%>是不允许定义方法的,原因很明显:方法里面不允许定义方法!