<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    linugb118--java space

    Java

    JSF 探索 (1)

    JSF 探索 (1)

    雖然JSF已經(jīng)出來好久了,而且好像感覺不是很潮流的框架了,然后當(dāng)我看見他的時(shí)候,我覺得他的思想很好,而且隨著手機(jī)等client多樣化的出現(xiàn),我相信人們
    必將重新拾起JSF的思想。

    JSF說白了是事件驅(qū)動(dòng),web以前的時(shí)代我估計(jì)大部分都是事件驅(qū)動(dòng)的開發(fā)模式,而web的出現(xiàn),使人們更多關(guān)注瀏覽器上面的渲染,以及servlet和http的操作上。
    web2.0的出現(xiàn),使人們感覺在瀏覽器上的操作更像以前c/s結(jié)構(gòu)的操作,而手機(jī)client的熱捧更能體現(xiàn)未來多種客戶端訪問server的模式即將到來,也許大家開始
    在想如何做新的框架,其實(shí)這種想法已經(jīng)out了,JSF里面早就有這個(gè)思想了,你只需要去關(guān)注JSF不就ok了?

    任何《* in action》的書總是讓programmer 興奮,同樣JSF in Action也是一本不錯(cuò)的書,讓我們一起去看看它把。

    1.JSF 關(guān)鍵詞
    UI component :靜態(tài)對(duì)象,它保存在server端,其實(shí)本身UI Component是javabean對(duì)象,他具有javabean具備的屬性,methods和events。通常多個(gè)component被組織為一個(gè)頁面的視圖

    Renderer:渲染器,renderer被用作渲染component,以及將用戶的輸入轉(zhuǎn)換為component的值。特別當(dāng)不同類型的client端,比如手機(jī),那么對(duì)應(yīng)的就有手機(jī)相應(yīng)格式的renderer。

    Validator:負(fù)責(zé)驗(yàn)證用戶輸入值的可靠性,單個(gè)UI component可以對(duì)應(yīng)一個(gè)或多個(gè)Validator.

    Backing beans:后臺(tái)的javabean,做一些邏輯處理什么的,存儲(chǔ)component的值,實(shí)現(xiàn)事件監(jiān)聽器,他可以引用component。

    Converter:顯示轉(zhuǎn)換器,比如時(shí)間格式的顯示,一個(gè)component可以對(duì)應(yīng)一個(gè)converter

    Events and listeners:事件和監(jiān)聽器

    Messages:顯示給用戶的信息

    Navigation:一個(gè)頁面到另外一個(gè)頁面的向?qū)А?/p>


    2.JSF請(qǐng)求的六個(gè)階段
    Phase 1: Restore View
    構(gòu)建視圖頁面供用戶輸入或查看

    Phase 2: Apply Request Values
    獲取請(qǐng)求值

    Phase 3: Process Validations
    可以對(duì)請(qǐng)求值進(jìn)行驗(yàn)證

    Phase 4: Update Model Values
    更新back bean 的值

    Phase 5: Invoke Application
    調(diào)用應(yīng)用,執(zhí)行相應(yīng)的監(jiān)聽器

    Phase 6: Render Response
    將response根據(jù)要求進(jìn)行包裝后返回給用戶,這里的包裝是指知道的頁面技術(shù),比如html,比如手機(jī)展現(xiàn)技術(shù)

    3.client and server component id
    server component id可以在component 的id屬性中顯性填寫id,以便在服務(wù)端能唯一標(biāo)識(shí)該組件
    client id 是繼承server component id,他最后體現(xiàn)的也是html 中的標(biāo)簽,而id也為對(duì)應(yīng)標(biāo)簽的id,與server component id不同的是,他有繼承關(guān)系,比如

    <form id="myForm" method="post"
    action="/jia-standard-components/client_ids.jsf"
    enctype="application/x-www-form-urlencoded">
    <p>
    <input type="text" name="myForm:_id1" />
    </p>
    <p>
    <input id="myForm:inputText" type="text" name="myForm:inputText" />
    </p>
    ...
    </form>
    而對(duì)應(yīng)的服務(wù)端
    <p>
    <h:outputText id="outputText" value="What are you looking at?"/>
    </p>
    <h:form id="myForm">
    <p>
    <h:inputText/>
    </p>
    <p>
    <h:inputText id="inputText"/>
    </p>
    ...
    </h:form>

    4.JSF EL 表達(dá)語言: 他是基于JSTL的描述
    此外Jsp中application,session,page 四個(gè)scoped變量,只有page jsf中不支持

    除了上面三個(gè)scoped變量,jsf還有下面一些隱性的變量
    applicationScope:從application中獲取對(duì)象,比如#{applicationScope.myVariable} myVariable對(duì)象存放在application中
    cookie:從cookie中獲取數(shù)據(jù)
    facesContext:這個(gè)jsp2.0中沒有,當(dāng)前請(qǐng)求的faceContext實(shí)例
    header:http head頭信息,比如#{header['User-Agent']}
    headerValues:多個(gè)head頭信息的載體 比如#{headerValues['Accept-Encoding'][3]}
    initParam:初始化的一些參數(shù)比如servlet context initialization parameters 可以這樣使用#{initParam.adminEmail}
    param:等同jsp中的request.getParameter() 用法#{param.address}
    paramValues:等同jsp中的request.getParameterValues 用法#{param.address[2]}
    requestScope等同于jsp中reqeust 用法#{requestScope.user-Preferences}
    sessionScope等同于jsp中session  用法#{sessionScope['user']}
    view 這個(gè)變量jsp2.0中沒有,它表示當(dāng)前視圖,它有三個(gè)屬性viewId,renderKitId, and locale 用法#{view.locale}

    5.需要的jar包和文件
    構(gòu)建jsf環(huán)境需要jsf-api.jar,jsf-impl.jar,jstl.jar,standard.jar 以及配置文件faces-config.xml
    需要在web.xml 中配置faceservlet
    <web-app>
    ...
    <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>/faces/*</url-pattern>
    </servlet-mapping>
    ...
    </web-app>

    web.xml 中jsf定義的上下文的參數(shù)有
    javax.faces.CONFIG_FILES
    javax.faces.DEFAULT_SUFFIX
    javax.faces.LIFECYCLE_ID
    javax.faces.STATE_SAVING_METHOD

    RI-specific configuration parameters:
    com.sun.faces.NUMBER_OF_VIEWS_IN_SESSION
    com.sun.faces.validateXml
    com.sun.faces.verifyObjects

    比如
    <web-app>
    ...
    <context-param>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>server</param-value>
    </context-param>
    <context-param>
    <param-name>javax.faces.CONFIG_FILES</param-name>
    <param-value>/WEB-INF/navigation.xml,/WEB-INF/RegistrationWizard.xml</
    param-value>
    </context-param>
    ...
    <web-app>
    除了web.xml jsf相關(guān)的參數(shù),本身jsf具有faces-config.xml 具體里面的配置屬性可以查看配置文件,可以找可視化工具進(jìn)行配置。

     

    posted on 2010-11-04 16:24 linugb118 閱讀(2601) 評(píng)論(1)  編輯  收藏

    Feedback

    # re: JSF 探索 (1) 2010-11-05 13:12 semmy

    首先訂正你一個(gè)錯(cuò)誤,JSF不是一個(gè)框架,而一個(gè)標(biāo)準(zhǔn),sun提出有JSF完全就只有接口,可以不同廠商去實(shí)現(xiàn),雖然sun也提供一套實(shí)現(xiàn)框架。  回復(fù)  更多評(píng)論   



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


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

    My Links

    Blog Stats

    常用鏈接

    留言簿(1)

    隨筆檔案

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 香蕉视频在线观看免费| 亚洲综合在线一区二区三区| 一级一级一片免费高清| 久久久久免费看黄A片APP| 中文字幕亚洲综合久久| 最近免费中文字幕大全免费版视频| 国产偷v国产偷v亚洲高清| 在线观看免费黄网站| 国产亚洲色婷婷久久99精品| 热99RE久久精品这里都是精品免费| 亚洲小说区图片区另类春色| 成人免费区一区二区三区| 亚洲国产成人私人影院| 最近免费中文字幕mv电影| 国产精品亚洲自在线播放页码| 蜜桃视频在线观看免费网址入口| 亚洲熟妇丰满xxxxx| 免费jjzz在线播放国产| 两个人看的www视频免费完整版| 久久久久亚洲AV片无码| 免费视频爱爱太爽了| 欧洲亚洲国产精华液| 美腿丝袜亚洲综合| 久久久久成人精品免费播放动漫| 亚洲成AV人综合在线观看| 成人免费淫片在线费观看| 无码日韩人妻AV一区免费l| 亚洲av综合av一区| 国产va免费精品观看精品| 成人免费视频一区二区| 亚洲AV天天做在线观看| 100000免费啪啪18免进| 国产成人亚洲综合在线| 久久久久无码精品亚洲日韩| 女人张开腿给人桶免费视频| 国产黄在线观看免费观看不卡| 亚洲福利视频网址| 亚洲人成影院在线无码观看| 6080午夜一级毛片免费看 | 日韩精品久久久久久免费| 亚洲一区精彩视频|