第五章————JSP和JavaBean

目录

JavaBean简介:

5.1 编写和使用JavaBean:

5.1.1 编写JavaBean:

5.1.2 保存bean的字节码:

5.1.3 创建和使用bean:

5.2 获取和修改bean的属性:

5.2.1 getProperty动作标记:

5.2.2 setProperty动作标记:

5.3 bean的辅助类:


JavaBean简介:

JavaBean是一种特殊的Java类,它遵循一些命名规范和设计模式,可以在JSP页面中使用。JavaBean通常用来封装数据和逻辑,实现模型层的功能。JavaBean必须实现java.io.Serializable接口,以支持序列化。

5.1 编写和使用JavaBean:

  • 5.1.1 编写JavaBean:

  • 编写一个JavaBean需要遵循一些命名规范和设计模式,例如属性必须使用getset方法来访问,事件必须使用监听器模式来处理等

    如果类的成员变量的名字是xxx,那么为了获取或更改 bean 的属性的值,类中必须提供两个方法:getXxx( ),用来获取属性xxx;setXxx( )用来修改属性xxx.也就是方法的名字用 get 和 set 为前缀;后缀是降属性的名字的首字母大写的字符序列;类中所定义的方法的访问权限都必须是 public 的。类中必须有一个构造方法是 public,无参数的.。例如,下面是一个简单的JavaBean,它定义了一个name属性:

public class Person implements Serializable {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
  • 5.1.2 保存bean的字节码:

  • 编写好一个JavaBean后,需要将其编译为字节码文件,并保存在Web应用的WEB-INF/classes目录下或者打包为JAR文件并保存在WEB-INF/lib目录下。
  • 5.1.3 创建和使用bean:

  • 在JSP页面中可以使用useBean动作标记来创建和使用一个JavaBean。
  • (1) bean 的加载原理

        当 JSP 页面使用 JSP 动作标记 useBean 加载一个 bean 时,Tomcat 服务器首先根据 JSP 动作标记 useBean 中 id 给出的 bean 名字 以及 scope 给出的使用范围,在 Tomcat 服务器管理的pageContent 内置对象中查找是否含有这样的 bean.如果存在,Tomcat 服务器就复制这个 bean 给 JSP页面,就是常说的 Tomcat 服务器分配这样的 bean 给 JSP 页面.如果在 pageContent中没有查找到JSP动作标记要求的 bean,就根据 class 指定的类创建一个 bean,并将所创建的 bean 添加到pageContent 中.可以看出首次创建一个新的 bean 需要用相应类的字节码文件创建对象,当某些 JSP 页面再需要同样的 bean 时,Tomcat 服务器直接将 pageContent 中已经有的 bean 分配给 JSP页面,从而提高 JSP 页面 bean 的使用效率.

    (2) bean 的有效范围和生命周期

        scope 的取值范围给出了 bean 的生命周期,即 scope 屈指决定了 Tomcat服务器分配给用户的 bean 的有效范围和生命周期,因此需要理解 scope 取值的具体意义.下面将对 scope 取值的不同进行说明.

           page bean.scope 的取值为 page 的 bean 称为 page bean,page bean 的有效范围是用户访问的当前页面,存活时间直到当前页面执行完毕.Tomcat 服务器分配给每个 JSP 页面的 page bean 是互不相同的.换言之,尽管每个 JSP 也免得 page bean 的功能相同,但它们占有不同的内存空间.page bean 的有效范围是当前页面,当页面执行完毕时,Tomcat 取消分配的 page bean,即释放 page bean 占有的内存空间.(注:不同用户的page bean 是互不相同的.也就是说,当两个用户同时访问同一个 JSP 页面时,一个用户对自己 page bean 的属性的改变,不会影响到另一个用户)

          session bean。scope 取值为 session 的 bean 称为 session bean,session bean 的有效范围是用户访问的 Web 服务目录下的各个页面,存活时间是用户的会话期间,直到用户的会话消失(session 对象达到了最大生存时间或用户关闭自己的浏览器以及服务器关闭)。如果用户访问 Web 服务目录多个页面,那么每个页面 id 相同的 session bean 是同一个 bean。因此,用户在某个页面更改了这个 session bean 的属性值,其他页面的这个 session bean 的属性值也将发生同样的变化。当用户的会话消失,Tomcat 服务器取消所分配的 session bean,即释放 session bean 所占有的内存空间。也就是说,当两个用户同时访问同一个 Web 服务目录,一个用户对自己 session bean 属性的改变,不会影响到另一个用户(一个用户在不同 Web 服务目录的 session bean 互不相同)。

         request bean。scope 取值为 request 的 bean 称为 request bean,request bean 的有效范围是用户请求的当前页面,存活时间是从用户的请求产生到请求结束。Tomcat 服务器分配给每个 JSP页面的 request bean 是互不相同的。Tomcat 服务器对请求做出响应之后,取消分配给这个 JSP 页面的 request bean。也就是说,request bean 只在当前页面有效,直到响应结束。request bean 的存活时间略长于 page bean,原因是 Tomcat 服务器认为页面执行完毕后,响应才算结束。当两个用户同时请求同一个 JSP 页面时,一个用户对自己 request bean 属性的改变,不会影响到另一个用户。

         application bean。scope 取值为 application 的 bean 称为 application bean,application bean的有效范围是当前 Web 服务目录下的各个页面,存活时间直到 Tomcat 服务器关闭。Tomcat服务器为访问 Web 服务目录的所有用户分配一个共享的 bean,即不同用户的 application bean 也都是相同的一个。也就是说,任何一个用户对自己 application bean 属性的改变,都会影响到其他用户。
     

    例如:
<jsp:useBean id="person" class="com.example.Person" />

该动作标记会创建一个名为person的变量,并将其初始化为一个新创建的Person对象。如果该对象已经存在,则不会创建新对象。

5.2 获取和修改bean的属性:

  • 5.2.1 getProperty动作标记:

  • 可以使用getProperty动作标记来获取一个JavaBean的属性值。例如:
<jsp:getProperty name="person" property="name" />

该动作标记会调用指定名称的JavaBean(即person)的指定属性(即name)的getter方法,并将返回值输出到客户端。

  • 5.2.2 setProperty动作标记:

  • 可以使用setProperty动作标记来设置一个JavaBean的属性值。例如:
<jsp:setProperty name="person" property="name" value="Bing" />

该动作标记会调用指定名称的JavaBean(即person)的指定属性(即name)的setter方法,并将指定值(即"Bing")作为参数传递。

5.3 bean的辅助类:

除了直接使用动作标记外,还可以使用EL表达式或JSTL标签库来访问和操作JavaBean。例如:

<c:set target="${person}" property="name" value="Bing" />
${person.name}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值