再现理想 发表于 2015-1-18 11:32:56

JAVA教程之使用JSF、Ajax和Seam开辟Portlets(1/3)仓酷云

通过视频学习比传统的大课堂学习更适合成人化的学习规律。有人说大课堂气氛好,学习氛围浓,热闹,可以认识很多人。假如你刚入手下手思索使用portal办理计划,大概想懂得把一个新的或现有的JSF使用整合进一个portal情况有多简单,那末本文相对值得你细心研读。
在已往几年中,portals不管是在企业仍是在加强的portlet2.0(JSR286)标准中都失掉了长足开展。新2.0版本的portlets在聚合分歧的使用,并将其出现在统一个页面的分歧窗口方面赋于开辟职员很年夜的自在。别的,它还供应了认证功效,成熟的本性化特征和更好的处置AJAX的现成办法。
JSR301portlet桥接标准(portletbridgespecification)的呈现,使我们具有了运转JSF使用的尺度体例,不管portlets版本是1.0仍是2.0。portlet桥(bridge)能够安排portal的Action/Render范式得当地处置JSF的性命周期。本教程将次要向你展现设置与开辟JSFportlet是何等简单的一件事变,同时还会先容新的JBossPortletContainer2.0及其一些很酷的新特征。
本文是由三部分构成的系列文章的第一篇。该系列文章从基础的JSFportlet和portal常识一向讲到portlet情况中的AJAX和Seam的初级用法。
如今筹办入手下手吧!
项目安装

开辟工具:
要想乐成理论文中的典范就要下载最新版本的Maven(我用的是2.0.9版本)。
安装Maven2.0.9+。
设置Maven二进制版本的情况变量。
例子顶用到的服务器和二进制版本:
JBossPortal’sPortletContainer2.0
JBossPortletBridgeBeta3
今朝,JBossPortletBridge是JSR301标准的独一完成,它同意你运转JSF、RichFaces和Seam的恣意组合。你项目标Maven设置可布置下载打包在一同的JBossAS和JBossPortletContainer2.0,假如你想分离下载它们,能够在此处找到这些文件。不然,就给Maven几分钟让它往自行下载得当的文件。
注重——在以后的2.6.5.SP1版本的JBossPortal中一样能够运转这个portlet,我在本文中利用了JBossPortletContainer2.0,可是桥(bridge)在二者中都能事情。你可经由过程此处懂得令其可在恣意版本的JBossPortal中运转的设置办法。
下述Maven原型(Mavenarchetype)是创立项目标一种浅易体例,能够疾速创建并运转一个启始项目(大概模板项目)。一旦你运转了这些命令,便可取得理论本文示例所需的统统文件。
翻开一个终端窗口并运转以下指令:
mvnarchetype:generate-DarchetypeGroupId=org.jboss.portletbridge.archetypes-DarchetypeArtifactId=1.2-basic-DarchetypeVersion=1.0.0.B3-DgroupId=org.whatever.project-DartifactId=myprojectname-DarchetypeRepository=http://repository.jboss.org/maven2/-Dversion=1.0.0.B3如今,找到你的新建项目地点文件目次(假如你利用的跟下面的例子一样,那末目次名就应当是“myprojectname”),扫瞄个中方才创立的一切文件,你将会看到一个基础Maven文件布局,个中带有合用于本文典范的源码。如今你就能够翻开最喜好的IDE情况,引进这个Maven项目了。
Portlet桥设置请求

