请大家指教。
在JSP页面中,进行声明变量。我发现s只初始化一次(就算关闭浏览器S的值还是存在),符合我的想法。
问题: s的值什么时候取消??
|
在JSP页面中,进行声明变量。我发现s只初始化一次(就算关闭浏览器S的值还是存在),符合我的想法。
问题: s的值什么时候取消??
|
不要用 <! ...> 这个标记,这个标记声明的是静态变量。
初始化当然只有一次了,顾名思义么,呵呵。
|
"就算关闭浏览器S的值还是存在", 呵呵,服务器端的obj是生存在浏览器中么?
> 不要用 <! ...> 这个标记,这个标记声明的是静态变量。
应该是“成员变量”吧?
用了!以后,就声明了静态成员变量,相当于:
public static String s = null;
不会吧,随便测试以下:
|
服务器是jboss 3.2.1
楼主写错了:
<! >
忘了写%号。
什么也没声明成。
如果写上百分号,是实例变量。
<%! %>
标识声明代码,可以声明方法也可以声明成员。
但static还是要手动指明的。
需要提醒的是,一旦声明了静态或非静态成员,就需要考虑线程安全的问题了。尤其是需要频繁读写的成员。
应该是成员变量
看看JSP编译出来的servlet就知道了
不过servlet是单实例的,所以即使关闭浏览器,服务器端的servlet依然存在除非destory
这也是servelt要注意线程安全的原因
jsp
|
servlet
|
建议看一看JSP规范和Servlet规范。
请问,JSP页面声明静态有什么不好之处。。。
不论实例的还是静态的成员都要考虑线程安全问题。
最好还是算了。
对了,你是不是整个应用都用JSP,也就是说是所谓的Model1开发模式。
> 请问,JSP页面声明静态有什么不好之处。。。
>
当然不好!
因为jsp说到底就是servlet,servlet一般是不应该定义为single-thread,那么servlet内的静态变量/成员实例就会被该servlet的多个实例间共享,数据冲突/丢失就在所难免了。
说道地。SERVLET 也是类。。。 默认是多线程的。。
我得 业务就是读数据没有其他的了。。。
我想声明STATIC 应该不会有其他的影响的了。。
但是有一个问题,<%!STRING S="ok"%> 这个变量所有用户共享。
提高了性能。就算关闭浏览器也不会消失。。可是却一直占用者内存。
爱。。个有千秋。。。怎么办呢。。
扔到ServletContext里去
就成为对于整个Context都可见的全局对象