版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/oscar999/article/details/83827917
JSF介绍
JavaServer Faces (JSF) 是一种用于构建Java Web 应用程序的标准框架(是Java Community Process 规定的JSR-127标准)。它提供了一种以组件为中心的用户界面(UI)构建方法,从而简化了Java服务器端应用程序的开发。由于由Java Community Process (JCP) 推动,属于Java EE 5中的技术规范,而受到了厂商的广泛支持。
JSF是一套标准,其中jsf-api是标准中的提供的接口,就是说如果要实现JSF框架,那你至少要实现jsf-api中的接口。
现在有多个已实现的JSF框架,比如:
- jsf-impl。是Sun为JSF规范提供的实现。
- Mojarra。由Oracle开发, 后来转给了Eclipse。
3.MyFaces,PrimeFaces。Apache提供的。在实现了JSF接口的基本功能外,还提供了大量的组件库。地址:
http://myfaces.apache.org/core23/index.html
JSF 产生时曾火过一阵, 但随着互联网的发展, 基于Web Browser的项目占据了绝对的比重,前端开发的逐渐精细和深入化,前后端分离架构也逐渐盛行, 对工程师的要求也全栈化, 不会点Web技术还真不好混。总之, JSF现在不火了,但是各大厂商对于JSF的实现还是在持续维护和升级。
Apache的Myfaces 最近更新时间是:11 Sep 2018
实例
- 基于maven依赖包导入:
<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>cn.osxm</groupId>
<artifactId>jcodef</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<groupId>cn.osxm.jcodef</groupId>
<artifactId>jcodef-jsf</artifactId>
<packaging>war</packaging>
<name>jcodef-jsf Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<!-- CDI:Contexts and Dependency Injection -->
<dependency>
<groupId>javax.enterprise</groupId>
<artifactId>cdi-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
<!-- JSF -->
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>2.2.18</version>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>2.2.18</version>
</dependency>
<!-- JSF <dependency> <groupId>javax.faces</groupId> <artifactId>jsf-api</artifactId> <version>2.1</version> <scope>provided</scope> </dependency> -->
</dependencies>
<build>
<finalName>jcodef-jsf</finalName>
</build>
</project>
- web.xml 配置
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>osxm JSF Web</display-name>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.xhtml</welcome-file>
</welcome-file-list>
</web-app>
- 创建Bean, 使用注解方式交给容器托管
/**
* @Title: HelloWorld.java
* @Package cn.osxm.jcodef.jsf
* @Description: TODO
* @author oscarchen
* @date Nov 7, 2018 11:36:49 AM
* @version V1.0
*/
package cn.osxm.jcodef.jsf;
import javax.faces.bean.ManagedBean;
/**
* @ClassName: HelloWorld
* @Description: TODO
* @author oscarchen
*/
@ManagedBean
public class HelloWorld implements java.io.Serializable{
private static final long serialVersionUID = 2670923978809388476L;
private String name; public String getName(){
if(this.name == null){
return "Hello World";
}
return name;
}
public void setName(String name){
this.name = name;
}
}
- 页面中使用Bean
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title>JSF 2.2 Hello World</title>
</h:head>
<h:body>
<h3>JSF 2.2 Hello World Example</h3>
<h:form>
<h:inputText value="#{helloWorld.name}"></h:inputText>
<h:commandButton value="Welcome Me" action="welcome"></h:commandButton>
</h:form>
</h:body>
</html>
默认以Class首字母小写来标识bean, 这一点和Spring很类似。