欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    LIFERAY5架构及开发培训.ppt

    • 资源ID:2774517       资源大小:2.62MB        全文页数:49页
    • 资源格式: PPT        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    LIFERAY5架构及开发培训.ppt

    Contents,Liferay介绍,返回上级目录,返回目录,Liferay概述及特点,Liferay 是专门为符合Portlet API(JSR268)的门户单元设计开发的。而且有许多不错的门户单元附加在Lliferay 中,包括邮件、文档库、日历、公告板等,它们也可以作为开发学习时的例子使用。Liferay Portal代表了完整的J2EE应用,使用了Web、EJB以及JMS等技术,特别是其前台界面部分使用Struts 框架技术,基于XML的portlet配置文件可以自由地动态扩展,使用了Web Services来支持一些远程信息的获取,使用 Apahce Lucene实现全文检索功能。主要特点:1、提供单一登陆接口,多认证模式(LDAP或SQL);2、管理员能通过用户界面轻松管理用户,组,角色;3、用户能可以根据需要定制个性化的portal layout;4、能够在主流的J2EE应用服务器上运行,如JBoss+Jetty/Tomcat,JOnAS;5、支持主流的数据库,如PostgreSQL,MySQL;6、使用了第三放的开源项目,如Spring,Hibernate,Lucene,Struts;7、支持包括中文在内的多种语言;8、采用最先进的技术 Java,EJB,JMS,SOAP,XML;,什么是Portal?,许斌,Portal 是基于Web 的,以“应用整合”和“消除信息孤岛”为最终目的,提供单点登录、内容聚合、个性化门户定制等功能的综合信息系统。完整的Portal 通常由Portal 服务器、Portlet 容器、Portlet 构成。,返回目录,Portlet vs Servlet 开发,开发一个Java Portlet 类似于开发一个基于web应用的Servlet开发相似的地方:Portlet 也是 Java 技术的 web 组件Portlet 也是有特定的 container 在管理Portlet 可以动态产生各种内容Portlet 的生命周期由 container 所管理Portlet 和客户端的互动是通过 request/response 的机制主要的区别在于:Portlet只能生成标记段,不是整个文档,Portal将会连接一些portlets的标记段并且创建一个整个页面返回给用户.接受请求的类必须继承javax.portlet.Portlet 而不是javax.servlet.http.HttpServlet.一个portlet请求可能涉及两个状态进程:1.对于大多数的请求来说,一个portlet将会执行一个状态转换操作,这与action 状态有关系,并且通过一个方法processAction来实现.并不是需要每一个Action 状态.包含一个action 状态的请求被注入到ActionURL,与此同时那些只含有render phase 的请求被注入到RenderURL.2.接下来所有与页面有关联的,将要被返回的其他的portlets的render状态可能会在任何将HTML标记段来描述他们自身的请求中来被调用.Portlet通过一个render方法实现这种功能.,返回目录,Portlet vs Servlet 开发,Portlet 有一些附加的功能是 Servlet 所没有的:Portlet 能够存取及储存永久配置文件及定制资料。Portlet 可以存取使用者数据Portlet 具有 URL 的重写功能在文件中去动态建立连结,允许 portal server 不用去知道如何在网页的片 段之中建立连结及动作。Portlet 可以储存临时性的数据在 Portlet session 之中,拥有两个不同的范围:application-wide scope 及 Portlet private scope。Portlet 不具有一些功能,但是 Servlet 却有提供:Servlet 具有设置输出的文字编码(character set encoding)方式Servlet 可以设置 HTTP 输出的 headerServlet 才能够接收客户对于 portal 发出的 URL 请求,返回目录,Portlet 的生命周期,一个Portlet有着良好的生命周期管理,定义了怎样装载,实例化和初始化,怎样响应来自客户端的请求及怎样送出服务。这个Portlet生命周期由Portlet接口的init,processAction,render和destroy方法来表达。载入和实例化:Portlet 容器负责载入和实例化Portlet。当Portlet 容器运行Portlet 应用或者延迟到Portlet 需要服务使用者的请求时,Portlet 就会被载入并实例化。载入Portlet 类后,Portlet 类随即被实例化。初始化:Portlet 类实例化后,Portlet 容器还需要初始化Portlet。以调用Portlet 去响应客户端的请求。Portlet 容器呼叫Portlet 接口中的init 方法初始化Portlet。扩展自PortletConfig的类可以取出定义在部署描述文件中的初始化参数,以及Resource Bundle。初始化异常:在 Portlet 初始化期间,Portlet 可能会丟出 UnavailableException 或PortletException 异常。此时,Portlet 容器不能把 Portlet 置入已启动的服务,并且 Portlet容器必需释放这个 Portlet。destory 方法不能被呼叫,因为初始化被认为执行失败。发生 失败后,Portlet 容器会尝试着重新实例化及初始化 Portlet。这个异常处理的规则是:由一个UnavailableException 指定一个不能执行的最小时间,当此异常发生时,Portlet 容器必需等到指定时间过去后才产生并且初始化一个新的 Portlet。在初始化过程中所丟出的 Runtime Exception 异常,被当作 PortletException 来处理。,返回目录,Liferay Portal 工作原理(1),Company Logo,Portal 系统根据需要由一个或者多个Portal 页面组成,每个Portal 页面包含零个或者多个的Portlet。每个Portlet 呈现自己的信息内容,以此实现内容聚合。通过定义每个Portlet 的可用权限,实现个性化的桌面信息定制。,每个Portlet 对外表现为一个小窗口,有自己的默认样式和窗口状态。JSR168 规范定义了三个Portlet 模式:浏览、编辑和帮助。如右图,Portlet 有自己的标题,浏览状态下支持编辑、关闭、上移、下移、最大化、最小化功能,编辑状态下支持返回和关闭功能。从各种数据来源提取的信息以Portlet 内容的形式呈现在Portal 中。同时Portal 是可以根据使用者的角色,来决定是要提供(显示)哪几个Portlet 模式给使用者操作。,返回目录,Liferay Portal 工作原理(2),Company Logo,Portal 页面创建过程如下:Portlet 在 Portlet 容器内执行Portlet容器将这些内容提交给 Portlet 服务器,Portlet 服务器依照这些内容建立Portal页面,然后将它传给客户端呈现。具体流程如右上图:,Portal 页面的请求过程如下:使用者经由客户端设备(例如浏览器)存取 Portal,Portal 根据接收到的请求决定哪些 Portlet 需要被执行以满足需求。Portal 通过Portlet容器呼叫 Portlet,然后由Portlet产生的片段建立Portal页面,再传回客户端呈现给使用者。具体流程如右下图:,Portlet 开发完毕后,部署到Portal 服务器,由Portal 服务器负责组织、权限控制现。,返回目录,Java Portlet 规范(JSR-268)和WSRP,JSR-268:由于Liferay 支持Portlet 规范(JSR-268).任何基于此规范的Portlet均可正常运行.Java 平台提供了一种基于JSR-168的标准,标准化portlets如何与其他portlet 容器集成并在不同的portal 产品之间来保证兼容性.Liferay Portal 提供了一种100%便利的portlet 容器来保证任何基于标准规范的portlet将会在Liferay中运行在JSR-268规范中,一个portlet应用可以聚集其他的不同的portlets并且打包成一个WAR文件,就像一个标准的Java web应用一样.在WAR文件中,以portlet.xml 来定义portlets 的应用,portlet.xml 文件放在WAR 文件中的WEB-INF目录中.Java Portlet 规范包括portlet 容器.,WSRP:WSRP 是OASIS Web Service for Remote Portlet 的缩写。WSRP 是Web Service 的一种新的商业应用,一种新的标准,主要用来简化Portal 对于各种资源或者程序整合的复杂度,可以避免编程带来的整合麻烦和问题。而且Portal 管理员可以从海量的WSRP 服务中选择需要的功能用以整合到目前所用的Portal 中。它有三种角色:生产者 提供Portlet消费者 使用Portlet终端用户 最终用户 它的特点在于生产者将消费者所需要的信息通过WSRP 返回给消费者,这些信息是相对标记片断,例如HTML、XHTML 等,可以直接嵌入用户的页面中,而不用像Web Service一样开发用户端接口。实现这个规范,Portal 可以跟各式各样的数据源打交道,彻底终结信息孤岛的窘境。,返回目录,Liferay Portlet5.2.2开发推荐使用工具,JDK 1.5,或者 1.5-java开发工具包Jre1.5,或者1.6-java程序运行环境Jikes 1.22-Jikes是一个IBM创建的Java编译器,比Sun JDK的编译器要快.Ant 1.7-一个基于 Java 的生成工具。Subversion-一个简单的版本控制工具,推荐你将所有的代码和配置文件放在一个版本控制工具中,Subversion是一个免费的开源的版本控制工具。Eclipse3.3+MyEclipse6.0-一个支持J2EE,Java,Web,portlet等开发的IDEMySQL5.0-一个主流的开源数据库Tomcat-5.5-Web服务器具体环境变量里面需要的配置有:JAVA_HOME D:Program FilesJavajdk1.5.0_16CLASSPATH.;%JAVA_HOME%libdt.jar;%JAVA_HOME%libtools.jar;%JAVA_HOME%jrelibJIKES_HOME,ANT_HOMEPath:%JAVA_HOME%bin;%JIKES_HOME%bin;%ANT _HOME%bin;,返回目录,Liferay Portlet5.2.2开发简单说明,无论是portal和ext工程,目录都很繁杂,其实我们只要关注3个目录就够了。这就是ext工程对应目录:ext-implsrcext-servicesrcportal-web而portal工程项目里面的3个目录:portal-implsrc和portal-servicesrc是portal工程已经实现的所有portlet的java代码和部分资源文件;portal-web目录是放置网页文件和portal的配置文件。ext工程对应目录ext-implsrc,ext-servicesrc和portal-web跟portal是很类似的。ext-implsrc,ext-servicesrc是放置我们自己开发的portlet的java代码。ext-web是自己开发portlet对应的网页文件和配置文件。,返回目录,Portlets开发介绍流程,Configuration Portlet的开发流程采用的也是Struts Portlet的开发流程,Configuration,简单,复杂,JSP Portlet开发,JSP Portlet开发流程,JSP Portlet是开发中使用频率最高的开发方式,主要原因有两个:(1)当配置好Portlet之后,只需要修改JSP文件。而JSP文件支持hot deploy,这就会在开发过程中节省好多等待ant deploy和liferay tomcat startup的时间。(2)开发流程也相对简单。推荐的JSP Portlet推荐开发流程如右图,当然也不用完全按照如下流程来做,只要完成相关配置的修改即可。,在Liferay中创建一个JSP Portlet:,开发流程:1.定义portlet portlet-ext.xml 定义Portlet liferay-portlet-ext.xml 配置Portlet实例属性2.国际化配置文件 Language-ext.properties3.归类Portlet Liferay-display.xml 分类组织Portlet4.创建JSP view.jsp 定义我们需要的页面,开发目录结构:配置文件放在这个目录下:extext-webdocrootWEB-INFJSPs将会放在这个目录下:extext-webdocroothtmlportletext,Liferay如何决定哪个JSP应该被首先显示?对于JSP Portlet,JSP直接指向了从portlet-ext.xml中定义的页面.,定义portlet,My_JSP_PortletJSP Portletcom.liferay.util.bridges.jsp.JSPPortletview-jsp/html/portlet/ext/myjspportlet/view.jsp0text/htmlcom.liferay.portlet.StrutsResourceBundlepower-useruser,配置文件是:extext-webdocrootWEB-INFportlet-ext.xml,注意:1、Portlets是通过,来唯一定义的。因此,你要确保的唯一性。2、要创建JSPPortlet,属性应该设置为com.liferay.util.bridges.jsp.JSPPortlet。3、中的值“view-jsp”不能修改。4.、中的值-指定哪个JSP应该被首先显示,配置Portlet实例属性,分类组织,国际化,My_JSP_Portlettrue/css/test.css/js/test.js,定义Portlet实例属性:配置文件是:extext-webdocrootWEB-INF liferay-portlet-ext.xml,分类组织Portlets:配置文件是:extext-webdocrootWEB-INF liferay-display.xml,注意:这里的元素的值 My_JSP_Portlet必须要和portlet-ext.xml中的元素的值一致的。,其中的key值(即javax.portlet.title.My_JSP_Portlet),是“javax.portlet.title”+“portlet名字”(即在portlet-ext.xml中添加的portlet的的值),定义Portlet名称:配置文件是:extext-implsrccontentLanguage-ext.properties,javax.portlet.title.My_JSP_Portlet=My JSP Portlet,JSP开发-创建JSP页面,创建JSP:在 extext-web docroothtmlportletext目录下创建文件目录myjspportlet在新建的myjspportlet目录下,添加一个文件叫init.jsp,在文件中加入下面内容:,现在,再在新建的myjspportlet目录下添加一个文件view.jsp 在view.jsp中写下:,问题出来了,portal如何得知怎样加载这些特殊的文件?如果你返回观察添加到portlet-ext.xml中的portlet元素,你将会观察到你初始化了一个view-jsp参数,它的值是/ext/myjspportlet/view.jsp。通过指定这个init-param,你将使得portlet加载一个默认的JSP。,Hello,its my first jsp portlet!,发布、运行和测试,发布:执行ext项目根目录下的build.xml文件ant deploy,部署这些你做的对你的应用的改变,然后重启tomcat服务器。,运行和测试:访问地址:http:/localhost:8080。利用用户名:;密码:test登录进入系统。在选择应用的窗口中选择我们刚刚添加的PortletMy JSP Portlet,如果在页面上会增加一个Portlet(如下图),显示出你刚刚添加的内容,那么部署就成功了。,添加应用,选中添加,Struts Portlet开发,Struts Portlet开发流程,StrutsPortlet推荐的开发流程如下,当然也不用完全按照如下流程来做,只要完成相关配置的修改即可。,为什么用Struts?Struts实现了MVC.虽然有其他框架实现MVC,Struts是最广泛应用和最成熟的技术.什么是MVC?MVC将显示代码从业务逻辑中分离出来.Struts在struts-config.xml中提供了集中的页面流管理.这使得它高度可升级并且使得你模块化代码流程.通过使用struts,你可以使用一些最佳实践,已经集成在框架中.为什么用tiles?一个页面布局是一个使用包含典型声明的设计.如果有100个JSPs并且头和尾都需要改变,所有的100JSPs都需要改变.用tiles,一个简单的模板可以被用于定义页面布局.只要模板改变,所有页面将会依次改变。,在Liferay中创建一个Struts Portlet:,开发流程:1.定义portlet portlet-ext.xml 定义Portlet liferay-portlet-ext.xml 配置Portlet实例属性2.国际化配置文件(定义Portlet名称)Language-ext.properties3.归类Portlet Liferay-display.xml 分类组织Portlet4.定义页面流和布局 struts-config.xml定义页面流 titles-defs.jsp定义页面布局5.定义Action Class6.创建JSP view.jsp 定义我们需要的页面,开发目录结构:配置文件放在这个目录下:extext-webdocrootWEB-INFJSPs将会放在这个目录下:extext-webdocroothtmlportletextStruts中Action放在这个目录下:extext-implsrccomportlet,注意:Liferay如何决定哪个JSP应该被首先显示?对于JSP Portlet,JSP直接指向了从portlet-ext.xml中定义的页面.对于Struts portlets,这一系列过程通过tiles-defs.xml来定义.,“struts_action”链接到哪里?链接到struts-config.xml.,定义portlet,EXT_4Library Portletcom.liferay.portlet.StrutsPortletview-action/ext/library/add_book0text/htmlcom.liferay.portlet.StrutsResourceBundlepower-useruser,配置文件是:extext-webdocrootWEB-INFportlet-ext.xml,注意:1、Portlets是通过,来唯一定义的。因此,你要确保的唯一性。2、要创建Struts Portlet,属性应该设置为com.liferay.portlet.StrutsPortlet。3、中的值“view-action”不能修改。4、中的值-struts_action”链接到struts-config.xml中的path属性值,配置Portlet实例属性、分类组织,国际化,EXT_4ext/libraryfalse,定义Portlet实例属性:配置文件是:extext-webdocrootWEB-INF liferay-portlet-ext.xml,分类组织Portlets:配置文件是:extext-webdocrootWEB-INF liferay-display.xml,注意:这里的元素的值 EXT_4必须要和portlet-ext.xml中的元素的值一致的。,其中的key值(即javax.portlet.title.EXT_4),是“javax.portlet.title”+“portlet名字”(即在portlet-ext.xml中添加的portlet的的值),定义Portlet名称:配置文件是:extext-implsrccontentLanguage-ext.properties,javax.portlet.title.EXT_4=Library,定义Struts页面流、tiles页面布局,定义Struts页面流:配置文件是:extext-webdocrootWEB-INF struts-config.xml,定义tiles页面布局:配置文件是:extext-webdocrootWEB-INF tiles-defs.xml,注意:这里的path=/ext/library/add_book值就是portlet-ext.xml中对应的view-action的值。,这理portlet.ext.library 继承 portlet。这意味着portlet.ext.library将会使用 portlet.jsp 作为它的模板。portlet.ext.library.view 继承 portlet.ext.library。这意味着portlet.ext.library.view portlet.ext.library也将会使用portlet.jsp 作为它的模板,注意:这里的name=portlet.ext.library.view值就是struts-config.xml中对应的forward=portlet.ext.library.view的值,定义Action,package com.ext.portlet.library.action;import javax.portlet.ActionRequest;import javax.portlet.ActionResponse;import javax.portlet.PortletConfig;import javax.portlet.RenderRequest;import javax.portlet.RenderResponse;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;import com.liferay.portal.struts.PortletAction;public class AddBookAction extends PortletAction public void processAction(ActionMapping mapping,ActionForm form,PortletConfig config,ActionRequest req,ActionResponse res)throws Exception String bookTitle=req.getParameter(book_title);if(null=bookTitle|.equals(bookTitle)setForward(req,portlet.ext.library.error);else setForward(req,portlet.ext.library.success);public ActionForward render(ActionMapping mapping,ActionForm form,PortletConfig config,RenderRequest req,RenderResponse res)throws Exception if(getForward(req)!=null,添加目录:extext-implsrccomextportletlibraryaction,并在目录下建Action文件,JSP开发-创建JSP页面,在 extext-web docroothtmlportletext目录下创建文件目录liberay在新建的liberay目录下,添加文件init.jsp,view.jsp,success.jsp,error.jspInit.jsp里面写下面代码,Add a book entry to the Library:method=post name=fmBook Title:book_title size=20 type=text value=fm);,view.jsp里面写入下面的代码,其中,这将会让我们使用在上一步这定义的init.jsp,其中实际对应目录是:portalportal-webdocroothtmlcommoninit.jsp。这将会让我们使用Liferay 标签库,JSP开发-创建JSP页面,在liberay目录下面创建文件error.jsp和success.jsp。如果添加书成功,则返回success.jsp页面,显示书名;如果添加书失败,则返回error.jsp,提示添加失败。,Book Title:,error.jsp里面写入下面的代码:,Its failed to add a book!,success.jsp里面写入下面的代码:,发布、运行和测试,发布:执行ext项目根目录下的build.xml文件ant deploy,部署这些你做的对你的应用的改变,然后重启tomcat服务器。,运行和测试:访问地址:http:/localhost:8080。利用用户名:;密码:test登录进入系统。在选择应用的窗口中选择我们刚刚添加的PortletLibrary,如果在页面上会增加一个Portlet(如下图),显示出你刚刚添加的内容,那么部署就成功了。,添加应用,选中添加,Sturts Portlet小结,高度总览 一个URL或Uri通过控制器传送.控制器决定哪个页面应该被显示出来.我们开始页面指向portlet-ext.xml的view-action控制器MainServlet.java,详细视图:,Liferay如何决定哪个JSP应该被首先显示?,Sturts Portlet小结,对于JSP Portlet,JSP直接指向了从portlet-ext.xml中定义的页面.对于Struts portlets,这一系列过程通过tiles-defs.xml来定义.,Sturts Portlet小结,Liferay将会检查struts-path来检查是否一个用户有访问这个portlet的权限.注意:当你看到错误(error)信息后:你没有足够的权限来访问这个portlet.那么:1.检查你是否在portlet-ext.xml中有正确的定义用户权限.2.检查来观察是否定义正确.,Configuration Portlet开发,SSH Portlet开发,SSH Portlet开发流程,在Liferay中创建一个SSH Portlet:,开发目录结构:配置文件放在这个目录下:extext-webdocrootWEB-INFJSPs将会放在这个目录下:extext-webdocroothtmlportletextStruts中Action放在这个目录下:extext-implsrccomportletSrc文件夹名放在这个目录下:extext-implsrccomextportlet 例如library模块,就在 extext-implsrccomextportlet下建目录libraryService.xml放在这个目录下 extext-implsrccomextportletlibrary 推荐:一个模块的实体表对应放在各自模块下同一个service.xml中ext-implsrc,ext-servicesrc是放置我们自己开发的portlet的java代码。ext-web是自己开发portlet对应的网页文件和配置文件。开发SSH,目地来新建一个自己portlet。这里我们采用portal里面代码规范生成机制。对于持久化层和服务层的类都可以自动产生。,在Liferay中创建一个SSH Portlet:,开发流程:1.建立业务数据表2.建立service.xml文件3.修改ant文件,增加ant任务 在extext-impl根目录下的build-parent.xml文件添加build-service任务4.生成实体类和持久化类 执行extext-impl根目录下的build.xml文件build 具体的 任务,生成hibernate的实体类和持久化类6.在实体类和持久化类,增加自己需要的业务操作7.自定义portlet及配置Portlet属性 portlet-ext.xml 定义Portlet liferay-portlet-ext.xml 配置Portlet实例属性8.国际化配置文件 Language-ext.properties9.归类Portlet Liferay-display.xml 分类组织Portlet10.定义页面流和布局 struts-config.xml定义页面流 titles-defs.jsp定义页面布局11.定义Action12.创建JSP 定义我们需要的页面,建立业务数据表和代码模板配置文件,首先、建立业务数据表,在数据库里面新建一个表UsersEntry,字段userid,username,password.并往表中插入几个条数据。,接下来,建立代码模板配置文件建立service.xml文件:在ext-implsrccomextportlet 新建一个目录users,在目录下建立一个service.xml文件,文件内容为:,UsersUsersEntry,修改ant文件,增加ant任务,并执行ant任务,建好service.xml文件后,我们在ext-impl目录下打开build-perent.xml 在.的下面添加任务:,然后在MyEclipse的ant视图里面打开ext-impl目录下的build.xml执行build-service-portlet-user任务。,之后,我们会发现在ext-implsrccomextportletusers,和 ext-servicesrccomextportletusers下面多了几个目录和文件。这是都是系统自动产生的hibernate的实体类和持久化类。如果我们再细心些也可发现在ext-implsrcMETA-INF目录下配置文件都多些内容。这些都是系统已经自动将对应的实体类、持久化类、工具类等配置为相应的javabean、util、service等。这样做无疑节省了很多时间,而且减少我们人工配置的错误。,业务实现编码,现在我们要实现一个查询功能,将数据库中表名users中所有记录的username,password查询出来,并显示在前台。,(1)打开ext-servicesrccomextportletusersservice下UsersEntryService文件,建立一个名为getAllUsers的抽象方法;public List getAllUsers()throws SystemException;(2)然后在ext-implsrccomextportletusersserviceimplUsersEntryServiceImpl.java中实现上面的接口UsersEntryService.即加上如下方法:public List getAllUsers()throws SystemException return UsersEntryUtil.findAll();(3)同样spring的service层 也是通过辅助类作为对外唯一入口,所以在UsersEntryServiceUtil里面增加一个方法getAllUsers作为service层的方法getAllUsers的入口。如下:public static List getAllUsers()throws SystemException return _service.getAllUsers();需要注意的是service层接口对应具体实现是由工厂类指定。他们捆绑关系可以查看spring配置文件信息。,定义Action-完成响应客户端请求,在srccomextportletusersaction目录下建立一个ViewUserAction.java文件,package com.ext.portlet.users.action;import com.ext.portlet.users.model.UsersEntryModel;import com.ext.portlet.users.service.UsersEntryServiceUtil;import com.liferay.portal.struts.PortletAction;import java.util.ArrayList;import java.util.List;import javax.portlet.PortletConfig;import javax.portlet.RenderRequest;import javax.portlet.RenderResponse;import javax.portlet.WindowState;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;public class ViewUsersAction extends PortletAction public ActionForward render(ActionMapping mapping,ActionForm form,PortletConfig config,RenderRequest req,RenderResponse res)throws Exception if(req.getWindowState().equals(WindowState.NORMAL)return mapping.findForward(portlet.ext.users.view);else List users=UsersEntryServiceUtil.getAllUsers();List usernames=new ArrayList();List password=new ArrayList();for(int i=0;i users.size();i+)usernames.add(UsersEntryModel)users.get(i).getUsername();password.add(UsersEntryModel)users.get(i).getPassword();req.setAttribute(users,usernames);re

    注意事项

    本文(LIFERAY5架构及开发培训.ppt)为本站会员(文库蛋蛋多)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开