java全局变量清空?
发布网友
发布时间:2022-04-23 21:30
我来回答
共4个回答
热心网友
时间:2023-10-10 07:14
其实在java中是没有真正的全局变量的,因为一个java程序其实就是由多个类方法堆积起来的,而每个类、方法中的变量实际上都是属于它自己的“全局变量”,相对于其他类、方法来说这些变量就成了局部变量(因为他们可能不能调用)。
简单的说就是在针对一个main方法中,所有的类方法都能调用的变量,就是全局变量(即它的作用域是整个程序)。
总的来说,全局变量,局部变量都只是个相对概念,要靠自己在写程序的过程中去慢慢体会理解。追问那这个例子前台固定需要以下格式:java\\JAVA基础\\30天搞定 的数据,请问要怎么改进,不考虑性能,判断的情况.
热心网友
时间:2023-10-10 07:15
看你的项目的结构是怎样的,如果所有的ACTION都是交给SPRING来管理的,那就容易了,只要在<bean id="" class="action" scope="prototype"/>
加入scope的配置就可以了
如果是Struts2自己管理的话应该不会有这个问题 我记得Struts2本身就是多例的
如果是Struts1.2 那就不应该在Action里有全局变量,而应该在Form里
补充:
SpringMVC 控制器同样不应该使用多例的 如果非要如此@Scope("prototype")应该是可以的,但应该把控制器和model层分开,这跟Struts2是不同的。
热心网友
时间:2023-10-10 07:15
你可以用messageTest.delete(0, messageTest.length()-1)追问前台要的数据需要固定格式: java\\JAVA基础\\30天搞定 但第一次请求接收正确是:java\\JAVA基础\\30天搞定
第二次请求是:java\\JAVA基础\\30天搞定\\java\\JAVA基础\\30天搞定
依次累加,所以搞不定
你这种说法我用过了.报错的.
热心网友
时间:2023-10-10 07:16
spring中bean默认是单实例的,也就是你访问无数次,都是同一个实例在给你提供服务,不会再初始化新对象,所以你这个StringBuffer是没有重新初始化过得,跟实例是绑定的,每次访问都只是更新了值;
建议你修改下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);
}
}