读《JavaServer Faces 核心编程(第3版)》一书的记录—— 第 6 章 数据库——案例 sample

All + All -

sample

  • 本章阅读说明
    • 1,第一步、第二步的内容适合于那些没有读过该案例之前的章节读者,建议其他读者直接从第三步开始阅读
    • 2,这里的读书记录,偏重于该案例在书中想要说明的知识点,而不是把前面章节没有涉及的内容都作为新知识点
    • 3,建议阅读者,能够对照第四步中的内容,写出该案例的功能设计说明书
    • 4,建议阅读者,能够对照第五步中的内容,写出该案例的功能实现方案
    • 5,建议阅读者,能够动手在NetBeans 7.2(或其他IDE)中将该案例从头做一遍
    • 6,本人在读书时,使用了思维导图(FreeMind)工具,如果有阅读者需要原型文档的,可qq联系:1028637037
    • 7,该书是由美国 David Geary 和 Cay Horstmann 合著,由王超翻译,由《清华大学出版社》出版。如果您需要下载案例,可到出版社网址去。
  • 第一步:创建案例
    • 使用随书源码在NetBeans中创建项目
  • + -第二步:运行案例
    • + -一,在IDE中运行该案例
      • *启动首页面index.xhtml
  • 第三步:阅读案例结构
    • web
      • 1,页面文件
        • index.xhtml
      • 2,资源文件
      • 3,WEB-INF
        • 应用程序配置文件:web.xml
        • CDI配置文件:beans.xml
        • JSF配置文件:faces-config.xml
    • 源包src
      • com.corejsf
        • 类:TableData.java
        • 类:Name.java
        • 消息包:messages.properties
      • JDK 1.7
      • GlassFish Server 3.1.2
  • 第四步:阅读案例新功能
    • 第一层面:视图
      • 页面文件
        • 首页:index.xhtml
          • 1,从运行结果看
            • *窗口标题显示内容:A Simple Table
              • 一个简单的表
            • *页面主体内容
              • 1行文本:An array of names:
              • 4行西方人的姓名
                • 每行分为2列
                • 每列之间由英文的逗号“,”隔开
          • 2,从页面文件看(新内容)
            • *1个“数据表”组件
              • 标签:h:dataTable
              • 迭代的数据由特性value指定:value="#{tableData.names}"
              • 迭代数据中的每个项由特性var指定:var="name"
            • *2个数据表的“数据列”组件
              • 作为数据表组件的子组件来使用
              • 标签:h:column
              • 用来显示数据表的一个列
    • 第二层面:控制
      • 页面控制器
        • TableData
          • *对应页面JSF HTML组件的属性
            • 1,names:Name[]
          • *对应页面JSF HTML组件的方法
            • 1,对应于上述属性的读方法getNames():Name[]
      • 数据控制器
        • TableData
    • 第三层面:模型
      • 对象模型
        • Name
          • *对象属性
            • 1,first:String
            • 2,last:String
          • *对象行为
            • 1,对应上述属性的读写方法
    • 第四层面:配置
      • 无新内容
    • 新功能重点总结
      • *在页面中显示一个数据表
      • *该数据表主要显示一个数组中的所有项的内容
      • *数组中每个项的内容是西方人的名称,即由两段组成的名称
      • *每个人名由一行显示出来
      • *每行分2列,分别显示名称中的前、后段内容
      • *每个列之间用英文的逗号隔开
  • 第五步:详解新技术(数据表)的应用
    • 第一层面:视图
      • 视图文件
        • index.xhtml
          • *为了使用一个数据表,应用一个数据表标签h:dataTable迭代数据来创建HTML表格

            *为了指定数据表中使用的数据,应用数据表标签的特性value的值来指定

            • 例如:value="#{tableData.names}"
            • 特性value的值可以是
              • 一个Java对象
              • 或一个数组
              • 或java.util.List的实例
              • 或java.sql.ResultSet的实例
              • 或javax.servlet.jsp.jstl.sql.Result的实例
              • 或javax.faces.model.DataModel的实例

            *为了迭代数据表中使用数据的每一项,应用数据表标签的特性var的值来指定

            • 例如:var="name"

            *为了显示数据表中数据的每一项的各个列,应用数据表标签的子标签h:column

            • 例如:
              <h:column>
                             #{name.last},             
              </h:column>              
              <h:column>
                             #{name.first}             
              </h:column>

      • 视图资源
    • 第二层面:控制
      • 页面控制器
        • TableData
          • *在index.xhtml页面中使用
            • 对象名称为:tableData

              对象的方法getNames()返回值,作为“数据表”组件的特性value的值:

              value="#{tableData.names}"

      • 数据控制器
        • TableData
          • 通过方法getNames()操作(获取)对象模型Name的对象数组:

            public Name[] getNames() {

                    return names;

            }

    • 第三层面:模型
      • 对象模型
        • Name
          • *属性
            • first:String
            • last:String
          • *方法
            • 属性对应的读写方法

              构造方法,具有上述两个属性对应的参数:

              public Name(String first, String last) {

                      this.first = first;

                      this.last = last;

                  }

    • + -第四层面:配置
      • 无新内容
    • + -第五层面:国际化
      • 英文消息文件
        • com.corejsf.messages.properties
      • 注意:这里不讨论太多国际化问题,它超出了该案例的主要问题

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值