当前位置: 技术问答>java相关
JSP中Bean的可见性(急得不行
来源: 互联网 发布时间:2015-10-20
本文导语: 我在Servlet中创建了Bean,通过request.setAttribute()方法,使其在作request域内可见。然后使用RequestDispatcher.forward()方法,将请求转发到一jsp。在该jsp中设置该Bean的scope属性为"request"。然后我在该jsp页面中使用该Bean,到此一...
我在Servlet中创建了Bean,通过request.setAttribute()方法,使其在作request域内可见。然后使用RequestDispatcher.forward()方法,将请求转发到一jsp。在该jsp中设置该Bean的scope属性为"request"。然后我在该jsp页面中使用该Bean,到此一切正常。
但是,当我在jsp中提交一个Form,Form的action属性为同一jsp,Servlet中创建的Bean已不可访问。如果我在Servlet和jsp中使Bean的可见性为session时,一切正常。考虑到jsp是多线程执行,我不想扩大该Bean的作用域,我该咋办?
但是,当我在jsp中提交一个Form,Form的action属性为同一jsp,Servlet中创建的Bean已不可访问。如果我在Servlet和jsp中使Bean的可见性为session时,一切正常。考虑到jsp是多线程执行,我不想扩大该Bean的作用域,我该咋办?
|
这个示例程序会生成一个在com.myPackage.myBeanClass 类中定义过的bean的实例,在该页中命名为myBeanInstance;它只在其生命周期――对此JSP页的一个HTTP请求之内存在。
你在form提交之后,实际上是刷新了该页,所以request的作用域太小.
另外,你的jsp是多线程的,但是与你的javabean无关,你的javabean即使扩大到session的范围也没有问题.
因为每个用户浏览程序的时候,拥有独立的session,彼此不会干扰.
bean的作用范围太小的时候,可能会频繁开关数据库,造成数据库繁忙,导致系统性能下降.