前言:
JSF 2.X因為種種原因(我個人覺得主要是因為推出太晚),再加上EJB2之前的設計過于復雜,引起很多開發人員對官方解決方案的反感,即使EJB3后來做了大量改進,國內也很少有人對EJB3感興趣,目前國內主流開發架構大多采用SSH,很少有JSF 2.x + EJB 3.x的應用,但從我個人感覺來看,特別是對于從.NET轉型到JAVA的web程序員而言,JSF中的很多概念其實跟.NET很接近,國外已經有越來越多的項目在采用JSF + EJB3做為技術選型,下面將詳細介紹JSF的開發環境搭建.
一、創建一個Dynamic Web Project
eclipse中新建一個Dynamic Web Project,參考下圖
輸入項目名稱(本文中為jsf-web),Target runtime這里我們選擇None,Configuration這里選擇最小配置Minimal Configuration,參考下圖:
現在越來越多的java項目采用maven來管理了,為了方便后面轉成maven項目,這里對源代碼目錄參考maven的約定,做下調整,參考下圖:
注:對maven目錄結構約定不清楚的朋友,建議先看這里
接下來,指定web站點內容目錄(即:用來存放"頁面\樣式\腳本"的目錄),這里輸入webapp
然后點擊Finish,完成項目創建
二、將項目轉換成maven項目
剛才創建的項目,默認并不是maven項目,可參考下圖轉換成maven項目
項目右擊 -> Configure -> Convert to Maven Project
轉換過程中,會提示指定Group Id/Version這些maven關鍵信息,可參考下圖自行調整:
三、配置pom.xml中的依賴項
JSF只是官方的一個規范,并不是具體的產品,針對這個規范,各廠商都有自己的實現(即: 官方定義了一組interface,但是未給出具體的接口實現,然后各大廠商提供了各家的實現),比如: Apache的myFaces,oracle/sun公司的Mojarra,以及Jboss的richfaces,這三種實現從編寫代碼的角度看,并無太大差別,但部署在不同的web server上,配置需要做相關的調整,個人建議:
如果要部署在weblogic上,建議采用oracle的mojarra
如果要部署在jboss上,建議采用jboss的richfaces

1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 3 <modelVersion>4.0.0</modelVersion> 4 <groupId>yjmyzz</groupId> 5 <artifactId>jsf-web</artifactId> 6 <version>1.0</version> 7 <packaging>war</packaging> 8 9 10 <dependencies> 11 12 <!-- 如果打算部署在jboss上,建議下面這個 --> 13 <!-- <dependency> 14 <groupId>org.jboss.spec.javax.faces</groupId> 15 <artifactId>jboss-jsf-api_2.1_spec</artifactId> 16 <version>2.1.19.1.Final-redhat-1</version> 17 <scope>compile</scope> 18 </dependency> --> 19 20 <!-- 如果打算部署在weblogic上,建議用下面這二個 --> 21 <dependency> 22 <groupId>com.sun.faces</groupId> 23 <artifactId>jsf-api</artifactId> 24 <version>2.2.0</version> 25 <scope>compile</scope> 26 </dependency> 27 <dependency> 28 <groupId>com.sun.faces</groupId> 29 <artifactId>jsf-impl</artifactId> 30 <version>2.2.0</version> 31 <scope>compile</scope> 32 </dependency> 33 34 </dependencies> 35 36 <build> 37 <plugins> 38 <plugin> 39 <artifactId>maven-compiler-plugin</artifactId> 40 <version>3.1</version> 41 <configuration> 42 <source>1.7</source> 43 <target>1.7</target> 44 </configuration> 45 </plugin> 46 <plugin> 47 <artifactId>maven-war-plugin</artifactId> 48 <version>2.3</version> 49 <configuration> 50 <warSourceDirectory>webapp</warSourceDirectory> 51 <failOnMissingWebXml>false</failOnMissingWebXml> 52 </configuration> 53 </plugin> 54 </plugins> 55 </build> 56 </project>
pom.xml配置好以后,project中的Maven Dependencies中將看到相應的jar包已經被引入了,如下圖:
四、 編寫HelloWorld測試代碼
4.1 新建一個Bean

1 package yjmyzz.controller; 2 3 import javax.faces.bean.ManagedBean; 4 5 @ManagedBean(name="Home") 6 public class HomeController { 7 8 public String sayHello(){ 9 return "hello JSF !"; 10 } 11 12 }
4.2 新建一個xhtml頁面

1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml" 3 xmlns:h="http://java.sun.com/jsf/html" 4 xmlns:f="http://java.sun.com/jsf/core" 5 xmlns:ui="http://java.sun.com/jsf/facelets"> 6 7 <h:head> 8 <title>jsf-web</title> 9 </h:head> 10 <body> 11 <h1> 12 #{Home.sayHello()} 13 </h1> 14 </body> 15 </html>
五、部署測試
直接在project上右擊-> Run on Server(前提:eclipse中已經配置好了weblogic 或 jboss 服務器,不熟悉eclipse中配置weblogic的朋友,可以先看這里)
weblogic上部署成功的運行截圖:
jboss上部署成功的運行截圖:
文章列表