java全局变量清空?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java全局变量清空?相关的知识,希望对你有一定的参考价值。
controller层每次访问,StringBuffer里面的数据都累加,怎么改都不对.求助
其实在java中是没有真正的全局变量的,因为一个java程序其实就是由多个类方法堆积起来的,而每个类、方法中的变量实际上都是属于它自己的“全局变量”,相对于其他类、方法来说这些变量就成了局部变量(因为他们可能不能调用)。简单的说就是在针对一个main方法中,所有的类方法都能调用的变量,就是全局变量(即它的作用域是整个程序)。
总的来说,全局变量,局部变量都只是个相对概念,要靠自己在写程序的过程中去慢慢体会理解。追问
那这个例子前台固定需要以下格式:java\\JAVA基础\\30天搞定 的数据,请问要怎么改进,不考虑性能,判断的情况.
参考技术A 看你的项目的结构是怎样的,如果所有的ACTION都是交给SPRING来管理的,那就容易了,只要在<bean id="" class="action" scope="prototype"/>加入scope的配置就可以了
如果是Struts2自己管理的话应该不会有这个问题 我记得Struts2本身就是多例的
如果是Struts1.2 那就不应该在Action里有全局变量,而应该在Form里
补充:
SpringMVC 控制器同样不应该使用多例的 如果非要如此@Scope("prototype")应该是可以的,但应该把控制器和model层分开,这跟Struts2是不同的。 参考技术B 你可以用messageTest.delete(0, messageTest.length()-1)追问
前台要的数据需要固定格式: java\\JAVA基础\\30天搞定 但第一次请求接收正确是:java\\JAVA基础\\30天搞定
第二次请求是:java\\JAVA基础\\30天搞定\\java\\JAVA基础\\30天搞定
依次累加,所以搞不定
你这种说法我用过了.报错的.
建议你修改下getList方法 写个公共的,带个私有的,把递归的逻辑写成私有方法,供公有调用,StringBuffer在方法体内部声明
public String getList(String id)
StringBuffer sb = new StringBuffer("");
getListDG(id, sb);
String str = sb.toString();
....
private void getListDG(String id, StringBuffer sb)
递归那一套逻辑
if(!parentid.equals("0"))
getListDG(parentid,sb);
以上是关于java全局变量清空?的主要内容,如果未能解决你的问题,请参考以下文章