JavaBeans

作者: 米都都 | 来源:发表于2019-01-08 10:17 被阅读0次
    • JavaBeans的出现是为了减少JSP中的代码数量,增加代码的重用性。因为写在JSP中的代码不可能重用,但是JavaBeans从外观看来不过是普通的Java类,可以重用。

    • JavaBeans类需要满足2个条件

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

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

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

      (1) useBean

        <jsp:useBean id="book" scope="request" class="bean.util.Book"/>
      

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

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

      (2) setProperty

        <jsp:setProperty name="book" property="author" value="LuXun"/>
      

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

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

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

      (3) getProperty

        <jsp:getProperty name="book" property="author">
      

      其中 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处理期间可以被共享使用(包括使用<jsp:forward>转发),并且保证线程安全。

      相当于

        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

          本文链接:https://www.haomeiwen.com/subject/adcvrqtx.html