您的位置:首页 > Web前端 > JavaScript

JSP_7th_动作指令jsp:useBean

2017-05-31 23:46 573 查看
一、jsp:useBean

1)通过jsp:useBean,可以在JSP中使用在别的java文件中定义好的Bean。

2)jsp要求Bean应该在一个包中,而不能是裸体类。

2)Bean的基本要素:

①必须要有一个不带参数的构造器,在JSP元素创建Bean时会调用空构造器。

②Bean类应该没有任何公共实例变量(都是private的),也就是说,不允许直接访问实例变量,变量名称首字母

必须小写。

③通过getter/setter方法来读/写变量的值,并且将对应的变量首字母改成大写。

3)基本用法,举例说明:

在TestJSP项目的src目录下新建一个包com.hpe.bean,在包下新建CounterBean.java如下所示:
package com.hpe.bean;

import java.io.Serializable;

public class CounterBean implements Serializable {
private int count = 0;

public CounterBean() {

}

public int getCount() {
return ++count;
}

public void setCount(int count) {
this.count = count;
}
}


可以看出这个Bean实现了Serializable接口,也就是说CounterBean对象可以被java.io.ObjectInputStream写入、被java.io.ObjectOutputStream写出。

写一个TestBean.jsp如下所示:
<jsp:useBean id="cb" class="com.hpe.bean.CounterBean">
</jsp:useBean>


这种写法相当于下面这样:
<%@ page import="com.hpe.bean.CounterBean" %>
<% CounterBean cb = new CounterBean(); %>


也就是说class属性指定了类的位置,id属性指定了对象名(引用名)。

jsp:useBean有一个属性scope,scope="page|request|session|application"

scope默认为page,即由jsp:useBean生成的Bean对象默认是一个局部变量,用户请求一个jsp页面,服务器就调用其service方法生成一个Bean对象,当service方法结束,该变量也就随之消失。

jsp:useBean有一个属性type,即指定生成的Bean对象的类型,如:
<jsp:useBean id="cb" class="com.hpe.bean.CounterBean" type="java.lang.Object">
</jsp:useBean>


相当于下面这种写法:
<%@ page import="com.hpe.bean.CounterBean" %>
<% Object cb2 = new CounterBean(); %>


即父类用指向子类对象,type默认为class所指定的类的类型。

下面在CounterBean.jsp中加入对Bean对象方法的调用:
<jsp:useBean id="cb" class="com.hpe.bean.CounterBean">
</jsp:useBean>

<%= cb.getCount() %>


访问:http://localhost:8080/TestJSP/TestBean.jsp,多次访问后,统计数依然为1:



这是由于Bean对象的type属性默认值为page,因此生成的Bean对象是局部变量。

除了直接调用使用set方法来获取Bean对象的私有成员变量的值,也可以通过jsp:setProperty来设置指定对象的属性。

可以使用jsp:getProperty来设置指定对象的属性,如下所示:
<jsp:useBean id="cb" class="com.hpe.bean.CounterBean">
</jsp:useBean>

<jsp:setProperty name="cb" property="count" value="100" />
<%-- 相当于
<% cd.setCount(100); %>
--%>

<jsp:getProperty name="cb" property="count" />
<%-- 相当于
<%= cb.getCount() %>
--%>


页面效果:



总结:

jsp:useBean各项参数含义:

①id:对象实例名称。

②class:包名.Bean类名

③scope:Bean作用的范围,默认为page,对仅在当前jsp页面有效。
④type:Bean实例类型,可以是本类,或其父类,或实现的接口,默认为本类。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  jsp useBean