JSP_7th_动作指令jsp:useBean

一、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实例类型,可以是本类,或其父类,或实现的接口,默认为本类。






  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值