仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1086|回复: 19
打印 上一主题 下一主题

[学习教程] JAVA教程之利用JSF、Ajax和Seam开辟Portlets(3/3)仓酷云

[复制链接]
海妖 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:32:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
你对java乐观有点盲目。java的关键就是在服务器上表现优异,而且它提供了整个开发所需要的工具。应该是说,看哪天。net网页编程有没有机会赶上java。在这个系列文章的第一篇和第二篇中,我注释了甚么是portletbridge?和怎样在一个基础的JSF和基于RichFaces(Ajax)的portlet中安装和利用它,和以后能撑持运转JBossPortletBridge的portal服务器的次要区分。最初这篇文章将会合报告Seamportlet的开辟,和最新公布的JBossPortletBridgeBeta4版本的一切特征和上风。关于不太熟习portlets的读者来讲,细心浏览后面两篇文章会有助于更好的了解本文。
如今让我们先从Seamportlet的开辟动手。
安装SeamPortlet
开辟工具:
要模仿本文示例举行开辟,就必要下载最新版本的Maven(我用的是2.0.9版本)。
安装Maven2.0.9+
在呆板上设置Mavenbinaries的path情况变量
创立项目:
分歧的Maven原型(archetype)对应能够发生分歧品种的bridge。间接从命令交运行以下代码,可创立你的Seamportlet项目:
  1. mvnarchetype:generate-DarchetypeGroupId=org.jboss.portletbridge.archetypes-DarchetypeArtifactId=seam-basic-DarchetypeVersion=1.0.0.B4-DgroupId=org.my.project-DartifactId=seamproject-DarchetypeRepository=http://repository.jboss.org/maven2/-Dversion=1.0.0.B4
复制代码
该特定原型是模块化的,这意味着经由过程其发生的项目将由几个子项目组成。如许做的优点是源码、资本和设置之间的界线加倍明晰,保护也更便利。上述命令将发生三个目次,个中,‘web’目次中包括标志文件、图片和WEB-INFxml设置文件;‘ejb’目次中包括一切SeamEJB3源码,和任何跟耐久化和ejb部署相干的xml设置文件信息;最初是‘ear’目次,它次要用来汇合项目信息构建ear文件。
假如你是用下面提到的原型(archetype)命令创立的项目,那末如今你就会有一个‘seamproject’目次。如今到该目次下并运转以下命令:
mvninstall
这个命令将会匡助你下载当地Maven库中短少的任何组件,并编译和构建ear文件。
运转和部署portlet:
既然你已有一个可部署的ear文件,那末再使用上面的命令就能够轻松的将portlet部署到最新版本的JBossPortal上(已绑定到JBoss使用服务器)了。假如你已本人下载或创立了当地安装包,便可在bridge文档中找到利用自界说设置的申明了。
如今转到{seamproject}/ear目次下运转以下命令:
  1. mvncargo:start-Premote-portal-Dportal-2.7.0.B1
复制代码

<br>
该命令将花上一段工夫(视你的收集情形而定)来下载最新版本的JBossApplicationServer和JBossPortal(软件均位于SourceForge.net网站上)。在持续下一步骤之前你应当能看到与上文画面类似的日记纪录。*注重:你大概还会看到日记纪录中不休滚屏的WSRP信息,不必忧虑,这一样是证实你已筹办停当的标记。
如今来部署你的Seam项目ear文件。新翻开一个终端窗口,转到目次{seamproject}/ear下,运转以下命令:
  1. mvncargo:deploy-Premote-portal-Dportal-2.7.0.B1
复制代码
当你在服务器日记中看到ear文件已部署乐成时,会见链接http://localhost:8080/portal/portal/default/seamproject,会看到以下页面:

