当然会实例化一个值
session只是对BEAN的生存期作一个限制。
你要的是串行化吧
session只是对BEAN的生存期作一个限制。
你要的是串行化吧
解决方案 »
- 工程访问一次数据库后 tomcat服务就关闭了 请各位大虾指点
- jsp生成静态页面最好用什么技术?如果要求查询页也生成静态页面呢?急!!!
- 问一个关于hibernate的问题
- 我想知道这两种调用方式的区别是什么?
- 请问我想匹配所有字符,正则表达式怎么写
- 简繁转换问题
- 出不来,求解
- ssh2整合出现的问题nested exception is org.hibernate.hql.ast.QuerySyntaxException
- 求助简单的问题---JSP获取Form提交参数并显示在Table当中---回答者有分
- 初学java,不知道为什么我的java程序不能运行,提示:Exception in thread "main" java.lang.NoClassDefFoundError: SimpleTypes
- 隐藏本机IP?
- jsp的usebean指令中的属性疑问
当使用bean时候,如果session存在这个对象是不会新实例化得MSG 的scope为session 吗?
你还是用public String吧,或定义一个getMessage()的方法来返回你的message
MSG 的scope设置为session不就可以
可是发生异常时,并没有通过use bean调用MSG,而是别的类发生了异常才调用MSG,然后将异常信息写入,另一个页面B显示信息时,先要use bean MSG,这是因为先前的MSG在session里并不存在,所以会实例化一个MSG,而这个MSG实例与发生异常时的MSG不是同一个实例,所以无法得到值!
在jspB中getAttribute就行了
你的意思是你在一些类的错误处理中把信息写到MSG的类中??那你就要这样
A.jsp
useBean MSG scope=session id=msg
在你的那些类中使用MSG的时候不要新实例化,用(MSG)session.getAttribute("msg")来得到MSG使用
B.jsp
useBean MSG scope=session id=msg
就可以得到A.jsp产生的错误message
你们的想法很好,可是无法在jspA中使用session.setAttribute("msg",MSG),因为jspA页面根本得到MSG,而是jspA页面调用java bean,比如BeanA,发生异常时调用MSG,所以和jsp页面没有关系,是bean之间的调用;to hjwl(hj) :
在那些类中如何编写(MSG)session.getAttribute("msg")?需要传递什么参数?
你的错误处理方式到底是什么呢?刚开始我理解你的问题是一个bean在scope设置为session时候,在其他页面useBean的时候是否会实例化一个新的。现在看到的问题好像不是这个 我现在的理解
你有一个MSG的class来专门作错误信息的纪录,在你的A.jsp中使用的各个class中只要有错误就要调用MSG来写错误信息,但是你在b.jsp中使用MSG时候是新实例化因此得不到A.jsp里面记录的错误。
解决方法:
A.jsp
useBean MSG scope=session id=msg 或 session.setAttribute("msg",MSG)
A.jsp中使用的class都必须使用从session取出的msg 也就是(MSG)session.getAttribute("msg"),你的这些class 都增加一个getMSG(HttpSession session)的方法,用这个传递的session对象取得session中的msg
B.jsp
useBean MSG scope=session id=msg 或 (MSG)session.getAttribute("msg",MSG)
我就想知道怎么写这个getMSG(HttpSession session)方法
将(MSG)session.getAttribute("msg")作为参数传给这个方法是吗?
在方法里怎么写?
返回为MSG 参数是HttpSession
取得MSG
(MSG)session.getAttribute("msg")
是interface?
使用ServletContext可以作为参数吧,也有getAttribute方法
我刚才把HttpSession写成Httpsession了:(