jsp:useBean
jsp:useBean用来加载JSP页面中的JavaBean 使用语法如下
<jsp:useBean
id="beanInstanceName"
scope="page|request|session|application"
class="package.class"
type=“指定应用该对象的变量类型,他必须是Bean类的名称,超类的名称,该类所实现接口名字之一。记住变量的名字是由id属性所指定的”
beanName=“指定Bean的名称,如果提供了type和beanName的属性,允许省略class属性”、、后两者属性不常用。
><useBean/>
其中id指明该JavaBean的实例变量的名称,scope指定该bean变量的有效范围,
page仅仅在该页面有效。
request在本次请求有效。
session在本次回话有效
4. application在服务器运行期间一直有效。
Bean在自己的域内只加载一次!!!
scope之所以很重要是因为jsp:useBean只在不存在相同id和scope的对象时才会实例化出新的对象,如果已有id和scope都相同的对象,则直接使用已有的对象,此时jsp:useBean开始标记和结束标记之间的任何内容都将被忽略。
jsp:setProperty
jsp:setProperty可以设置已经实例化的bean对象的属性(每次使用useBean就为创建了一个实例),他有两方法:
第一在jsp:useBean 元素的后面使用jsp:setProperty。
<jsp:useBean id="myName"..../>
......
<jsp:setProperty name="*">//在此可以把所有请求提交过来的链接里的参数和bean中一一对应的赋值,前提是bean中和///请求的的元素名字一样,包括大小写也一样。
<jsp:setProperty name="myName" property="bean中属性器的名称,如果是setName则是name与bean中属性无关">
<jsp:setProperty name="myName" property="bean中属性的名称" value="可以指定bean中元素的值">
<jsp:setProperty name="myName" property=“bean中属性的名称” param="指定request中提交参数的名称">
在上面设置参数过程中,name属性,property属性是必须有的,value和param是选填的。
第二种是直接把<jsp:setProperty >放入到jsp:useBean的元素内部。
<jsp:useBean id="myName">
....
<jsp:setProperty name="myName" property="bean中属性的名称">
<jsp:useBean/>
此时只有在新建实例bean的时候会执行,如果使用现有的实例,则不执行<jsp:setBean>
jsp:getProperty
jsp:getProperty可以获取Bean的值,用于在页面显示。语法格式为
<jsp:getProperty name="beanInstanceName" property="propertyNAME">
name="已经存在bean实例的名称"
property=“指定bean中的属性名称”
注意事项
不能检索一个已经被检索一次的属性,也就是说一个实例中的属性只能被检索一次。
如果getProperty 检索出来的是空值,则系统会抛出NullPointException。