JSF login例子
Core的作者說你可以把JavaServer Faces(JSF)看成“swing for server-side applications”,我想這是因為:
1、JSF里面定義了很多可用的UI部件(用戶可自定義)。
2、JSF有消息驅動機制。
要用JSF,除了JDK和Tomcat(servlet container)之外,還要下載一個JavaServer Faces reference implementation,要用到里面的lib,現在sun網站上有1.1的版本。
一個簡單的開發例子:
1、建立一個目錄,這個目錄是部署這個應用的單元(打包成.war),比如testJSF。
2、在這個目錄下放置jsp頁面。
3、在此目錄下建立WEB-INF目錄,在其中放置faces-config.xml和web.xml。
4、在WEB-INF目錄下建立class和lib目錄。
5、將bean的java code以包的形式放在class目錄下(并且將它們編譯)。
6、將必要的.jar放在lib目錄下。
7、制作.war: jar cvf sample.war。
8、將.war放到tomcat/webapps下
接著就可以用http://localhost:8080/testJSF來訪問了。
再分別把具體的東西解釋下:
1、必要的jar有六個,你可以像上面那樣放到.war里,也可以直接將他們放到tomcat/common/lib中,而且這樣的話,你就不必在每個.war中包含它們 :
jsf/lib/jsf-api.jar
jsf/lib/jsf-impl.jar:jsf/lib/jsf-impl.jar
tomcat/server/lib/commons-digester.jar
tomcat/server/lib/commons-beanutils.jar
tomcat/webapps/jsp-examples/WEB-INF/lib/jstl.jar
tomcat/webapps/jsp-examples/WEB-INF/lib/standard.jar
2、bean class里面的getter和setter是前端和后端的管道,沒什么好說的。
3、配置jsf國際化消息資源文件MessageBundle.properties(名字可以任意)
????? login_username_lable=userName:
????? login_password_lable=password:
??????login_button_lable = login
????? 加載資源文件:

????? jsf頁面中需要國際化的文字都可以在這里面配置,并用key值讀取
????? 下面是在頁面中使用的例子:

2

3

4、jsf的頁面要包含兩個標簽的定義:
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
(f: core tags; h: HTML tags.)
頁面上似乎和struts差不多,看個例子:



?2



?3



?4

?5

?6

?7

?8

?9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

接受用戶輸入用戶名和密碼,里面是普通的html標簽和jsf的標簽,沒什么太多東西。如果用戶名,密碼錯誤則message標簽
返回錯誤信息。

?2

?3

?4

?5

?6

?7

?8

?9

10

11

12

13

14

輸出UserBean的一個值(userName)。
5、兩個xml的配置文件:
faces-config.xml的內容:


?1

?2

?3

?4

?5

?6

?7

?8

?9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

再看web.xml:
€

?2

?3

?4

?5

?6

?7

?8

?9

10

11

12

13

14

15

16

17

18

19

20

21

servlet-mapping指定了url的后綴,welcome-file-list指定初識頁(可以用這個頁面前進到某個其他頁面)。
例子講完了,再講下jsf的處理周期:jsf頁面有encoding和decoding的過程,前者將jsf的元素樹變換成html頁面,后者將頁面的內容(form的數據等)變回jsf的元素,并由這些元素執行它們自己所定義的動作。?
6 UserName.java


?1


?2

?3

?4

?5

?6

?7

?8

?9


10

11

12

13



14

15


16

17

18

19

20

21

22



23

24

25

26



27

28

29

30


31

32

33



34

35

36

37


38

39

40



41

42

43

44



45

46

47

48

49

50

51

52

53

54

55
