我在后台启动时给一个static的List放入一个对象
static List list = new ArrayList();
list.add(new Job())
那么现在list的size就是1了。然后我在jsp里面得到list,并企图得到
Job job = (Job)list.get(0);
可是不对,因为现在的list又为空了,
我想他既然是静态的list,那么我在后台给他的值应该还在啊?我是用的嵌入式服务器,在后台运行时也启动了服务器,
所以可以访问jsp页面。请大家告诉我原因?以及怎么才能在jsp中得到后台给list的对象?
static List list = new ArrayList();
list.add(new Job())
那么现在list的size就是1了。然后我在jsp里面得到list,并企图得到
Job job = (Job)list.get(0);
可是不对,因为现在的list又为空了,
我想他既然是静态的list,那么我在后台给他的值应该还在啊?我是用的嵌入式服务器,在后台运行时也启动了服务器,
所以可以访问jsp页面。请大家告诉我原因?以及怎么才能在jsp中得到后台给list的对象?
解决方案 »
- j2ee培训,与自学或在学校学习说法上的差别
- 关于Hibernate进行单向一对多的映射问题
- 在线等。。。求一hibernate中对日期时间查询的语句
- ActionForm中取得的String为什么不能传到另外一个方法中作为参数,非常诡异的问题
- was向mq里面发消息为什么说:javax.naming.NameNotFoundException: Name jms not found in context "java:comp/env".
- 在做spring跳转时,发现跳转后的IE地址栏内的URL还是请求时候的URL,有什么办法强制改变过来吗?
- struts求救
- MyEclipse10+axis2 生成客户端代码,运行时出现Wrong number of arguments!
- JTable
- spring 实现转账功能
- Juint下保存图片可行,但页面上操作就报错?
- jsp在input的value里面如何输出""
request.getAttribute();
我是直接用jsp操作后台的类,没用servlet,所以不能response.setAttribute()。
static不是在内存中共享吗,在任何地方都能访问,所以我用static,
除了response.setAttribute(),怎么才能在前台用后台的变量呢?
jsp页面用el表达式取
也可以在页面用<%%>取
public static List list = getList(); //这里是个静态的 获得List的方法public static List getList(){
//具体代码
}
我要在启动服务器(运行main函数)的时候就得给list值,
这个值只能启动服务器时得到,在启动完以后是得不到的,
也就是我想要保持list中的值,直至在jsp中只用,而不是
在jsp中重新做赋值操作。
你能明白我的意思吗?
现在主要问题是我在main中的list和我在jsp中的list不是同一个,
谁能解释一下为什么?
public static ArrayList list = new ArrayList();
}
//...
//程序启动时
A.list.add(new Job());
//jsp页面
Job job = (Job)A.list.get(0);
可事实上得不到,因为
在jsp页面:Job job= (Job)A.list.get(0);
a.list不再是原来add过的list的了,
这是一个新的!
Test类
public class Test {
public static ArrayList list = new ArrayList();
}index页面
<%
String a ="mmmmmm";
Test.list.add(a);
%>
<body>
index JSP page. <br>
<a href="test.jsp">test.jsp</a>
</body>
test.jsp页面
<%
String a = (String)Test.list.get(0);
%>
<body>
Test JSP page. <br>
<%=a %>
测试结果:test.jsp页面显示:
Test JSP page.
mmmmmm
你测试的代码是jsp之间的值共享,这个的确可以。
但我的意思这样:
我用main函数执行了以下操作(注意是main):public static void main(String args[]){
Job job = new Job();//job的实例化会启动web服务器
List list = Test.list.add(job);//在这添加到list中
}下面就是在jsp中取了:Test.list.get(0);//这句话会报错,因为list为空list在test中的声明:public class Test {
public static List list = new ArrayList();
.....
}
整体就是这个意思,但死活从jsp中取不到...
main函数的作用就是启动服务器使程序能访问jsp,
启动服务器会相应生成一个服务器对象,
由于将来需要在页面上停止服务要用到这个对象,
所以我需要在jsp得到这个对象(就是main中启动的这个)
要知道这个对象只能在启动服务器(运行main)时得到,
所以我必须要保证这个对象不能消失,
不管把他保存在哪(静态list中也好,静态对象也好),
它要在jsp访问中还能存在,那就达到要求了。
public static void main(String args[]) {
System.out.print(TestDemo.list.size());
}
}
ublic class TestDemo{
public static List<Object> list=getList();
public TestDemo(){
}
public static List<Object> getList(){
list=new ArrayList<Object>();
list.add(new Object());
return list;
}
}怎么可能不行呢!
注意你如果你使用类名调用list的时候,初始化的时候一定不能在构造函数中初始化。
"假如我用一个类代码一个jsp "什么意思?
第一段代码放哪?
第二段代码放哪?
好像您没明白我的意思...