useBean的体
从上一节我们已经知道,useBean在找不到指定对象的时候重新创建对象。我们可能这样想--在没有找到对像的时候创建对象并设置属性。但是我们如果直接用<jsp:setProperty />时很可能覆盖掉本来存在的对象的属性。实例代码如下:
使用useBean的体,进行有条件的设置属性。
实例代码如下:
这样,只有创建新的bean是才会设置属性了。
useBean实现多态引用
<jsp:useBean id="people" class="非抽象类的权限定名" type="父类的权限定名" scope="作用域" />
这里面tyep实际上是用来声明的,而不会进行初始化。而class属性就可以声明并且初始化。所以,在作用域中有bean对象时<jsp:useBean id="people" type="com.star7.goodjob.People" scope="request" />是正确的,因为他不需要初始化。
作用域
page:是在本jsp文件中有效的bean。
request:是在一次请求中有效的bean。也就是request.setAttribute("beanName",bean实体)中的 bean实体。
session:是在一次会话中有效的bean。也就是session.setAttribute( "beanName",bean实体)中的 bean实体。
context:是整个应用中有效的bean。