应用l构?br />
深入分析l构?br />
mina的基本应用可以分?层:(x)
1、I/O SerivceQ实际执行I/O?br />
2、I/OFilter chainQ数据过滤和转换层,主要是把字节转换为需要的数据格式或者反q来处理
3、I/OHandlerQ业务处理层
创徏Mina应用分ؓ(f)3部分Q?br />
1、创建I/O 2、创滤链
3、创建I/O业务处理
Dojo通过很少的代码完成了(jin)以上的功能。(以后可能我详l说说dojo的package system Q只需要三个js文gQ。当你写脚本Ӟ只需要包含很的js文gQ大)(j)。也可以选择的(包含Q下载dojo提供的庞大的功能。Dojo provides MultiplePointsOfEntry, InterpreterIndependence, ForwardLookingAPIs, and focuses on ReducingBarriersToAdoption.
dojo试图建立一U新的标{语aDojoML。目标是Q在DojoML和javascript脚本语言不变的情况下Q用不同的render方式展示数据Q?Renderings may be made available in several rendering contexts (such as SVG, or perhaps even the desktop or Flash)。(比较好啊)(j)更进一步,the DojoML 剖析器可以接受html和svg入,Ҏ(gu)的徏立DegradeableResponsiveApplications?br />
W一部分 安装
W一个小?nbsp; 怎么安装Dojo Toolkit
Dojo在磁盘上只是一堆文Ӟ它不需要特D的讄Q它可以通过以下三种途径获得Q?br />
1、可以从google的内容分布网l获?br />
加蝲的方法可以参?a >http://code.google.com/intl/zh-CN/apis/ajaxlibs/documentation/index.html#dojo
2?在你自己的服务器上用Dojo
a、下载最新的dojo包,地址Q?a >http://dojotoolkit.org/downloadsQ目前最新的包ؓ(f)1.3.1
b、解压下载的压羃文g
--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 q样的\径来查看相关的JS例子
3、每日构Z?br />
你可以通过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
W二部分 Ajax
W一个小?ajax
a、ajax and Dojo
1QXHR选项
例子Q?br />
// 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]); } } });
2QXHR回调
有三U方法可以附加到XHR选择对象Q以定当数据回调时该怎么做?br />
JSF1.1 ?/span> 1.2 都是 JSF 的标准,定义例如接口、规范( JSF 是面向接口编E的Q,必须通过实现才能被我们所使用Q而实现包括有 JSF RI(Reference Implementation) Q还?/span> myfaces core1.1.4 的实现等?/span> JSF RI ?/span> SUN ?/span> JSF 的实玎ͼ相对来说兼容性比较好Q也比较E_Q因?/span> 1.1 已经很久没更新过?jin),已经转?/span> 1.2 M(jin)Q,?/span> myfaces
myfaces
Oracle ADF ?/span> oracle ?/span> jsf 做的一个大型的lg库,以前是收费的Q现在开源了(jin)Q我没用q,不好说?/span>
Ajax4jsf 是ؓ(f) jsf 提供 AJAX 支持的一个标{ֺQ用它提供的标{,p在原有的 JSF E序上轻易的加上 AJAX 的功能,而且不用写Q?/span> Javascript ?/span>
Facelets q个是很Ȁ动h?j)的一个框Ӟ有了(jin)q个框架才把 JSF 的组件化发挥出来Q通过模板的方式来l合成我们所需要的lgQ而且可以不?/span> <h:input> q样的标{ֺQ而用 <input type=”text” jsfc=”h:input”> q样的方式来使用lgQ这样就可以方便的?/span> UI 可视化工具去开发我们的 WEB E序。这个框架我?x)在以后的文章中详细的说Q以?qing)?/span> jsp2.0 的模板功能作Ҏ(gu)?/span>
--------------------------------------------------------------------------------
JSF的session时问题?x)在面上抛出如下异常?x)
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)
解决Ҏ(gu)Q?br />
在web.xml中添加如下代码:(x)
<error-page>
<exception-type>javax.faces.application.ViewExpiredException</exception-type>
<location>/pages/SessionRefire.jsp</location>
</error-page>
----------------------------------------------------
注意Q所有的JSF标签一定要包含?lt;f:view></f:view>q个节点中,不然?x)报一下问题:(x)
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)
作?蒋博 发布?2009q??2?上午4?2?
HTML5 是由 WHATWG (Web Hypertext Application Technology Working Group) 发v的,最开始的名称叫做Web Application 1.0Q而后q个标准吸纳?jin)Web Forms 2.0的标准,q一同被W3Cl织所采用Q合q成Z一代的HTML5标准?/p>
HTML语言作ؓ(f)如今~程最为广泛的语言Q具有易用、快捗多览q_兼容{特点,但是随着时代的进步,HTML的标准却停滞不前Q这一ơ还在不断开发中的HTML5标准的更新可以说l这门标记语a带来?jin)新的生命力。本文将着重讨论HTML5中的Web Forms 2.0, 卌单的部分?/p>
表单是网中常见的控??。小到网站注册登录,大到一个企业的数据理pȝQ都基本上有表单的n影。表单之所以如此重要,主要是因为它担负大量的用户和|页后台数据更新交互的Q务。Web开发h员,对于|页表单可以说又爱又恨,q是它方便的收集、组l数据的功能Q恨的是它的功能很大E度上也׃此而已。一些在最l网站用L(fng)hE村^常的功能Q比如说输入cd(g)查、表单校验、错误提C等{,开发h员无不需要花费大量精力利?JavaScript和DOM~程来满些天然所需的功能点Q而随着Ajax的流行,出现的一些JavaScript的工具库Q比如Dojo, YUI{都提供?jin)方便的JavaScript Widget或者API来减d发h员的负担?/p>
HTML5 Web Forms 2.0是对目前Web表单的全面提升,它在保持?jin)简便易用的Ҏ(gu)的同时Q增加了(jin)许多内置的控件或者控件属性来满用户的需求,q且同时减少?jin)开发h员的~程。在我看来,HTML5 主要在以下几个方面对目前的Web表单做了(jin)改进Q?/p>
<input type="url"></input>
<input type="email"></input>
<input type="date"></input>
<select data="http://domain/getmyoptions"></select>
<input type="text" required></input>
<input type="number" min=10 max=100></input>
<submission>
<field name="name" index="0">Peter</field>
<field name="password" index="0">password</field>
</submission>
我将利用HTML5新的表单pȝ, 做一个简单的用户注册的界面,包括用户名,密码Q出生日期,保密问题{内容,代码如下Q?/p>
<! doctype html> <html> <head> <style> p label { width: 180px; float: left; text-align: right; padding-right: 10px } table { margin-left: 80px } table td { border-bottom: 1px solid #CCCCCC } input.submit { margin-left: 80px } </style> </head> <body> <form action='/register' enctype="application/x-www-form+xml" method="post"> <p> <label for='name'>ID(请用Email注册)</label> <input name='name' required type='email'></input> </p> <p> <label for='password'>密码</label> <input name='password' required type='password'></input> </p> <p> <label for='birthday'>出生日期</label> <input type='date' name='birthday' /> </p> <p> <label for='gender'>国籍</label> <select name='country' data='countries.xml'></select> </p> <p> <label for='photo'>个性头?lt;/label> <input type='file' name='photo' accept='image/*' /> </p> <table> <thead> <td><button type="add" template="questionId">+</button> 保密问题</td> <td>{案</td> <td></td> </thead> <tr id="questionId" repeat="template" repeat-start="1" repeat-min="1" repeat-max="3"> <td><input type="text" name="questions[questionId].q"></td> <td><input type="text" name="questions[questionId].a"></td> <td><button type="remove">删除</button></td> </tr> </table> <p> <input type='submit' value='send' class='submit' /> </p> </form> </body> </html>
׃目前HTML5标准仍然在开发中Q不同的览器对HTML5Ҏ(gu)的支持都相当有限。其中Opera在表单方面支持得比较好,本实例在Opera9上运行一切正常,效果囑֦下:(x)
q个实例q用?jin)一些HTML5的新的表单元素,比如emailcd的输入框(ID)Q日期类型的输入?出生日期)。ƈ且用了(jin)重复模型来引导用户填写保密问题,而在个性头像的上传中,通过限制文gcdQ方便用户选择囄q行合乎规范的内容上传。而用户选择国籍的下拉选择输入框中Q采用的是外联数据源的Ş式,外联数据源用coutries.xmlQ内容如下:(x)
<select xmlns="http://www.w3.org/1999/xhtml"> <option>China</option> <option>Japan</option> <option>Korea</option> </select>
q且form的enctype是application/x-www-form+xmlQ也是HTML5的XML提交。所以一旦form校验通过Qform的内容将?x)以XML的Ş式提交。你q会(x)发现Q在ID输入框如果没有|或者输入了(jin)非emailcd的字W串Ӟ一旦试图提交表单,׃(x)有提C错误的信息出现Q而这都是览器内|的?/p>
HTML5对表单控件的更新Q无疑是很振奋h?j)的。本文描qC(jin)一部分表单的新Ҏ(gu),q有一部分新特性同样很令h期待。相信随着标准的深入开发以?qing)浏览器对HTML5支持E度的进一步提升,设计一个简单易用的表单的工作,变得非常轻松?/p>
蒋博Q主要从事Web前端技术的开发工作,在Web开发与性能分析以及(qing)敏捷实践{领域有较丰富的l验。对HTML5的发展以?qing)各U?JavaScriptcd有比较浓厚的兴趣Q经常关注社交型的网站发展情况,q_喜欢听音乐,看一些历史类书籍。(本文仅代表个点,与公司立场无兟뀂)(j)
lInfoQ中文站投E或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也Ƣ迎大家加入?a target="_blank">InfoQ中文站用戯论组中与我们的编辑和其他读者朋友交?/p>