JSF入门

1. 什么是 Java Server Faces(jsf)?   JSF为JAVA的 Web应用用户界面的开发人员提供了标准的编程接口、丰富可扩展的UI组件库(一个核心的JSP标记库用来处理事件、执行验证以及其他非UI相关的操作和一个标准的HTML 标记库来表示 UI组件)、事件驱动模型等一套完整的Web应用框架,通过

JSF ,您可以在页面中轻松自如地使用 WEB 组件、捕获用户行为所产生的事件、执行验证、建立页面导航…,当使用支持JSF的开发工具来开发 JSF 应用的时候,一切将会变得异常简单,GUI方式拖放组件、修改组件属性、建立组件间关联以及编写事件侦听器等等

JSF 有三部分:

一套预制的UI组件集

一个事件驱动的编程模型

一个允许第三方开发者提供附加组件的组件模型

JSF包含处理事件所需的所有代码和组件组织,开发者可以忽略这些细节而专注于应用逻辑。

2. 第一个JSF程序

JSF只是J2EE的一个标准,是一套接口集和一些基本实现,要使用JSF需要下载jsf的实现,可以到JSF 官方网站的 下载区 下载参考实现,也可以到 apache 下载 myfaces,这里以使用sun的参考实现为例,在下载压缩文件并解压缩之后,将其 lib 目录下的 jar 文件复制至您的Web应用程序的/WEB-INF/lib目录下,另外您还需要 jstl.jar 与 standard.jar 文件,这些文件您可以在 sample 目录下的应用中找到,建好我们的应用目录结构:

hellojsf

|-- build.xml

|-- src

|-- WEB-INF

|----|-- web.xml

|----|-- faces-config.xml

|----|-- classes

|----|-- lib

|----|----|--jsf-impl.jar

|----|----|--jsf-api.jar

|----|----|--commons-digester.jar

|----|----|--commons-collections.jar

|----|----|--commons-beanutils.jar

|----|----|--commons-logging.jar

|----|----|--standard.jar

|----|----|--jstl.jar

可能只有faces-config.xml,它是jsf的基本配置文件,后面就可以看到它的作用。

//build.xml

下面我们就开始写程序了,没有什么复杂逻辑,不用细说他的流程,直接写了。

//hello.jsp 保存在根目录下

JSF in Action - Hello, world!

value="Welcome to JavaServer Faces!"

style="font-family: Arial, sans-serif; font-size: 24;

color: green;"/>

binding="#{helloBean.controlPanel}"

columns="20" border="1" cellspacing="0"/>

从这个页面可以看出,jsf 就是用他自己的UI组件代替了html标签,又加了些特有的属性,很容易理解,值得注意的是,所有组件都要定义在之内,熟悉jsp的可能对”#{helloBean.numControls}“感觉很熟悉,不同的是这个是以”#“开头的,”binding“属性的值是个jsf el 表达式,它指定了helloBean类中的controlPanel方法可以直接对此组件进行操作,h:commandButton 是按钮组件,可以产生 action event, 他的

actionListener 属性制定了用helloBean类中的addControls方法来处理这个action event,其他的都比较容易理解,来看下个页面。

//goodbye.jsp 保存在根目录下

JSF in Action - Hello, world!

style="font-family: Arial, sans-serif; font-size: 24;

font-style: bold; color: green;"/>

这个页面更简单,只是一些输出。

在 hello.jsp goodbye.jsp 中都通过 jsf el 表达式引用了一个 backing bean, 叫 helloBean, 他包括了我们这个应用所需的一切

//HelloBean.java 保存在 src 下

package org.jia.hello;

import javax.faces.application.Application;

import javax.faces.component.html.HtmlOutputText;

import javax.faces.component.html.HtmlPanelGrid;

import javax.faces.context.FacesContext;

import javax.faces.event.ActionEvent;

import java.util.List;

public class HelloBean

{

private int numControls;

private HtmlPanelGrid controlPanel;

public int getNumControls()

{

return numControls;

}

public void setNumControls(int numControls)

{

this.numControls = numControls;

}

public HtmlPanelGrid getControlPanel()

{

return controlPanel;

}

public void setControlPanel(HtmlPanelGrid controlPanel)

{

this.controlPanel = controlPanel;

}

public void addControls(ActionEvent actionEvent)

{

Application application = FacesContext.getCurrentInstance().getApplication();

List children = controlPanel.getChildren();

children.clear();

for (int count = 0; count < numControls; count++)

{

HtmlOutputText output = (HtmlOutputText)application.createComponent(HtmlOutputText.COMPONENT_TYPE);

output.setValue(" " + count + " ");

output.setStyle("color: blue");

children.add(output);

}

}

public String goodbye()

{

return "success";

}

}

jsf 的 backing bean 很简单,不需要继承于某个特定类,只是一个包含事件处理方法的javabean

这里面最复杂的就是 addControls 方法了,它是一个 action listener 方法,因为他接收了一个唯一的参数 ActionEvent,在 hello.jsp 中:”“,这句话告诉 jsf,当用户点击"Redisplay"按钮时jsf会用这个方法来处理 action

event

goodbye方法象 addControls 一样,是 event listener 的一种类型,但他是于 jsf 的导航系统联系起来的,所以他的工作就是返回一个字符串或逻辑输出,这样导航系统就可以决定下一个要加载的页面,这一类的方法叫做 action methods. 在 hello.jsp 中:”“,当用户点击”Goodbye“按钮时,goodbye方法会被执行,他只是返回"success",在配置文件中这个输出与某个页面相联系,下面就来看看配置文件faces-config.xml

//faces-config.xml

/p>

"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"

"http://java.sun.com/dtd/web-facesconfig_1_0.dtd">