从如今入手下手的开辟历程更像是在Servlet天下中开辟JSF使用,分歧的地方在于:处置相似单点登录如许的成绩;诸如定名空间(namespacing)如许的必要portletContext和会见变量的成绩;和portlet中像“Help”和“Edit”如许的窗口形式成绩。我不想在本文报告过量portlet的细节,但我会供应举行基础开辟的需要信息。假如你想懂得更多portlets的信息,请参考JSR168或JSR286标准申明。
JBossPortletBridge对照酷的一点在于它不是一个portlet,它只是portlet和JSF之间的前言。而你的JSF使用则是个portlet,不外除WEB-INF目次下3到4个分外的xml文件和关于bridge的Jar包外,它的其他部分与你的Servlet版本的使用毫无二致。上面几个设置文件是次要区分:
portlet.xml
<portlet>...v<portlet-class>javax.portlet.faces.GenericFacesPortlet</portlet-class><init-param><name>javax.portlet.faces.defaultViewId.view</name><value>/home.xhtml</value></init-param><init-param><name>javax.portlet.faces.defaultViewId.edit</name><value>/jsf/edit.xhtml</value></init-param><init-param><name>javax.portlet.faces.defaultViewId.help</name><value>/jsf/help.xhtml</value></init-param>...</portlet>web.xml
<context-param><param-name>org.ajax4jsf.VIEW_HANDLERS</param-name><param-value>org.jboss.portletbridge.application.FaceletPortletViewHandler</param-value></context-param><context-param><param-name>javax.portlet.faces.renderPolicy</param-name><param-value>ALWAYS_DELEGATE</param-value></context-param>faces-config.xml
<application><view-handler>org.jboss.portletbridge.application.PortletViewHandler</view-handler><state-manager>org.jboss.portletbridge.application.PortletStateManager</state-manager></application>因为上述设置已使用在你方才设定的Maven原型中,因而如今我们就能够编译项目,并在JBossPortal上部署它了。
运转demo程序

编译新项目,并经由过程以下两个步骤完成部署:
步骤1:mvninstallcargo:start-Premote-portal-Dpc20
这行命令将会花上几分钟往下载打在一同的server+portal包,以是在举行下一步骤之前,请耐烦守候直至看到以下内容:

<br>
*注重——在server启动前你还会看到一个PortletException,这很一般,并且它也是PortletContainer2.0示例FailDuringInitPortlet的一部分。
接上去翻开别的一个终端窗口,找到JSFportlet项目标根目次,并运转:
步骤2:mvncargo:deploy-Premote-portal-Dpc20

<br>
命令行参数关照cargo你正在运转的portal版本和JBoss+Portal包地点地位。这个例子一样能够运转于服从JSR168的最新版本JBossPortal2.6.5.SP1中。假如想懂得更多Maven命令及相干信息,你能够参考JBossPortletBridge文档。要检察已部署的JSFportlet情形可会见以下链接:http://localhost:8080/simple-portal/demo/jsr-301.jsp。

<br>
JSFPortlet开辟

