gembin

          OSGi, Eclipse Equinox, ECF, Virgo, Gemini, Apache Felix, Karaf, Aires, Camel, Eclipse RCP

          HBase, Hadoop, ZooKeeper, Cassandra

          Flex4, AS3, Swiz framework, GraniteDS, BlazeDS etc.

          There is nothing that software can't fix. Unfortunately, there is also nothing that software can't completely fuck up. That gap is called talent.

          About Me

           

          JSF In Action 學(xué)習(xí)一[原創(chuàng)]

                 
                首先介紹一下JSF(JavaServer Faces)JSF是JavaEE標(biāo)準(zhǔn)的一部分, 是基于組建的架構(gòu)(component architecture), 而且是事件驅(qū)動(dòng)的,其目的在于把WebApp的開(kāi)發(fā)可以向DesktopApp一樣. 可以使各個(gè)常用的UI Widgets組件化, 提高重用性,簡(jiǎn)化創(chuàng)建Web UI的工作量,并且它也提供了豐富的功能集包含事件處理機(jī)制(Event Handling Mechanism)、頁(yè)面導(dǎo)航(Page Navigation)、驗(yàn)證客戶端數(shù)據(jù)(Input Validation)和數(shù)據(jù)轉(zhuǎn)換(Conversion)等等。JSF框架最主要的特色之一就是它并不僅針對(duì)于一種類型的客戶端,意味著除了用于桌面的Html瀏覽器客戶端外,它甚至還可能支持用于移動(dòng)電話的Wml瀏覽器客戶端等。現(xiàn)在已經(jīng)有很多的Vender在支持JSF:Apache Software Foundation, BEA Systems,Borland Software, IBM, Oracle, Macromedia,等等。
           

          JSF她的實(shí)現(xiàn)常用的有(當(dāng)然還有其他的):
             1. Sun RI (Reference Implementation)
                  和一般的WebApp一樣放在WEB-INF/lib下
                 所需的lib: jsf-api.jar   (在JSF specification定義的API)
                                  jsf-impl.jar  (Sun JSF的參考實(shí)現(xiàn))
                                  jstl.jar         (JSTL API)
                                  standard.jar (JSTL的實(shí)現(xiàn)Implementation)
             2. Apache MyFaces
                   所需的lib: myfaces-api-1.2.2.jar
                                  myfaces-impl-1.2.2.jar
                                  jstl.jar         (JSTL API)
                                  standard.jar (JSTL的實(shí)現(xiàn)Implementation)
                                  commons-beanutils-1.7.0.jar
                                  commons-codec-1.3.jar
                                  commons-collections-3.2.jar
                                  commons-digester-1.8.jar
                                  commons-el-1.0.jar
                                  commons-discovery-0.4.jar
                                  commons-logging-1.1.1.jar

          配置環(huán)境:     
          1.配置web.xml
           1 <web-app>
           2 
           3 <servlet>
           4 <servlet-name>Faces Servlet</servlet-name>
           5 <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
           6 </servlet>
           7 <servlet-mapping>
           8 <servlet-name>Faces Servlet</servlet-name>
           9 <url-pattern>/faces/*</url-pattern>
          10 </servlet-mapping>
          11 
          12 </web-app>
              和傳統(tǒng)的Struts類似,JSF也有配置文件faces-config.xml,并且她支持多個(gè)Config文件,可以在web.xml這樣設(shè)置:
           1 <web-app>
           2 
           3 <context-param>
           4 <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
           5 <param-value>server</param-value>
           6 </context-param>
           7 <context-param>
           8 <param-name>javax.faces.CONFIG_FILES</param-name>
           9 <param-value>/WEB-INF/config1.xml,/WEB-INF/config2.xml</
          10 param-value>
          11 </context-param>
          12 
          13 <web-app>
          2.配置faces-config.xml,在這里聲明managed beans, 并且它支持 EL expression,其實(shí)所有的JSF Component都支持EL expression
          所有的元素都包含在<faces-config></faces-config>之間,以下是常用的managed-bean元素
          1 <managed-bean>
          2 <description>Used for testing.
          3 </description>
          4 <managed-bean-name>testBean</managed-bean-name>
          5 <managed-bean-class>net.blogjava.gembin.TestBean
          6 </managed-bean-class>
          7 <managed-bean-scope>session</managed-bean-scope>
          8 </managed-bean>
          以上managed-bean的這3個(gè)元素是必須的,還有<description><display-name>, and <icon>.是可選的,主要用于可視化工具里顯示之用.
          定義完managed beans 之后就可以在JSP頁(yè)面上引用它了。test.jsp
           1 <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
           2 <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
           3 <html>
           4 <head>
           5 <title>Hello</title>
           6 </head>
           7 <body>
           8 <f:view>
           9    <h:outputText value="Hello #{testBean.sayHello}!"/>
          10 </f:view>
          11 </body>
          12 </html>
          TestBean.java
           1 package net.blogjava.gembin;
           2 
           3 public class TestBean{
           4  
           5    public TestBean(){}
           6     
           7    public String sayHello(){
           8        return "jsf, Hello world!";
           9    }  
          10 }

          這里注意test.jsp中只能有1個(gè)<f:view> 元素,并且它不代表任何UI,是JSF UI的Root
          managed-bean-scope的值可以是:session,application,request,none。
          每個(gè)托管的對(duì)象(
          managed-bean)不能引用生命周期比它還短的對(duì)象,所以
          1. 存放在request scope的Object可以引用none, application, session, request里的對(duì)象;
          2. 存放在session scope的Object可以引用none, application, session里的對(duì)象;
          3. 存放在application scope的Object可以引用none, application里的對(duì)象;
          4. 存放在none scope的Object可以引用none里的對(duì)象;
           由此可見(jiàn)none scope 非常有用。
          上面的例子運(yùn)行之后將會(huì)在瀏覽器上顯示:
          Hello jsf, Hello world!!

          To be continued(待續(xù)...)

          posted on 2008-02-29 18:10 gembin 閱讀(593) 評(píng)論(0)  編輯  收藏


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(6)

          隨筆分類(440)

          隨筆檔案(378)

          文章檔案(6)

          新聞檔案(1)

          相冊(cè)

          收藏夾(9)

          Adobe

          Android

          AS3

          Blog-Links

          Build

          Design Pattern

          Eclipse

          Favorite Links

          Flickr

          Game Dev

          HBase

          Identity Management

          IT resources

          JEE

          Language

          OpenID

          OSGi

          SOA

          Version Control

          最新隨筆

          搜索

          積分與排名

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          free counters
          主站蜘蛛池模板: 黑龙江省| 赫章县| 睢宁县| 涿州市| 韩城市| 珠海市| 调兵山市| 元阳县| 伊宁县| 海伦市| 响水县| 沙河市| 辽阳市| 读书| 策勒县| 呼和浩特市| 共和县| 安化县| 滨州市| 新巴尔虎左旗| 光泽县| 托里县| 衡东县| 兴隆县| 北流市| 霍山县| 西乡县| 台前县| 临潭县| 井冈山市| 孟村| 陈巴尔虎旗| 屏山县| 青河县| 榆树市| 莲花县| 青州市| 崇义县| 黄山市| 光泽县| 海城市|