The one and only HelloBean.

helloBean

org.jia.hello.HelloBean

session

Navigation from the hello page.

/hello.jsp

success

/goodbye.jsp

jsf 象大多数框架一样,有一个配置文件,在之中你可以定义 导航规则、初始化javabean、注册你自己的jsf组件、验证器,和一些面向jsf应用其他方面的其他配置

在这个配置文件中定义了一个bean, 指定了他的名字(这个名字就是我们在页面中使用的名字),类全名,和使用范围。还定义了一个导航规则,hello.jsp有一个”Goodbye“按钮转到其他页,所以只有一个单独的navigation-case,当输出为”success"时,就会显示goodbye.jsp。

现在我们已经写完了页面,backing bean, 和配置文件,下面写完web.xml后就可以看到效果了

//web.xml

/p>

"http://java.sun.com/dtd/web-app_2_3.dtd">

hello world

Welcome to JavaServer Faces.

Faces Servlet

javax.faces.webapp.FacesServlet

1

Faces Servlet

/faces/*

faces/hello.jsp

FacesServlet 是做jsf 应用是一定要指定的,还设了默认页为 hello.jsp.

运行build, 启动web server, 在地址栏中打入应用地址,看到刚刚写的应用了吧,通过实际效果结合代码,相信我们已经对jsf 已经有一个基本认识了。

java jsf 入门_JSF入门、简单示例相关推荐

  1. java jsf教程_JSF入门教程

    1. 什么是 Java Server Faces(jsf)? JSF为JAVA的 Web应用用户界面的开发人员提供了标准的编程接口.丰富可扩展的UI组件库(一个核心的JSP标记库用来处理事件.执行验证 ...

  2. python的简单编程-python入门脚本的简单示例

    编程之家收集整理的这篇文章主要介绍了python入门脚本的简单示例,编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考. 感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编来看看吧. ...

  3. java读取ACCESS数据库的简单示例

    java读取ACCESS数据库的简单示例  虽然简单,对初学者来说,如果没有一段可以成功执行的代码供参考,还真难调试  先用ACCESS建一个数据库 DB1.MDB,里面有一表"table1 ...

  4. java播放声音类和一个简单示例

    java播放声音类和一个简单示例 播放声音的类 复制代码 代码如下:  import java.io.File; import java.io.IOException; import javax.so ...

  5. java调用百度地图api简单示例--获取国内任意两地之间距离

    老师让我们从百度地图的api上获取数据源最为两地运输距离,结果百度地图api的开发文档居然连个示例都没有...于是上网找了半天,都是一百多行的源码,我就想用个api,你给我这玩意???终于最后还是找到 ...

  6. java jsf 入门_JSF入门实战

    JSF入门实战 JavaServer Faces(JSF)是一个服务器端的用户界面(UI)为基础的Web应用程序的Java框架. JSF允许你实现MVC设计模式.特点如下: 将组件绑定到服务器端的模型 ...

  7. JAVA入门[6]-Mybatis简单示例

    初次使用Mybatis,先手写一个hello world级别的例子,即根据id查询商品分类详情. 一.建表 create table Category ( Id INT not null, Name ...

  8. SpringBoot入门第一个简单示例

    2019独角兽企业重金招聘Python工程师标准>>> 本示例使用SpringBoot官方的QuickStart程序 详情地址:http://projects.spring.io/s ...

  9. beetl java例子_初识Java模板引擎Beetl之简单示例

    以前没用过模板引擎,没去关注过,今天正好看到,简单看了一下,写个简单的示例,记录一下: 首先,Beetl 是 Bee Template language的缩写,是新一代的模板引擎,它功能强大,拥有主流 ...

最新文章

  1. 你应该了解的 5 个 JavaScript 调试技巧
  2. 最高75K,至多可拿16薪,这个岗位成财富密码?
  3. java 自定义注解获取_Java自定义注解
  4. 允许网站使用相机和麦克风_手机使用应用时总是需要获取权限,这3个权限不能随意给,望周知...
  5. aspx转发php_asp,php,aspx一句话合集
  6. java实现编辑距离算法(levenshtein distance),计算字符串或者是文本之间的相似度【附代码】
  7. 你见过“最没见过世面”的女孩子是什么样的?
  8. C# WPF 多个window 相互覆盖的次序控制 不用topmost
  9. python中reversed函数,Python3
  10. DS博客作业01--日期抽象数据类型设计与实验
  11. Excel公式与函数实战应用-陈明霞-专题视频课程
  12. 记录Linux开发板串口调试、静态ip
  13. 基于javaweb+jsp的小蜜蜂扩音器网上商城系统(java+JSP+Servlet+JDBC+Ajax+mysql)
  14. 数据可视化图表类型_数据可视化中12种最常见的图表类型
  15. Python网络爬虫实例(爬一些小网站的图片)
  16. 【菜鸟学习论文】2020_Cascade Cost Volume for High-Resolution Multi-View Stereo and Stereo Matching
  17. 简单之美——系统设计黄金法则
  18. 关闭浏览器 清除cookie
  19. 如何面试Java中级开发(16k)试题讲解和Java学习
  20. IT审计?CISA?

热门文章

  1. 阿里云新ip某些地区无解析值
  2. 解决unity调用WebCam显示的拉伸
  3. MapGuide空间参考系API
  4. 虚拟机NAT模式的网络设置
  5. 流体力学概念总结(涉及所有重点)
  6. LS1021ATWR开发板启动日志分析
  7. Promise的基础使用与生成器配合Promise解决回调地狱
  8. Python GUI 开发工具
  9. windows 定时重启
  10. 模式识别与人工智能官网,人工智能模式识别技术