應用結構圖
深入分析結構圖
mina的基本應用可以分為3層:
1、I/O Serivce:實際執行I/O層
2、I/OFilter chain:數據過濾和轉換層,主要是把字節轉換為需要的數據格式或者反過來處理
3、I/OHandler:業務處理層
創建Mina應用分為3部分:
1、創建I/O 2、創建過濾鏈
3、創建I/O業務處理
Dojo通過很少的代碼完成了以上的功能。(以后可能我詳細說說dojo的package system ,只需要三個js文件)。當你寫腳本時,只需要包含很少的js文件(大小)。也可以選擇的(包含)下載dojo提供的龐大的功能。Dojo provides MultiplePointsOfEntry, InterpreterIndependence, ForwardLookingAPIs, and focuses on ReducingBarriersToAdoption.
dojo試圖建立一種新的標簽語言DojoML。目標是,在DojoML和javascript腳本語言不變的情況下,用不同的render方式展示數據, Renderings may be made available in several rendering contexts (such as SVG, or perhaps even the desktop or Flash)。(比較美好啊)更進一步,the DojoML 剖析器可以接受html和svg為輸入,容易的建立DegradeableResponsiveApplications。
第一部分 安裝
第一個小節 怎么安裝Dojo Toolkit
Dojo在磁盤上只是一堆文件,它不需要特殊的設置,它可以通過以下三種途徑獲得:
1、可以從google的內容分布網絡獲得
加載的方法可以參考http://code.google.com/intl/zh-CN/apis/ajaxlibs/documentation/index.html#dojo
2、.在你自己的服務器上使用Dojo
a、下載最新的dojo包,地址:http://dojotoolkit.org/downloads;目前最新的包為1.3.1
b、解壓下載的壓縮文件
--dojo-release-1.3.1-src
----dijit
----dojo
----dojox
----util
c、可以通過D:\Apache-Source\dojo\1.3.1\dojo-release-1.3.1-src\dojo-release-1.3.1-src\dijit\themes\themeTester.html 這樣的路徑來查看相關的JS例子
3、每日構建代碼
你可以通過SVN地址獲得
For instance, Dojo Core repository is:
http://svn.dojotoolkit.org/src/dojo/trunk
There are two versions of this view: anonymous and committer.
For users (readonly):
http://svn.dojotoolkit.org/src/view/anon/all/trunk
For committers (read/write):
https://svn.dojotoolkit.org/src/view/committer/all/trunk
第二部分 Ajax
第一個小節 ajax
a、ajax and Dojo
1)XHR選項
例子:
// post some data, ignore the response: dojo.xhrPost({ form: "someFormId", // read the url: from the action="" of the <form> timeout: 3000, // give up after 3 seconds content: { part:"one", another:"part" } // creates ?part=one&another=part with GET, Sent as POST data when using xhrPost }); // get some data, convert to JSON dojo.xhrGet({ url:"data.json", handleAs:"json", load: function(data){ for(var i in data){ console.log("key", i, "value", data[i]); } } });
2)XHR回調
有三種方法可以附加到XHR選擇對象,以確定當數據回調時該怎么做。
JSF1.1 、 1.2 都是 JSF 的標準,定義例如接口、規范( JSF 是面向接口編程的),必須通過實現才能被我們所使用,而實現包括有 JSF RI(Reference Implementation) ,還有 myfaces core1.1.4 的實現等。 JSF RI 是 SUN 對 JSF 的實現,相對來說兼容性比較好,也比較穩定(因為 1.1 已經很久沒更新過了,已經轉向 1.2 去了),而 myfaces
myfaces
Oracle ADF 是 oracle 為 jsf 做的一個大型的組件庫,以前是收費的,現在開源了,我沒用過,不好說。
Ajax4jsf 是為 jsf 提供 AJAX 支持的一個標簽庫,使用它提供的標簽,就能在原有的 JSF 程序上輕易的加上 AJAX 的功能,而且不用寫任何 Javascript 。
Facelets 這個是很激動人心的一個框架,有了這個框架才把 JSF 的組件化發揮出來,通過模板的方式來組合成我們所需要的組件,而且可以不使用 <h:input> 這樣的標簽庫,而用 <input type=”text” jsfc=”h:input”> 這樣的方式來使用組件,這樣就可以方便的使用 UI 可視化工具去開發我們的 WEB 程序。這個框架我會在以后的文章中詳細的說,以及和 jsp2.0 的模板功能作對比。
--------------------------------------------------------------------------------
JSF的session超時問題會在頁面上拋出如下異常:
javax.faces.application.ViewExpiredException: viewId:/pages/index.faces - View /pages/index.faces could not be restored.
at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:185)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
解決方案:
在web.xml中添加如下代碼:
<error-page>
<exception-type>javax.faces.application.ViewExpiredException</exception-type>
<location>/pages/SessionRefire.jsp</location>
</error-page>
----------------------------------------------------
注意:所有的JSF標簽一定要包含在<f:view></f:view>這個節點中,不然會報一下問題:
javax.servlet.ServletException: Component javax.faces.component.UIViewRoot@f1fad1 not expected type. Expected: javax.faces.component.UIOutput. Perhaps you're missing a tag? javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)