JavaBeans

  • JavaBeans的出现是为了减少JSP中的代码数量,增加代码的重用性。因为写在JSP中的代码不可能重用,但是JavaBeans从外观看来不过是普通的Java类,可以重用。

  • JavaBeans类需要满足2个条件

    (1)有一个public的默认无参数构造函数

    (2)对私有的字段提供public的getter/setter方法,且这些getter/setter方法不可重载

  • JSP中提供了专门的动作来操作JavaBeans

    (1) useBean

      
    

    其中 id属性代表接下来要使用当前对象的名字代号,scope属性代表对象的有效范围,class属性代表JavaBeans类的位置

    useBean相当于将某个JavaBeans类装载进JSP页面,并且创建一个类的实例

    (2) setProperty

      
    

    其中 name属性代表当前对象实例的名字(和useBean中的id属性相对应),property属性代表一个JavaBeans类的setXXX方法中的XXX部分,value代表要set的值

    setProperty相当于对某个JavaBeans的对象实例的各种字段进行set

    当使用 property=""的时候,代表自动匹配对JavaBeans的字段进行set。这种常见于一个form和一个JSP页面绑定,此时表单中的参数名和JavaBeans中的setter方法进行匹配,这种匹配通过反射机制实现,使用property=""就会进行自动装配,找不到也不会抛出异常。

    (3) getProperty

      
    

    其中 name属性代表当前对象实例的名字(和useBean中的id属性相对应),property属性代表一个JavaBeans类的getXXX方法中的XXX部分

    getProperty用于获得JavaBeans对象的某个字段的值,相当于

      <% out.println(book.getAuthor(); %>
    
  • 关于useBean中的scope属性

    每个JavaBeans对象有自己的对象作用范围,一共提供了四种作用范围

    (1) page (默认)

    作用范围为当前JSP页面,如果在当前页面中找不到当前JavaBeans的实例,则会调用默认构造函数进行实例化。

    相当于

      Book book = null;
      if ( pageContext.getAttribute("book") == null ) {
          book = new Book();
          pageContext.setAttribute("book", book);
      } else {
          book = (Book) pageContext.getAttribute("book");
      }
    

    (2) request

    代表这个对象在同一个request处理期间可以被共享使用(包括使用转发),并且保证线程安全。

    相当于

      Book book = null;
      if ( request.getAttribute("book") == null ) {
          book = new Book();
          request.setAttribute("book", book);
      } else {
          book = (Book) request.getAttribute("book");
      }
    

    (3) session

    作用范围为同一用户的不同JSP页面和Servlet

    相当于

      Book book = null;
      if ( session.getAttribute("book") == null ) {
          book = new Book();
          session.setAttribute("book", book);
      } else {
          book = (Book) session.getAttribute("book");
      }
    

    (4) application

    作用范围为不同用户在不同JSP页面和Servlet

    相当于

      Book book = null;
      if ( application.getAttribute("book") == null ) {
          book = new Book();
          application.setAttribute("book", book);
      } else {
          book = (Book) application.getAttribute("book");
      }
    

    四种作用范围的大小排序为:

    application > session > request > page, page为默认范围

你可能感兴趣的:(JavaBeans)