JSF入门

1. 简介

  • JSF技术是Sun公司在2004年发布的用于开发Web应用的框架。当前版本是2.2,由JSR344规范定义。它是Java EE 7推荐的Web标准框架。Mojarra(https://javaserverfaces.java.net/)是Oracle官方采用的JSF的参考实现,其他的参考实现还有Apache基金的MyFaces(http://http://myfaces.apache.org/)。
  • 受到Sturts、Tapestry等开源框架的影响,JSF是采用了MVC架构。
  • 受到Swing组件模型的启发,JSF使得开发人员从组件、事件、模型的角度开发web应用,而不用再管http请求和响应等背后的事情。

2. Hello JSF

  • 环境:JDK7 or JDK8 + Netbeans 8 + Glassfish 4
  • 开发过程:
    • 新建Java Web项目,选择Web应用程序
    • 输入项目名称hello-jsf
    • 修改上下文路径为hellojsf
    • 选择JavaServer Faces框架,然后点击下面的配置标签,确认使用的页面语言为Facelets
    • 点击完成
    • 右击hello-jsf项目,选择运行,Netbeans会自动启动Glassfish服务器并部署项目,启动完毕后会自动打开浏览器,并显示Hello from Facelets,该页面的地址为localhost:8080/hellojsf
  • 添加功能
    • 将index.xhtml中的Hello from Facelets修改为Hello #{user.name}
    • 创建User类,代码如下:
    • package teaching.jsf;
      
      import javax.annotation.PreDestroy;
      import javax.enterprise.context.RequestScoped;
      import javax.inject.Named;
      
      @Named //等价于@Named("user")
      @RequestScoped
      public class User {
          private String name = "JSF";
      
          public String getName() {
              return name;
          }
      }
    • 保存代码后,Glassfish会对项目进行增量部署,或者你也可以再次运行项目。
    • 打开浏览器,输入localhost:8080/hellojsf,你将可以看到:Hello JSF
  • 代码解释
    • #{user.name}是一个EL表达式,用于或取user bean的name属性。
    • User类是一个CDI bean,它具备了CDI bean的一些特征:
      • Name为user,用来匹配页面中出现的EL表达式,如#{user.name}。默认情况下,Name为bean类的首字母小写后对应的名字,也可以通过@Named("myUser")来指定,这样页面中的EL表达式就要写成#{myUser.name}。
      • Scope为RequestScoped,表示服务器端的Web容器会在接收到http请求后,根据#{user.name}创建一个User实例,获取其name属性的值,生成html页面并发出http响应,然后销毁该user实例。
  • 项目配置文件
    • web.xml: 此项目的部署文件。为了使用JSF,必须声明一个类型为javax.faces.webapp.FacesServlet的Servlet,具体代码请参见web.xml。

      • 注意Faces Servlet的url-pattern为/faces/*,这样FacesServlet只接收来自匹配/faces/*的页面请求,也可以替换为*.xhtml、*.jsf或其他模式,但不能为/*或*。另外,faces只是个前缀,并不是物理文件夹。例如,在访问根据目录下的index.xhtml页面时,其对应的url为http://.../hellojsf/faces/index.xhtml,而不是http://.../hellojsf/index.xhtml。
      • 在web.xml中,还可以指定一个PROJECT_STAGE参数,表示你当前项目的状态。如果为Development,当出现错误时,JSF为显示更加详细的调试信息。当项目真正部署时,可以将此参数改为Production。
    • glassfish-web.xml: 定义与应用服务器相关的一些参数。在本例中,我们通过<context-root>指定项目根目录的名称。此文件由Netbeans自动生成,一般情况下不用修改。

3. 总结

  • 通过例1,我们可以知道JSF的工作原理:

    • 在服务器启动时,会启动一个Faces Servlet用来拦截用户请求。
    • 当我们请求index.xhtml页面时,相应的Http请求就会被FacesServlet所拦截,它会对此请求进行若干处理,其中一步就是创建一个User实例,并获取其name属性的值。处理结束后,生成对应的html页面,返回给客户端。然后销毁此User实例,因为其Scope为RequestScoped。当收到Http请求时被创建,当发送Http响应后被销毁,这就是User对象的生命周期。
    • 客户端(浏览器)接受由服务器端返回的Http响应并显示。
  • JSF是一个采用MVC架构的框架。在例1中,index.xhtml充当V的角色,FacesServlet充当C的角色,而User则充当M的角色。这三种角色划分得非常清楚,没有一点耦合。

JSF入门,布布扣,bubuko.com

时间: 2024-12-22 04:18:05

JSF入门的相关文章

JSF入门之helloworld

一 什么是JSF: JSF是JCP开发的一种Java标准,用于构建web应用程序新标准的Java框架,他提供了一种以组件为中心来开发Java web用户界面的方法,从而简化了开发. 二 JSF体系结构: JSF的主要优势就是它是严格遵循" 模型 - 视图 - 控制器 " 即MVC设计模式的框架, 用户界面代码(视图)与应用程序数据和逻辑(模型)的清晰分离使JSF应用程序更易于管理.所有与应用程序交互的访问都交由FacesServlet(控制器)来处理. 三 JSF小例子: 1. 代码结

在 IntelliJ IDEA 中配置 JSF 开发环境的入门详解

JSF 作为 JavaEE 官方标准,在了解并掌握其基本开发技术后,对于功能要求较高.业务流程复杂的各种现代 Web 应用程序开发将会成为非常合适且强大的高效率开发利器.JSF 的开发环境搭建涉及到在 IntelliJ IDEA 中配置 Web Application Server.配置 JavaEE 基本环境.选择 JSF 相关功能模块等,之所以选择 IDEA 作为开发环境,是因为 IDEA 作为业界公认的最强 Java 集成开发环境,已逐渐成为事实上的 Java 及相关应用开发环境标准,甚至

dwr入门教程和总结

dwr 下载地址:http://www.directwebremoting.org/dwr/downloads/index.html 另外还需要一个 commons-logging-1.2.jar, 将dwr.jar 和commons-logging-1.2.jar 放进lib里面. 先看个入门教材吧, http://www.cnblogs.com/cyjch/archive/2012/02/16/2353758.html ,这个写的很简单,照着配置就可以实现. 1.实体User package

JAVAWEB开发之Struts2详解(一)——Struts2框架介绍与快速入门、流程分析与工具配置以及Struts2的配置以及Action和Result的详细使用

Struts2框架介绍 三大框架:是企业主流JavaEE开发的一套架构.Struts2 + Spring + Hibernate 什么是框架?为什么要学习框架? 框架是实现部分功能的代码(半成品),使用框架简化企业级软件开发. Struts2与MVC? Struts是一款优秀的MVC框架 MVC:是一种思想,是一种模式,将软件分为Model模型.View视图.Controller控制器 JAVAEE软件三层架构:web层(表现层).业务逻辑层.数据持久层(Sun提供javaEE开发规范) Jav

第二章 Spring MVC入门

2.1.Spring Web MVC是什么 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框 架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的. 另外还有一种基于组件的.事件驱动的Web框架在此就不介绍了,如Tapestry.JSF等. Spring Web MVC也是服务到工作者模式的实现,但进行可

Seam - 无缝集成 JSF

第 1 部分: 为 JSF 量身定做的应用程序框架 ----> 发现 Seam 对 JSF 生命周期特有的增强 JavaServer Faces (JSF) 是用于 Java? Web 应用程序的第一个标准化的用户界面框架.而 Seam 是一个扩展 JSF 的强大的应用程序框架.在这个由三部分组成的新系列中的第一篇文章中,发现这两种框架之间的互补性.Dan Allen 介绍了 Seam 对 JSF 生命周期的增强,包括上下文状态管理. RESTful URL.Ajax remoting.适当的异

Spring MVC入门知识总结

2.1.Spring Web MVC是什么 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的. 另外还有一种基于组件的.事件驱动的Web框架在此就不介绍了,如Tapestry.JSF等. Spring Web MVC也是服务到工作者模式的实现,但进行可优

Ejb in action(二)——实例入门

在上一篇文章当中,我们介绍了Ejb的相关概念.再展开后文介绍之前,我先给大家提供一个Ejb实例,加深印象. 开发环境:eclipse 应用服务器:jboss 1.服务端程序 在Eclipse中创建一个Ejb项目:EjbTest 添加接口IHelloWorld package com.ejb; public interface IHelloWorld { public String sayHello(String world); } 添加实现类HelloWorld 此处声明为Ejb无状态bean,

SpringMVC学习总结(一)——SpringMVC入门

摘要: Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框 架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的. 2.1.Spring Web MVC是什么 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web