JavaBean
1、JavaBean是特殊的Java类,使用 Java 语言书写,并且遵守JavaBean API规范的可重用组件;
以下是 JavaBean API 中的对 JavaBean 类的规范:
- 提供一个默认的无参构造函数;
- 需要被序列化并且实现了Serializable接口;
- 可能有一系列可读写属性;
- 可能有一系列的"getter"或"setter"方法;
2、JavaBean可以分为2种:
- 有用户界面(UI)的 JavaBean,比如Swing框架中的各种组件;
- 没有用户界面的,主要负责事务(数据运算,数据库操作)的 JavaBean,JSP通常访问这种 JavaBean;
3、一个JavaBean由3部分构成:
- 属性(properties)
JavaBean提供了高层次的属性概念,拥有属性读取和属性写入的API的支持,同时对bean进行操作。JavaBean还可以对属性值的改变作出及时的反应;
- 方法(method)
对于JavaBean中,外部可调用的方法一般是各种属性的 getter 和 setter 方法,对有 JaveBean 的设计初衷,外部调用 JavaBean 更多依赖于Bean的属性和事件;
- 事件(event)
Bean与其他软件组件交流信息的主要方式是发送和接受事件,事件为JavaBean组件提供了一种发送通知给其他组件的方法;
4、Java Bean 类的简单示例
MessageBean.java : 定义一个储存信息的 Java Bean
package demo;public class MessageBean implements java.io.Serializable{ private String id = null; private String message = null; private int level = 0; public MessageBean(){ } public String getId(){ return this.id; } public String getMessgae{ return this.message; } public String getLevel{ return this.level; } public void setId(String id){ this.id = id; } public void setMessage(String message){ this.message = message; } public void setLevel(int level){ this.level = level; }}JSP 对 JavaBean 的访问
JSP 中对于 JavaBean 的访问主要是通过<jsp:useBean><jsp:setProperty><jsp:getProperty>这3个动作元素来实现的;
1、JSP 加载/创建 JavaBean实例
<jsp:useBean> 动作用来加载一个将在JSP页面中使用的JavaBean, 语法格式如下:
<jsp:useBean id="name" class="package.class" /><jsp:useBean> 相关属性
| class | 指定Bean的完整包名。 |
| type | 指定将引用该对象变量的类型。 |
| beanName | 通过 java.beans.Beans 的 instantiate() 方法指定Bean的名字 |
如同所有 JSP 动作标签一样,要对<jsp:useBean>指定 id 和 scope 属性,详见:03. JSP 动作标签
在类载入后,可以通过 <jsp:setProperty> 和 <jsp:getProperty> 动作来修改和检索bean的属性;
2、JSP 设置 JavaBean 属性值
<jsp:setProperty>动作用于设置已经实例化的Bean的属性,由2种用法:
① jsp:useBean元素的外面(后面)使用jsp:setProperty, 此时,不管 jsp:useBean 是找到了一个现有的Bean,还是新创建了一个Bean实例,jsp:setProperty 都会执行。 如下所示:
① jsp:useBean元素的外面(后面)使用jsp:setProperty, 此时,不管 jsp:useBean 是找到了一个现有的Bean,还是新创建了一个Bean实例,jsp:setProperty 都会执行。 如下所示:
<jsp:useBean id="myName" /><jsp:getProperty name="myName" property="someProperty" />② 把 jsp:setProperty 放入 jsp:useBean 元素的内部,此时,jsp:setProperty 只有在新建Bean实例时才会执行,如果是使用现有实例则不执行 jsp:setProperty;
<jsp:useBean id="myName" > <jsp:setProperty name="myName" property="someProperty" /></jsp:useBean><jsp:setProperty>相关属性
| name | name属性是必需的。它表示要设置属性的是哪个Bean。 |
| property | property属性是必需的。它表示要设置哪个属性。有一个特殊用法:如果property的值是"*",表示所有名字和Bean属性名字匹配的请求参数都将被传递给相应的属性set方法。 |
| value | value 属性是可选的。该属性用来指定Bean属性的值。字符串数据会在目标类中通过标准的valueOf方法自动转换成数字、boolean、Boolean、 byte、Byte、char、Character。例如,boolean和Boolean类型的属性值(比如"true")通过 Boolean.valueOf转换,int和Integer类型的属性值(比如"42")通过Integer.valueOf转换。 value和param不能同时使用,但可以使用其中任意一个。 |
| param | param 是可选的。它指定用哪个请求参数作为Bean属性的值。如果当前请求没有参数,则什么事情也不做,系统不会把null传递给Bean属性的set方法。因此,你可以让Bean自己提供默认属性值,只有当请求参数明确指定了新值时才修改默认属性值。 |
3、JSP 获取 JavaBean 属性值
<jsp:getProperty>动作提取指定Bean属性的值,转换成字符串,然后输出。语法格式如下:
<jsp:useBean id="myName" /><jsp:getProperty name="myName" property="someProperty" /><jsp:getProperty>相关属性
| name | 要检索的Bean属性名称。Bean必须已定义。 |
| property | 表示要提取Bean属性的值 |
4、简要示例
该例子直接引用以上的示例 JavaBean 类 MessageBean
<% page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html><html><head><meta charset="utf-8"><title>Use Java Bean Test</title></head><body><h2>Use Java Bean Test</h2><%--创建Java Bean实例: 可以不指定scope,默认为page --%><jsp:useBean id="message_bean" class="demo.MessageBean" scope="page" /> <%-- 设置Java Bean的属性值--%><jsp:setProperty name="message_bean" property="id" value="0113" /><jsp:setProperty name="message_bean" property="message" value="This is Just a test message!" /><jsp:setProperty name="message_bean" property="level" value="3" /> <%--回显Java Bean 的各项属性值 --%><p>id: <jsp:getProperty name="message_bean" property="id" /> <p><p>message: <jsp:getProperty name="message_bean" property="message" /><p><p>level: <jsp:getProperty name="message_bean" property="level" /><p></body></html>

4872

被折叠的 条评论
为什么被折叠?