如今让我们来懂得将portlet和JSF接洽在一同的手艺。
把你的portlet视作一个一般的Web使用
当把你的使用视作servlet真个Web使用时,portlet桥是通明的。作为portlet开辟职员,一种很好的做法是偶然细心反省一下你的使用以确保正在举行的开辟没有扩展的趋向,由于它将运转在一个portal情况中。要检察此demo使用,大概任何已部署的带有桥的使用,能够会见http://localhost:8080/JSFRIPortlet/home.jsf。
定名空间
在portal情况中桥能够处置JSF的定名空间组合。当你必要在JSF/xhtml标志中利用元素id时,一般情形下在显现的标志中你所看到的是相似‘form1:myBtn’的代码,而现在在桥定名空间中你所看到的将是象:
jbpns_2fdefault_2fNews_2fStories_2fStoryTemplateWindow12snpbj:_viewRoot:form1:myBtn如许的标志。
要克制这一点,你能够在你的Facelets页中使用上面的表达式,来为你的javascript代码事后设天命名空间:
document.getElementById("#{facesContext.externalContext.response.namespace}the_rest_of_JSF_ID");
请注重,由于利用了portletResponse,以是一旦你试图在servlet使用端检察这个页面的时分就会失掉一个非常。为制止这类情形的产生,你必要在你的背景Bean(backingbean)中反省呼应的范例,并为UI分派一个新的、“平安的”定名空间变量。
preserveActionParams
当你的web.xml文件中preserveActionParams值被设置为TRUE时,桥必需卖力保护在portlet举措哀求时代指派的恣意参数,它们被保留在“桥哀求域(bridgerequestscope)”中。当这个属性没有呈现大概值为FALSE时,只在portlet哀求感化域保护举措的哀求参数。
<init-param><param-name>javax.portlet.faces.preserveActionParams</param-name><param-value>true</param-value><init-param>在你的Facelets页面中使用相似#{request.yourParam}如许的代码能够使用这一设置。
扫除桥哀求域中的属性
当你的使用在每次哀求上都要利用哀求属性而你又不想在扩大的桥哀求感化域中办理特别的属性时,你就必需在你的faces-config.xml文件中利用以下的设置了。上面你会看就任何定名空间为foo.bar的属性大概是以foo.baz(通配符)打头的属性城市被从桥哀求感化域中扫除,这些属性只能用在每次哀求傍边:
<application><application-extension><bridge:excluded-attributes><bridge:excluded-attribute>foo.bar</bridge:excluded-attribute><bridge:excluded-attribute>foo.baz.*</bridge:excluded-attribute></bridge:excluded-attributes></application-extension></application>大概你可使用javax.portlet.faces.annotation.ExcludeFromManagedRequestScopej注解,对你不想包括在哀求中的对象类举行注解,也能够到达一样的效果。
停止语

正如你所看到的,JSR301标准不但使得把已存在的JSFweb使用创建成portlet加倍简单,并且还供应给开辟职员一种办理和处置JSF和portlets差别的体例。不外,标准今朝仍处于频仍地评审和订正阶段。写这篇文章时最新的公然版本是EarlyDraftReview3,可是在JSR301专家组外部,对此订正版本又已有良多改善了,对桥对照严重的改善是鄙人一个JBossPortletBridge版本(Beta4)中将会完成的portlet形式导航和形态。
假如想懂得更多项目信息和桥撑持的兼容版本,大概想要介入社区论坛,请会见我们的项目页面和blog。
检察英文原文:DevelopingPortletsusingJSF,Ajax,andSeam(Part1of3)
来自:http://www.infoq.com/cn/articles/jsf-ajax-seam-portlets-pt-1

你通过从书的数量和开发周期及运行速度来证明:net网页编程和ruby要比java简单。

乐观 发表于 2015-1-20 17:42:18

关于设计模式的资料,还是向大家推荐banq的网站 http://www.ckuyun.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。

爱飞 发表于 2015-1-23 23:07:43

所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。

若天明 发表于 2015-2-3 05:35:38

J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。

蒙在股里 发表于 2015-2-8 19:42:33

你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。

山那边是海 发表于 2015-2-11 09:27:07

《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。

愤怒的大鸟 发表于 2015-2-11 21:19:32

还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。

活着的死人 发表于 2015-2-19 08:58:27

接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。

变相怪杰 发表于 2015-3-6 14:22:13

科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。

精灵巫婆 发表于 2015-3-13 02:07:18

是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言

灵魂腐蚀 发表于 2015-3-13 02:07:19

让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。

再现理想 发表于 2015-3-13 02:07:21

所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。

海妖 发表于 2015-3-20 09:29:47

《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。

admin 发表于 2015-3-29 15:53:21

你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。

透明 发表于 2015-4-4 14:22:11

自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。

莫相离 发表于 2015-4-12 06:28:42

是一种使用者不需花费很多时间学习的语言

简单生活 发表于 2015-4-16 19:09:20

是一种突破用户端机器环境和CPU

仓酷云 发表于 2015-4-21 13:19:38

你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。

深爱那片海 发表于 2015-4-26 20:28:04

一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。

因胸联盟 发表于 2015-5-4 00:07:21

还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
页: [1]
查看完整版本: JAVA教程之使用JSF、Ajax和Seam开辟Portlets(1/3)仓酷云