<br>
如今我们已筹办好一个要开辟Seamportlet了。固然,使用程序究竟怎样写是由开辟职员来决意的事变。可是这会帮你挣脱那些噜苏的设置成绩,轻松的入手下手事情。
设置
将JSFportlet转换为一个典范的Seam使用,只必要大批的设置事情便可完成。上面的设置文件代码省略了后面文章(第一部分和第二部分)已提到过的设置信息。假如想懂得具体内容,请参照bridge文档的设置部分。
web.xml
------------------
上面的这段设置一般是任何Seam使用中城市有的内容,而且不会由于portlet情况而有所分歧:
  1. <listener><listener-class>org.jboss.seam.servlet.SeamListener</listener-class></listener><servlet><servlet-name>SeamResourceServlet</servlet-name><servlet-class>org.jboss.seam.servlet.SeamResourceServlet</servlet-class></servlet><servlet-mapping><servlet-name>SeamResourceServlet</servlet-name><url-pattern>/seam/resource/*</url-pattern></servlet-mapping><filter><filter-name>SeamFilter</filter-name><filter-class>org.jboss.seam.servlet.SeamFilter</filter-class></filter><filter-mapping><filter-name>SeamFilter</filter-name><servlet-name>FacesServlet</servlet-name><dispatcher>FORWARD</dispatcher><dispatcher>REQUEST</dispatcher><dispatcher>INCLUDE</dspatcher></filter-mapping>
复制代码
设置ExceptionHandler高低文参数,可同意bridge使用现成的非常处置器往办理基于Seam的非常。假如乐意的话,你也完整能够使用本人的完成:
  1. <context-param><param-name>org.jboss.portletbridge.ExceptionHandler</param-name><param-value>org.jboss.portletbridge.SeamExceptionHandlerImpl</param-value></context-param>
复制代码
Bridgelet是针对portletbridge扩大(extension)的称号。portletbridge社区一向在主动的开辟一些扩大以加强或会合JBossPortal、Seam和Richfaces三者的特征,比方,PortalIdentity(SSO)seam组件可同意你把jar文件放在你的classpath上,如许你立即就会有一个可用于Seam和Portal之间的SSO了。你也能够在Mavenpom中将这个扩大设置成一个依附(象上面将看到的那样)。
假如你对Bridgelet有甚么倡议,大概成心介入JBossPortletBridge的开辟事情,那末我们等候你主动到场我们的论坛并提交Jiratasks。
Seam使用和JBossPortal之间的单点登录成绩
开辟职员能够把SeamBookingDemo用做一个开辟和测试的portlet参考程序。假如想懂得和理论SSOBridgelet,你能够今后地点http://anonsvn.jboss.org/repos/portletbridge/tags/1.0.0.B4/examples/seam/booking/下载源代码,然后运转与此篇文章下面方才讲过的完整不异的maven部署命令(大概是上面将要讲到的冗长版本)来部署和运转该程序。
冗长版本是:
转到{SeamBooking}根目次下,运转以下命令:
mvninstall
然后再转到{SeamBooking}/ear目次下,运转:
mvncargo:start-Premote-portal-Dportal-2.7.0.B1
如今再来部署你的Seam项目ear文件。新翻开一个终端窗口,在{SeamBooking}/ear目次下运转以下命令:
mvncargo:deploy-Premote-portal-Dportal-2.7.0.B1

<br>

一旦你部署完成并运转demo后,就能够会见链接http://localhost:8080/portal/portal/default/SeamBooking持续上面的步骤了。点击“注册新用户(RegisterNewUser)",新建一个用户并用其登录体系:

<br>
登录以后你将会看到旅店搜刮页面,另有与以后登录脚色对应的一切功效。可是,假如你看向屏幕右上角,你会发明登录到Seam使用和你的JBossPortal用户/办理员账户一点干系都没有:

<br>
这就是我们必要SSOBridgelet的来由,它同意经由过程Seam身份认证模块来考证JBossPortal用户名。如今让我们来实验一下:
令服务器仍然坚持运转形态,在举行部署的谁人终端窗口中,前往到上一级目次,也就是{SeamBooking}/根目次下运转以下命令:
mvninstall-Psso
接上去再转到{SeamBooking}/ear目次下运转以下命令:
mvncargo:deploy-Premote-portal-Dportal-2.7.0.B1
经由过程上述命令我们将SSOjar包嵌进进了使用,偏重新部署了一次ear文件。
如今,让我们回到http://localhost:8080/portal/portal/default/SeamBooking上的portlet。此次我们登录到portal而不是Seam使用。点击页面右上方的portallogin举行登录,用户名和暗码都是‘admin’。

<br>
假如这是一个实际中的使用,我们会对UI做一点调剂,把Seam使用的登录表单埋没起来。同时由于SSO的存在,我们能够调剂网站别的基于脚色的内容。可是,正如我后面所说,这是从最原始形态的Seambookingdemo动身做最小修改能到达的效果,只是一个参考。
登录到JBossPortal后,在你的Seam和PortalUI上你将会看到以下内容:

在办理了Portal和你的Seam使用之间的身份认证成绩后,使用的创立就变得简单些了。假如你的Seamportlet是基于Maven创立的,那末还必要你做的就只要在pom.xml文件中增加以下代码了:
  1. <dependency><groupId>org.jboss.portletbridge.extensions.seam</groupId><artifactId>PortalIdentity</artifactId><version>1.0.0.B4</version></dependency>
复制代码
大概你也能够把PoralIdentity.jar文件放到使用程序WEB-INF/lib目次下就好了,不再必要做其余设置了。
JBossPortletBridgeBeta4概述

既然这是本系列文章的最初一篇,那末在最初一部分我将先容9月11日方才公布的JBossPortletBridgeBeta4版本的新特征。
撑持PortletMode变更
一个PortletMode代表了使用中一个分歧的展示路径(renderpath),有三种尺度的形式:view、edit和help。bridge的ExternalContext.encodeActionURL能够识别查询字符串参数javax.portlet.faces.PortletMode,并用这个参数值在底层portletactionURL或呼应上设置portlet形式。一旦处置完就要把这个参数从查询字符串中往失落。下述导航划定规矩将会在portlet的edit形式下出现viewId为edit.jspx的页面:
  1. <navigation-rule><from-view-id>/register.jspx</from-view-id><navigation-case><from-outcome>edit</from-outcome><to-view-id>/edit.jspx?javax.portlet.faces.PortletMode=edit</to-view-id></navigation-case></navigation-rule>
复制代码
导航至一个形式的终极viewId
缺省地,一个形式的改动将从形式的默许视图(不带形态)入手下手。关于一个一般的portlet形式,在其前往到进进另外一形式之前的谁人形式时(比方:view->edit->view),它将会跳转到这个形式(分开之前)的终极视图(和形态)。bridge可以对需要信息举行分明的编码,以便有必要前往到前一个形式时,它能够定位到得当的视图,并恢复到应有的形态。开辟职员可使用由bridge保护的session属性,以便从一个形式导航回其前一个形式的终极地位和形态。一样,开辟职员必要形貌一个静态导航:“从视图X前往到形式Y的终极视图”。这能够用由EL表达式复杂地暗示以下:
  1. <navigation-rule><from-view-id>/edit.jspx*</from-view-id><navigation-case><from-outcome>view</from-outcome><to-view-id>#{sessionScope["javax.portlet.faces.viewIdHistory.view"]}</to-view-id></navigation-case></navigation-rule>
复制代码
Portlet开辟职员必要注重的成绩
依据bridge完成,当用到这些session局限的属性值、大概任何大概包括查询字符串参数的viewIds时,最幸亏考证划定规矩方针(ruletarget)时利用通配符语法。比方,下面的<to-view-id>表达式前往的是一个表单的viewId(/viewId?javax.portlet.faces.PortletMode=view&....)。其不含通配符,因而当该新视图产生页面跳转时,导航划定规矩就没法剖析了,由于它找不就任何可与之完整婚配的对象。
而下面的edit.jspx<from-view-id>包括了通配符,导航划定规矩便可用查询串(<to-view-id>/edit.jspx?javax.portlet.faces.PortletMode=edit</to-view-id>)来和它婚配。激烈倡议开辟职员都利用这类通配符以确保程序能够在各类bridge完成中一般实行。
处置Portlet中的Ajax毛病
默许的,毛病是由处置Ajax哀求的尺度servlet页面来办理。要在portlet外部处置毛病,就要用到上面的JavaScript代码:
  1. <scripttype="text/javascript">A4J.AJAX.onError=function(req,status,message){window.alert("CustomonErrorhandler"+message);}A4J.AJAX.onExpired=function(loc,expiredMsg){if(window.confirm("CustomonExpiredhandler"+expiredMsg+"foralocation:"+loc)){returnloc;}else{returnfalse;}}</script>
复制代码
结论

正如后面所说,portletbridge社区从项目初期测试阶段就已入手下手公布补钉和别的情势的匡助来增进其开展。固然项目标中心是JSR-301标准,但是整合Seam、Richfaces、Portal和Bridgelets和别的帮助性的增强功效是具有没有限潜能和意义的。已有些开辟职员为项目标开展奉献了他们的力气,在此我们对一切这些供应过补钉、加强构件和在论坛上主动回覆成绩的人们暗示衷心的感激。
最初,这是一个基于社区的项目,供应匡助和反应的开辟职员越多,我们的新产物公布的越快,其功效也就更强,代码也更完美。估计GA版本会在09岁首公布。
在论坛上供应反应十分有效,我们也很接待。假如你想要懂得更多关于JBossPortletBridge项目标信息能够会见我们的项目和文档页面。
相干浏览
利用JSF、Ajax和Seam开辟Portlets(1/3)
利用JSF、Ajax和Seam开辟Portlets(2/3)
本文出自:http://www.infoq.com/cn/articles/jsf-ajax-seam-portlets-pt-3;jsessionid=F7B2A8228DE70D255534116034706E2B

从一个编程语言的普及程度来将,一个好的IDE是至关中要的,而现在的java的IDE虽然已经很好了,但是和.net网页编程比起来还是稍微差一些的,这是个客观事实。java要想普及的更好。DE是必须加以改进的。
兰色精灵 该用户已被删除
沙发
发表于 2015-1-21 10:00:03 来自手机 | 只看该作者
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
因胸联盟 该用户已被删除
板凳
发表于 2015-1-30 14:22:42 | 只看该作者
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
地板
发表于 2015-2-8 15:20:36 | 只看该作者
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
再见西城 该用户已被删除
5#
发表于 2015-2-23 14:45:26 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
小女巫 该用户已被删除
6#
发表于 2015-2-28 16:38:27 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
金色的骷髅 该用户已被删除
7#
发表于 2015-3-3 12:45:44 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
海妖 该用户已被删除
8#
 楼主| 发表于 2015-3-4 11:18:28 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
若天明 该用户已被删除
9#
发表于 2015-3-10 15:40:30 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
不帅 该用户已被删除
10#
发表于 2015-3-17 08:09:38 | 只看该作者
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
小妖女 该用户已被删除
11#
发表于 2015-3-20 08:36:02 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
蒙在股里 该用户已被删除
12#
发表于 2015-3-27 03:10:58 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
飘飘悠悠 该用户已被删除
13#
发表于 2015-4-1 22:11:02 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
老尸 该用户已被删除
14#
发表于 2015-4-3 22:42:36 | 只看该作者
是一种使用者不需花费很多时间学习的语言
admin 该用户已被删除
15#
发表于 2015-4-8 01:08:35 | 只看该作者
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
若相依 该用户已被删除
16#
发表于 2015-4-15 03:59:22 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
精灵巫婆 该用户已被删除
17#
发表于 2015-4-21 13:14:24 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
只想知道 该用户已被删除
18#
发表于 2015-5-1 13:40:30 | 只看该作者
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
冷月葬花魂 该用户已被删除
19#
发表于 2015-5-6 10:09:38 | 只看该作者
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
第二个灵魂 该用户已被删除
20#
发表于 2015-6-9 18:09:07 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-5 12:38

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表