<jsp:usebean>标识属性
type="数据类型" 用于设置由id属性指定的变量的类型。type属性可以指定要创建实例的类的本身、类的父类、类的接口。
格式:
<jsp:usebean id="us" type="com.Bean.UserInfo" scope="session"/>
如果在session范围内,已经存在了名为us的实例,则将实例转换type属性指定的UserInfo类型(必须是合法的类型装换)并赋值给id属性指定的变量;若指定的实例不存在,则将抛出“bean us found within scope”。
class="package.className"
class属性指定了一个完整的类名,其中package表示类包的名字,className标识类的Class文件名称。通过class属性指定的类不能是抽象的,它必须具有公共的、没有参数的构造方法。在没有设置type属性时,必须设置class属性。
<jsp:usebean id=“us” class=“com.Bean.UserInfo” scope="session"/>
程序首先会在session范围内来查找是否存在名为“us”的UserInfo类的实例,如果不存在,那么会通过new操作实例化UserInfo类来获取一个实例,并以"us"为实例名称存储到session范围内。
type 和class 可以指定同一个类
session范围内实例不存在,那么通过new操作符来实例化一个class指定的类的实例并赋值给id指定的变量,最后将变量存储在session范围内。
beanName="package.className" type="数据类型"
如果实例不存在,那么通过instantiate()方法从beanName指定的类中实例化一个类并将其转换成type指定的类的类型后赋值给变量,最后将变量存储在session范围内。
一般应用<jsp:useBean>的格式
<jsp:useBean id="变量名" class="package.className" scope="*****">
<jsp:useBean ****/>与<jsp:useBean>****</jsp:useBean>
第一种无论指定的范围内是否已经存在一个指定的Bean实例,都会执行。
第二种在第一次实例化会被执行,若已经存在了指定的Bean实例,则不执行。
<jsp:setProperty>标识会按照page,request,session,application的顺序来查找由name属性指定的Bean实例,并且返回第一个被找到的实例;