JSF2 入門例項
阿新 • • 發佈:2018-11-08
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很類似。