• hello1实例的分析


    JSF简介
    一、 什么是 JSF:
    JavaServer Faces (JSF) 是一种用于构建 Web 应用程序的新标准 Java 框架。它提供了一种以组件为中心来开发 Java Web 用户界面的方法,从而简化了开发。
    JavaServer Faces于2004年三月1.0版正式提出,清楚的将Web应用程序的开发者划分了三个角色:网页设计人员、应用程序设计人员以及UI组件开发人员。 从使用的角度来看,网页设计人员与应用程序设计人员可以他们所熟悉的方式开发程序,而不用侵入彼此的工作范围,而UI组件开发人员可以独立的开发个别组件,细节的部份留给了他们来处理。
    JSF 还通过将良好构建的模型-视图-控制器 (MVC) 设计模式集成到它的体系结构中,确保了应用程序具有更高的可维护性。
    由于 JSF 是通过 Java Community Process (JCP) 开发的一种 Java 标准,因此开发工具供应商完全能够为 JavaServer Faces 提供易于使用的、高效的可视化开发环境。
     
    二、 JSF 体系结构:
    JSF 的主要优势之一就是它既是 Java Web 应用程序的用户界面标准又是严格遵循模型-视图-控制器 (MVC) 设计模式的框架。用户界面代码(视图)与应用程序数据和逻辑(模型)的清晰分离使 JSF 应用程序更易于管理。为了准备提供页面对应用程序数据访问的 JSF 上下文和防止对页面未授权或不正确的访问,所有与应用程序的用户交互均由一个前端FacesServlet(控制器)来处理。
     
    三、 JSF 生命周期:
    FacesServlet 充当用户和 JSF 应用程序之间的纽带。它在明确限定的 JSF 生命周期(规定了用户请求之间的整个事件流)的范围内工作。
    1.   当JSF页面上的一个事件发生时(比如:用户单击了一个按钮),事件通知通过HTTP发往服务器。服务器端使用FacesServet这个特殊的Servlet处理该通知。
    2.   FacesServlet一接收到用户的请求就创建一个FacesContext对象(JSF上下文,它存放了应用程序的所有数据)。在处理过程中,主要修改的就是这个FaceContext对象。
    3.   接着就是处理过程,处理器是一个叫作Lifecycle的对象。FacesServet把控制权转交给Lifecycle对象。该对象分6个阶段来处理FacesContext对象以生成响应,最后将响应发回客户端。
    Lifecycle对象处理JSP请求所需要的一系列动作称为请求处理生命周期。过程状态图如下:

    由于请求处理生命周期里的应用请求值、处理验证、更新模型值和调用应用程序等阶段都可以在当前的请求对应的FacesContext实例中添加事件,因此,JSF实现必须在这些阶段后处理这些事件。

    /**
     * Copyright (c) 2014 Oracle and/or its affiliates. All rights reserved.
     *
     * You may not modify, use, reproduce, or distribute this software except in
     * compliance with  the terms of the License at:
     * https://github.com/javaee/tutorial-examples/LICENSE.txt
     */
    package javaeetutorial.hello1; //这是一个javaee教程的一个实例hello1包
    
    
    import javax.enterprise.context.RequestScoped;//导入注释类型RequestScoped包
    import javax.inject.Named;//导入依赖注入Named包
    
    @Named
    @RequestScoped
    public class Hello {
    
        private String name; //私有变量name
    
        public Hello() {
        }
    
        public String getName() {
            return name;
        }//获取变量name的值
    
        public void setName(String user_name) {
            this.name = user_name; //给name赋值
        }
    }
    <?xml version="1.0" encoding="UTF-8"?> <!--xml的版本信息和编码方式-->
    <web-app version="3.1" <!--webapp的版本信息-->
             xmlns="http://xmlns.jcp.org/xml/ns/javaee" <!--使用符合XML规范的XHTML文档-->
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <!--使用xsi作为前缀的Namespace-->
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"> <!--定义了XML Namespace和对应的XSD(Xml Schema Definition)文档的位置的关系。-->
        <context-param> <!--上下文参数-->
            <param-name>javax.faces.PROJECT_STAGE</param-name><!--参数名-->
            <param-value>Development</param-value><!--参数值-->
        </context-param>
        <servlet>
            <servlet-name>Faces Servlet</servlet-name> <!--servlet名-->
            <servlet-class>javax.faces.webapp.FacesServlet</servlet-class><!--servlet所从属的类-->
            <load-on-startup>1</load-on-startup> <!--加载的第一步-->
        </servlet>
        <servlet-mapping> <!--servl映射-->
            <servlet-name>Faces Servlet</servlet-name><!--映射名-->
            <url-pattern>*.xhtml</url-pattern><!--映射路径-->
        </servlet-mapping>
        <session-config><!--会话配置信息-->
            <session-timeout><!--会话刷新时间30ms-->
                30
            </session-timeout>
        </session-config>
        <welcome-file-list><!--首页文件列表-->
            <welcome-file>index.xhtml</welcome-file><!--首页展示的文件名-->
        </welcome-file-list>
    </web-app>
  • 相关阅读:
    【DFS】算24点
    【位运算】【BFS】移动玩具
    【并查集】【DFS】搭桥
    shell脚本编写informix数据库中表的导入和导出
    利用springloaded进行java jar&class的动态替换
    利用springloaded进行java class动态替换
    ActiveMq unsupported major.minor version 52.0
    oracle主键修改&设置某一字段可以为null
    XStream将XML转javaben,出现多余的tag,导致出错
    oracle:the password has expired
  • 原文地址:https://www.cnblogs.com/jasonwan/p/10590854.html
Copyright © 2020-2023  润新知