JSP方法变量与类变量
来源:互联网 发布:淘宝量子恒道是什么 编辑:程序博客网 时间:2024/05/16 17:52
问题引入:
JSP文件中这两种变量声明有什么区别?
<%!int count;%>
<% int count2;%>
在JSP中<%! %>
为JSP声明,可以声明变量和方法,与<% %>
程序片不同的是,前者声明的变量或方法会成为该JSP编译后的Servlet类的成员变量或方法。
下面我们来证实:
在count.jsp中分别使用两种方法声明变量
知识点: JSP页面在第一次访问时会被servlet容器编译为Servlet类。
使用浏览器访问count.jsp后在下面目录中可以看到生成对应的java文件和编译后的.class文件(Tomcat编译JSP文件后生成的类文件会在work目录里)
打开.java后可以看到变量count和方法print()为类成员。
而在_jspService()方法里
count2被定义为方法变量
知识点:
1.servlet的运行模式为单实例多线程,也就是在web项目运行过程中每个servlet类只有一个实例,而每次访问JSP页面Tomcat都会创建线程调用编译后servlet类实例的service方法。
当访问count.jsp页面时,调用该servlet类实例的service()方法,jvm在栈中创建变量count2,当service()方法执行结束时,变量count2则消失。而使用<%! %>
声明的变量count成为类成员变量,在jvm的堆中创建,当servlet实例被servlet容器(Tomcat)创建出来后,变量count会一直存在堆中。
测试例子:
JSP文件:
使用浏览器打开,每次刷新(创建线程调用servlet的service()方法)成员变量count都会+1,即使使用不同浏览器也会在原本的值上+1,而方法变量count2一直是0;(细心的朋友会发现“count2 = 0;”,原因是直接使用没有初始化的方法变量的话java编译器会报The local variable count2 may not have been initialized错误)
- JSP方法变量与类变量
- jsp 与 javascript 变量相互调用方法
- Python 私有变量、私有方法、类变量与实例变量
- 成员变量与方法变量
- 类变量方法与对象变量方法的区别
- js 与jsp传输变量
- jsp全局变量与局部变量
- 静态方法与变量
- 变量与魔术方法
- Static--方法与变量
- 实例变量与类变量
- 类变量与实例变量
- 类变量与实例变量
- jsp study 3 变量与与数据
- js变量与jsp中变量的相互传递
- jsp变量和方法的声明
- jsp中声明变量和方法
- jSP页面中给变量赋值方法
- 计算数字k在0到n中的出现的次数,k可能是0~9的一个值
- 11月16日spring中tomcat运行出错
- C: 自己写的欧拉(Euler)筛法(已通过测试)
- 简单的实现控件的移动
- 可以叫板Google的一个搜索引擎——DuckDuckGo
- JSP方法变量与类变量
- Linux命令crontab定时计划学习
- C:PAT说反话加强版(已通过测试)
- LeetCode Find All Duplicates in an Array
- 图像导向滤波操作
- xdebug的安装过程
- pwm波
- 使用Xshell登录AWS的EC2云服务器和开启EC2上允许root+密码方式登录
- 图像 DFT 尺寸转换