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 學習一[原創]

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

          JSF她的實現常用的有(當然還有其他的):
             1. Sun RI (Reference Implementation)
                  和一般的WebApp一樣放在WEB-INF/lib下
                 所需的lib: jsf-api.jar   (在JSF specification定義的API)
                                  jsf-impl.jar  (Sun JSF的參考實現)
                                  jstl.jar         (JSTL API)
                                  standard.jar (JSTL的實現Implementation)
             2. Apache MyFaces
                   所需的lib: myfaces-api-1.2.2.jar
                                  myfaces-impl-1.2.2.jar
                                  jstl.jar         (JSTL API)
                                  standard.jar (JSTL的實現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

          配置環境:     
          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>
              和傳統的Struts類似,JSF也有配置文件faces-config.xml,并且她支持多個Config文件,可以在web.xml這樣設置:
           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,其實所有的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個元素是必須的,還有<description><display-name>, and <icon>.是可選的,主要用于可視化工具里顯示之用.
          定義完managed beans 之后就可以在JSP頁面上引用它了。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個<f:view> 元素,并且它不代表任何UI,是JSF UI的Root
          managed-bean-scope的值可以是:session,application,request,none。
          每個托管的對象(
          managed-bean)不能引用生命周期比它還短的對象,所以
          1. 存放在request scope的Object可以引用none, application, session, request里的對象;
          2. 存放在session scope的Object可以引用none, application, session里的對象;
          3. 存放在application scope的Object可以引用none, application里的對象;
          4. 存放在none scope的Object可以引用none里的對象;
           由此可見none scope 非常有用。
          上面的例子運行之后將會在瀏覽器上顯示:
          Hello jsf, Hello world!!

          To be continued(待續...)

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


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          導航

          統計

          常用鏈接

          留言簿(6)

          隨筆分類(440)

          隨筆檔案(378)

          文章檔案(6)

          新聞檔案(1)

          相冊

          收藏夾(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

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          free counters
          主站蜘蛛池模板: 昌吉市| 淄博市| 信宜市| 红安县| 玉林市| 修文县| 莆田市| 阿克苏市| 满洲里市| 琼结县| 长治市| 鄄城县| 忻州市| 韶关市| 祁阳县| 都江堰市| 新巴尔虎左旗| 自贡市| 谢通门县| 玛纳斯县| 柞水县| 平山县| 临西县| 西乡县| 涪陵区| 宁海县| 和顺县| 兴义市| 曲阜市| 界首市| 门源| 重庆市| 泰顺县| 达拉特旗| 康乐县| 沛县| 咸宁市| 亚东县| 襄垣县| 霍林郭勒市| 峨边|