JAVA教程之使用JSF、Ajax和Seam开辟Portlets(2/3)仓酷云
前些天,在CSDN上看到了一个消息,说是net网页编程网页编程AJAX成功在Linux上运行,这一点对我触动很大,而且引发了我许多感叹,所以想写出来分享一下。在第一部分中,我们先容了JSFportlet运转的基本常识,包含工程创立、三个基础的XML设置文件和一些通用的JSFPortlet开辟职员常常碰到的成绩息争答。如今,我会解说怎样经由过程RichFaces组件库利用AJAX来加强你的JSFportlet。工程搭建
开辟工具:
为了与本文坚持分歧,请下载最新版本的Maven(我利用2.0.9)。
安装Maven2.0.9或更高版本
设置Maven体系情况变量
典范中利用的服务器和二进制实行文件:
JBossPortal2.7Beta1
JBossPortletBridgeBeta3
在本文第一部分中,我曾注释过Mavenarchetypes的用法,和你想要
<context-param><param-name>org.richfaces.LoadStyleStrategy</param-name><param-value>NONE</param-value></context-param><context-param><param-name>org.richfaces.LoadScriptStrategy</param-name><param-value>NONE</param-value></context-param><context-param><param-name>org.ajax4jsf.RESOURCE_URI_PREFIX</param-name><param-value>rfRes</param-value></context-param><filter><display-name>Ajax4jsfFilter</display-name><filter-name>ajax4jsf</filter-name><filter-class>org.ajax4jsf.Filter</filter-class></filter><filter-mapping><filter-name>ajax4jsf</filter-name><servlet-name>FacesServlet</servlet-name><dispatcher>FORWARD</dispatcher><dispatcher>REQUEST</dispatcher><dispatcher>INCLUDE</dispatcher></filter-mapping>搭建的工程是怎样主动部署到运转着JBossPortal的JBoss使用服务器上的。为了便于利用,第二部分的前几节与第一部分是不异的。独一的修正是工程名字——一切的Maven命令坚持稳定。一旦你的RichFaces创立乐成,你会取得一个实援用和测试情况来实验上面的代码示例。
如今让我们天生RichFaces工程、反省源代码和疾速进修一下设置。最初,我们将运转demo,并研讨一些实在天下的开辟义务。
启动一个终端并运转以下命令:
mvnarchetype:generate-DarchetypeGroupId=org.jboss.portletbridge.archetypes-DarchetypeArtifactId=richfaces-basic-DarchetypeVersion=1.0.0.B3-DgroupId=org.my.project-DartifactId=richfacesproject-DarchetypeRepository=http://repository.jboss.org/maven2/-Dversion=1.0.0.B3翻开工程地点目次,假如你利用以上命令,目次名应当是“richfacesproject”。复杂扫瞄一下目次的文件布局,你会看到Maven文件夹下本示例的源代码。如今你能够启动你喜好的IDE并导进Maven工程了。
设置
利用RichFaces库的任何组件前,必需对XML文件做一下小修改。这些设置只是对第一部分华夏来的设置的一些扩大,以是我在这里只说起针对JBossPortletBridge的JSF相干的设置。上面的设置请依据您团体的必要选择。为了使本文的重点会合于AJAXportlet开辟,我只会复杂先容一下这些选项怎样影响你的portlet。更多信息请检察RichFaces文档的相干章节。
web.xml
--------------
本文件能够把持用于显现RichFaces的剧本和CSS款式表。关于JBossPortal,我们能够封闭款式表和剧本的加载,如许它们在portal页面头部只会加载一次:
<context-param><param-name>org.richfaces.LoadStyleStrategy</param-name><param-value>NONE</param-value></context-param><context-param><param-name>org.richfaces.LoadScriptStrategy</param-name><param-value>NONE</param-value></context-param><context-param><param-name>org.ajax4jsf.RESOURCE_URI_PREFIX</param-name><param-value>rfRes</param-value></context-param><filter><display-name>Ajax4jsfFilter</display-name><filter-name>ajax4jsf</filter-name><filter-class>org.ajax4jsf.Filter</filter-class></filter><filter-mapping><filter-name>ajax4jsf</filter-name><servlet-name>FacesServlet</servlet-name><dispatcher>FORWARD</dispatcher><dispatcher>REQUEST</dispatcher><dispatcher>INCLUDE</dispatcher></filter-mapping>jboss-portlet.xml
--------------
在这里你能够指定在portal页面头部会加载哪些内容。正如你所看到的,“rfRes”在web.xml中被设为RESOURCE_URI_PREFIX。下一步是拔出servlet_path/RESOURCE_URI_PREFIX来会见经由过程classpath猎取的RichFaces资本。
还必要设置三个文件以准确显现和利用RichFaces组件包:
<portlet><portlet-name>ajaxPortlet</portlet-name><header-content><scriptsrc="/faces/rfRes/org/ajax4jsf/framework.pack.js"type="text/javascript"></script><scriptsrc="/faces/rfRes/org/richfaces/ui.pack.js"type="text/javascript"></script><linkrel="stylesheet"type="text/css"href="/faces/rfRes/org/richfaces/skin.xcss"/></header-content></portlet>运转Demo
如今我们启动服务器并经由过程两个复杂的命令部署你的RichFacesportlet。在入手下手之前,我想指出在JBossPortal安装上,本文和第一部分的区分。在上一期文章中,我们是部署到能够运转轻量级的PortletContainer2.0示例的JBoss使用服务器上。上期文章宣布今后,JBossPortal2.7beta版公布。它交融了JBossPortal旧的JSR-168完成和新的Portlet2.0完成,使我们可以在尺度的JBossPortal工程中同时运转1.0和2.0portlets。以是请不要对你应当利用哪一个版本感应狐疑。只需记着JBossPortal2.7包括了我们必要的统统内容,而2.6.x版本是撑持JSR-168(portlet1.0)的不乱版本便可。
更多关于部署本demoportlet到JBossPortal各类版本(beta或不乱版)的信息,请浏览这里。
第一步:下载并启动服务器
从http://downloads.sourceforge.net/jboss/jboss-portal-2.7.0.B1-bundled.zip下载集成了JBossPortal2.7Beta1的JBoss使用服务器。然后将以下命令中的path_to_bundle_zip以JBossPortal2.7的相对路径交换并运转:
mvninstallcargo:start-Plocal-portal-DJBOSS_ZIP_HOME=/path_to_bundle_zip/jboss-portal-2.7.0.B1-bundled.zip-DJBOSS_HOME_DIR=jboss-portal-2.7.0.B1-bundled/jboss-portal-2.7.0.B1该命令有点长,不外可让你打包任何兼容的JBossAppServer和JBossPortal版本。
假如你看到以下输入,则能够举行下一步了:
<br>
第二步:部署demo使用
如今翻开另外一个终端窗口,进进“richfacesproject”根目次,运转以下命令:
mvncargo:deploy-Plocal-portal-DJBOSS_ZIP_HOME=/path_to_bundle_zip/jboss-portal-2.7.0.B1-bundled.zip-DJBOSS_HOME_DIR=jboss-portal-2.7.0.B1-bundled/jboss-portal-2.7.0.B1不要健忘把“path_to_bundle_zip”交换成准确的路径。
如今你能够经由过程http://localhost:8080/portal/portal/default/RichFacesEchoPortlet会见RichFacesdemoportlet了。
<br>
RichFacesPortlet开辟
当经由过程portlet举行AJAX哀求时,必需分明portlet和servlet在session之间的区分。比方,当用户在portlet外部利用AJAX哀求时,这是经由过程原始的HTTPsession完成的,哀求没法会见存储在portalsession中的对象。针对这个成绩,我们完成了一种办法来同意我们会见Portalsession属性。它们经由过程窗口ID来区分感化域,比方,假如Portlet在session中存储值“YourObject”,那末就能够经由过程“javax.portlet.p.XYZ?YourObject”来会见,个中XYZ是窗口ID。
你能够经由过程以下命令从UI中猎取windowID大概scopeID:
#{facesContext.externalContext.sessionMap["org.jboss.portletbridge.WINDOW_ID_RETRIVER"].windowID}#{facesContext.externalContext.sessionMap["org.jboss.portletbridge.WINDOW_ID_RETRIVER"].scopeId}正如你看到的,facesContext.externalContext.sessionMap指向的是portlet感化域内的session对象。为何你会必要利用到这些值呢?上面枚举到了一些你大概会碰到的情形:
[*]当你在AJAX哀求时必要来自portalsession的认证数据时
[*]静态资本天生时(图片、剧本等等)
其他例子
全部RichFaces库都能够经由过程一个运转的demo看到,源代码能够在这里下载。假如你对组件设置不断定大概你以为没法在portal情况中运转,那末本工程对你十分有匡助。这个demo中独一短少的组件是文件上传组件。该组件企图在玄月初的下一个porletbridge版本中供应。
<br>
在论坛上宣布反应是非常有效和受接待的。假如想要懂得JBossPortletBridge项目标更多信息,请会见项目网站,文档库大概wiki。
检察英文原文:DevelopingPortletsusingJSF,Ajax,andSeam(Part2of3)。
相干浏览:使用JSF、Ajax和Seam开辟Portlets(1/3)。
本文出自:http://www.infoq.com/cn/articles/jsf-ajax-seam-portlets-pt-2
再说说缺点:首先java功能强大的背后是其复杂性,就拿web来说,当今流行的框架有很多,什么struts,spring,jQuery等等,而这无疑增加了java的复杂性。 其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。 至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。 自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。 Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。 当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢? 关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。 Java是一种计算机编程语言,拥有跨平台、面向对java 是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能 至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。 如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。 Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站 是一种使网页(Web Page)产生生动活泼画面的语言 另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。 是一种为 Internet发展的计算机语言 是一种使网页(Web Page)产生生动活泼画面的语言 是一种为 Internet发展的计算机语言 http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。 其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。 设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
页:
[1]
2