读《JavaServer Faces 核心编程(第3版)》一书的记录—— 第 2 章 受管 bean——案例 numberquiz

来源:互联网 发布:linux shell 暂停几秒 编辑:程序博客网 时间:2024/04/28 12:10
All +All -

numberquiz

  • + -使用案例
    • + -运行案例
      • 在NetBeans中运行
    • + -自动打开首页面
      • 提供一组序列(由5个数字元素组成)
      • + -提供一个输入文本框
        • 以供用户填写序列的第6个元素
      • + -提供一个按钮
        • 以供用户提交答案
      • + -提供一个输出文本组件(在Your current score is后)
        • 以供显示得分数
    • + -操作描述
      • 在文本框中输入用户猜想的序列的下一个元素,然后点击按钮
      • + -页面内容变化
        • 序列更新
        • 文本框内容清空
        • 如果答案正确,得分数加一分
        • 如果答案不正确,得分数不变
  • + -阅读案例(重点记录新知识点)
    • + -第一层面:视图
      • + -作用
        • 与用户直接交互
      • + -内容
        • +-视图index.xhtml
          • HTML 标签
          • +-JSF html 标签
            • +-h:outputFormat
              • 输出参数化的文本
              • +-特性value
                • 值:"#{msgs.currentScore}"

                  指定该组件的显示文本,例如“Your current score is {0}.”

                  该处指定的文本中存在“可变部分”

                  把这些“可变部分”使用“占位符”

                  占位符以{0},{1},{2}等编号

              • +-子标签f:param
                • 参见 JSF core标签一节
          • +-JSF core 标签
            • +-f:param
              • 为父组件上的消息中的占位符指定值,使用特性value
              • +-特性value
                • 值:"#{quizBean.score}"
                • 指定父组件上显示文本中的占位符的值
    • + -第二层面:控制
      • + -一,视图控制层
        • +-作用
          • 上接受视图的调用
          • 下对数据管理层的搭配
        • +-内容
          • +-视图后台bean(上下文和相关性注入CDI bean)
            • +-

              什么是CDI bean(以类QuizBean为例)?

              • 该类必须符合JavaBean规范
              • +-使用标注@Named来声明该类为CDI bean
                • 默认声明一个bean对象,其名称为:该类名称的首字母转为小写后的字符串
                • 可以在标注后的圆括号内写入对象名称字符串,例如:@Named("quiz")
                • 可以对标注的特性name赋值,例如:@Named(name="quiz")
              • +-使用标注@SessionScoped来声明该bean的有效域
                • 此时,该类必须实现接口Serializable
              • 必须包含文件WEB-INF/beans.xml以激活CDI bean 处理机制

              +-CDI bean与JSF 管理bean的区别(以类QuizBean为例)?

              • +-CDI bean
                • @Named来自于程序包:javax.inject.Named
                • @SessionScoped来自于程序包:javax.enterprise.context
                • 用于Java EE 6应用服务器中
              • +-管理bean
                • @ManagedBean
                • @SessionScoped来自于程序包:javax.faces.bean
                • 仅用于servlet运行器(如:Tomcat)中
              • +-bean的使用
                • 上述两种bean,在页面文件中的使用,完全相同
                • 可以统称为“页面后台bean”
              • +-回头看第一章中的案例
                • 其中的“页面后台bean”,称为“后台管理bean”
                • 那里只是在“CDI bean”概念没有引入之前,暂时保留JSF2.0之前版本的称谓而已
                • 在此后的章节中,可以将这些bean统一称为“页面后台bean”或者“视图后台bean”

              +-页面index.xhtml中使用的CDI bean

              • +-对象名称:quizBean
                • 对应的Java Bean:GuizBean
                • +-用例
                  • #{quizBean.score}
                  • #{quizBean.current.sequence}
                  • #{quizBean.current.sequence}
                  • #{quizBean.answer}

          • +-消息包
            • +-制定消息包
              • +-将消息字符串收集到一个文件中
                • 文件名称:可以选择任意
                • 文件后缀:必须是properties
                • +-文件内容:采用键与值的等式来描述
                  • 例如:username=User Name:
                  • 一个文件格式,可以查看java.util.Properties 类load方法的说明
              • +-消息包文件保存的位置
                • 可以选择任意目录路径
                • 该案例保存在:src/java/com/corejsf/messages.properties
              • +-声明消息包
                • +-声明为局部(某个页面)资源包
                  • +-将f:loadBundle元素添加到JSF页面中
                    • +-用例
                      • <f:loadBundle basename="com.corejsf.messages" var="msgs" />
                    • +-特性
                      • +-basename="com.corejsf.messages"
                        • 这里的“基本名称”,使用类全路径的形式
                        • 实际上,该属性文件是由类加载器加载的
                      • +-var="msgs"
                        • 它是该属性文件的映射变量
                        • +-使用
                          • 使用JSF表达式语言符号#{...}
                          • +-使用映射变量来访问文件中的键,返回该键的值
                            • 例如:#{msgs.title}
                            • 返回值:NumberQuiz
                • +-声明为全局资源包(本案例使用的)
                  • +-在应用程序的WEB-INF目录中添加一个配置文件faces-config.xml
                    • +-用例
                      • <application>

                              <resource-bundle>

                                 <base-name>com.corejsf.messages</base-name>

                                 <var>msgs</var>

                              </resource-bundle>

                        </application>

                    • +-使用
                      • 参考“使用局部资源包”中的相关内容
            • +-消息包的作用
              • 便于保持消息的一致性
              • 便于在其他地区运行应用程序时进行本地化处理
            • +-消息包的使用
              • +-在index.xhtml页面文件中
                • #{msgs.title}
                • #{msgs.heading}
                • #{msgs.currentScore}
                • #{msgs.next}
      • + -二,数据控制层
        • +-作用
          • 上接受视图管理层的调配处理
          • 下对数据对象的操作
        • +-内容
          • +-数据控制器
            • 该案例由视图后台bean quizBean代替
            • +-在其中直接管理“数据对象”
              • 这里的数据对象是类ProblemBean,在实际应用程序中,

                大多都将此类信息存储在数据库中

            • +-数据控制器的使用
              • 直接构造“数据对象”,并操作这些对象
    • + -第三层面:模型
      • + -一,数据对象层
        • +-作用
          • 上接受数据管理层的调配处理
          • 下对数据进行操作
        • +-内容
          • +-数据对象
            • 这里是类ProblemBean的实例对象
            • 该类对象负责对数据进行操作
            • +-数据对象的使用
              • 通过“数据控制器”实现对数据的存取
      • + -二,数据表层

原创粉丝点击