浅谈JavaBean

  1、JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean遵守bean规范,有利于数据的封装与重用。
  2、javabean具有以下几种特性:
    • 支持反射机制:利用反射机制可以分析出JavaBean是如何运行的
    • 支持事件:是一种简单的通信机制
    • 支持属性:可以自定义属性,通过标准标签与jsp页面进行数据交互
    • 支持持久性:是指可以将JavaBean进行保存在需要的时候又可以重新载入
  3、 javabean的部分属性有相应的get和set方法 ,对应的方法为:get(set)加上属性(第一个字母变大写)
package first;

public class Person extends Man{
    private String name;
    private int age;
//属性第一个字母变为大写,前边加上set
public void setAge(int age) { this.age = age; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public String getName() { return name; }
}

  4、jsp提供了JavaBean 3中标准动作既:<jsp:useBean> <jsp:setProperty> <jsp:getProperty>

    ①首先我们来看<jsp:useBean>动作

   <jsp:useBean id="person" class="first.Person" type = "first.Man"  scope = "request"/>

     其对应生成servlet代码

     first.Person person = null;
      synchronized (application) {
        person = (first.Person) _jspx_page_context.getAttribute("person", javax.servlet.jsp.PageContext.APPLICATION_SCOPE);
        if (person == null){
          person = new first.Person();
          _jspx_page_context.setAttribute("person", person, javax.servlet.jsp.PageContext.APPLICATION_SCOPE);
        }
      }

 标签内的相应属性对应的含义我们用一个表格来描述

属性值 说明
id  

给Bean起个变量名可以在指定范围内使用改变量。如:person等同Personperson = new Person();

class bean的路径名必须是page.class。如Person在包first中故为first.Person,默认值为page
scope bean的有效范围,取值有page,request,session,application,
beanName 实例化的类名称或序列化模板的名称,制定的名称可以为其接口,父类。ji
type 指定其父类或接口名称。如实例化hashMap,type可以写Map,当没有父类或接口时可以省去
  1. 谈完属性我们再来谈谈他的作用域名scope。其作用域有四种page,request,session,application
    • page:仅仅在当前页面有效。通过forward转向其他页面都将导致其生命周期的结束
    • request:  1>客户请访问的当前jsp页面。2>与当前jsp页面共享同一个客户请求的页面既当前页面的<%@include>、<jsp:forword>标签包含的其他jsp页    当向客户返回响应时生命周期结束
    • session:  当javabean对象创建后,在整个session会话期间,同一个session共享同一个javabean对象。也可以通过session.getAttribute()方法取得JavaBean对象,当当前客户会话结束时,该javabean立即销毁
    • application:   JavaBean对象被创建后,它存在于整个Web应用的生命周期内,Web应用中的所有JSP文件都能共享同一个JavaBean对象。 JavaBean对象作 为属性保存在application对象中,属性的名字为JavaBean的id,属性值为JavaBean对象除了可以通过JavaBean的id直接引用JavaBean对象外,也可以通过application.getAttribute()方法取得JavaBean对象

    ②当了解完如何创建Javabean对象接下来我们需要了解如何使用Javabean对象。我们可以使用<jsp:setProperty>来设置其属性值,标签内的各个属性代表的含义用表格来描

 <jsp:setProperty property ="name" value = "bo" name = "person"/> 

对应生成的jsp_servlet

 org.apache.jasper.runtime.JspRuntimeLibrary.introspecthelper(_jspx_page_context.findAttribute("person"), "name", "bo", null, null, false);
      out.write('\r');

 

属性 说明
name

指定设置那个对象的属性,指bean的名字即为<jsp:useBean>中的id值

property 是指创建的对象(即bean)的属性名,将其值赋给该对象的属性值
param 是指表单传过来的参数,需要将表单传过来的参数设置为该对象的属性值时。当通过表单参数设置bean的属性值时不用设置value的值jsp引擎会自动根据表单中与bean属性名对应,并转化相应的参数类型。
value 要设定的属性值

 

当通过表单参数设置bean的属性值时我们可以通过把属性名设置为通配符“*”来设定所有的bean属性值.例如表单中传过来两个参数name = “hhh”,age = "22".

<jsp:setProperty property = "*", name = "person"> 

执行该代码以后,该bean对象也可以说person实例的name属性值已经设置为hhh,age值已设置为22

    ③有设置属性的bean动作,当然也有取属性的bean动作即为<jsp:getProperty>,该标签必须与<jsp:useBean>标签配合使用

 <jsp:getProperty property = "age" name = "person"/> 

对应生成的jsp_servlet代码

  out.write(org.apache.jasper.runtime.JspRuntimeLibrary.toString((((first.Person)_jspx_page_context.findAttribute("person")).getAge()))); 

 该标签只有两个属性name和property其标签内的属性与<jsp:setProperty>中的属性含义相同

 

posted @ 2017-03-17 11:12  短腿的兔子跑得快  阅读(322)  评论(0编辑  收藏  举报