jsp 页面刷新 全局变量 每次都递增 局部变量 不能 的原因
2016-12-21 16:35
357 查看
jsp 本质上是一个servlet 类 ,<%! %>声明的是这个类的成员变量, <% %>中声明的变量是service()方法中的局部变量;成员变量会被多个对象共享,局部变量单独对象访问,所以 定义在<%! %>中的全局变量能递增
例子:
<html>
<body>
<%!int counter=0;
synchronized void counterFunction()
{
counter++;
}
%>
<%counterFunction();%>
网站计数器<br>
您是第<%=counter%>位访问者
</body>
</html>
1. Jsp会变转换为一个Servlet,<%! %>是声明语句,里面的声明直接写在Servlet类中,这不是全局变量,而是属性,属性!
2. <% counterFunction();%>,这是Scriplet,被写在了service()方法里!service()是Servlet的一个最重要的方法,客户请求Servlet时,容器只是创建一个线程,调用这个方法。
3. Servlet在服务器中一经初始化,就一直存在,知道服务器关闭。所以整个过程应该是这样:1. 写好Jsp页面2. 启动服务器,第一次请求Jsp页面的时候,服务器就生产Java类,然后编译,在初始化,最后返回请求。也就第一次会这样,后面请求时,容器直接返回存在的Servlet,因为已经存在了。
4. 在IE中输入http://localhost:8080/....jsp 后,容器创建一个线程,调用service方法,因为方法中有我们写的 counterFunction(),所以就能完成统计任务了,每请求一次,加1.
例子:
JSP 计数器
<%@ page contentType="text/html;charset=gb2312"%><html>
<body>
<%!int counter=0;
synchronized void counterFunction()
{
counter++;
}
%>
<%counterFunction();%>
网站计数器<br>
您是第<%=counter%>位访问者
</body>
</html>
1. Jsp会变转换为一个Servlet,<%! %>是声明语句,里面的声明直接写在Servlet类中,这不是全局变量,而是属性,属性!
2. <% counterFunction();%>,这是Scriplet,被写在了service()方法里!service()是Servlet的一个最重要的方法,客户请求Servlet时,容器只是创建一个线程,调用这个方法。
3. Servlet在服务器中一经初始化,就一直存在,知道服务器关闭。所以整个过程应该是这样:1. 写好Jsp页面2. 启动服务器,第一次请求Jsp页面的时候,服务器就生产Java类,然后编译,在初始化,最后返回请求。也就第一次会这样,后面请求时,容器直接返回存在的Servlet,因为已经存在了。
4. 在IE中输入http://localhost:8080/....jsp 后,容器创建一个线程,调用service方法,因为方法中有我们写的 counterFunction(),所以就能完成统计任务了,每请求一次,加1.
相关文章推荐
- PHP:php函数内不能访问函数外的变量原因 局部变量和全局变量
- JSP基础_0700_HelloWorld 全局变量和局部变量
- 转载_keril中不能定义全局变量时初始化的原因
- jquery ajax done 函数 异步调用方法中不能给全局变量赋值的原因及解决办法
- jsp中的局部变量和全局变量
- jquery 异步调用方法中不能给全局变量赋值的原因及解决办法
- jquery 异步调用方法中不能给全局变量赋值的原因及解决办法
- 遇到的一个面试题:编写一个strlen函数,不能使用全局变量或者局部变量
- jsp的局部变量和全局变量的使用小记
- 【jsp】局部变量和全局变量
- jsp中全局变量和局部变量的设置
- jsp全局变量与局部变量
- 浅析jquery ajax异步调用方法中不能给全局变量赋值的原因及解决方法
- 不刷新页面jQuery模糊搜索,第二种实现---js全局变量存储数据
- 浅析jquery ajax异步调用方法中不能给全局变量赋值的原因及解决方法
- jsp中的全局变量和局部变量
- jquery ajax 异步调用方法中不能给全局变量赋值的原因及解决办法
- JSP中的全局变量和局部变量
- jsp按钮删除确认,table颜色设置,局部变量与全局变量在ajax中可见性
- asp.net mvc Ajax.BeginForm不能异步刷新,或转到新页面,或页面还是刷新了,的原因(或解决办法)