`
zhjb2000
  • 浏览: 58349 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

Liferay学习历程二:搭建二次开发环境(第三部分)

阅读更多
在这里将介绍如何集成Struts的DispatchAction多方法的功能,下面是代码

packagecn.pisoft.portlet.struts;

importjava.lang.reflect.InvocationTargetException;
importjava.lang.reflect.Method;
importjava.security.MessageDigest;
importjava.security.NoSuchAlgorithmException;
importjava.util.ArrayList;
importjava.util.HashMap;
importjava.util.List;
importjava.util.Map;

importjavax.portlet.ActionRequest;
importjavax.portlet.ActionResponse;
importjavax.portlet.PortletConfig;
importjavax.portlet.PortletSession;
importjavax.portlet.RenderRequest;
importjavax.portlet.RenderResponse;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;

importorg.apache.commons.fileupload.FileItem;
importorg.apache.commons.fileupload.FileItemFactory;
importorg.apache.commons.fileupload.FileUploadException;
importorg.apache.commons.fileupload.portlet.PortletFileUpload;
importorg.apache.commons.logging.Log;
importorg.apache.commons.logging.LogFactory;
importorg.apache.struts.Globals;
importorg.apache.struts.action.ActionForm;
importorg.apache.struts.action.ActionForward;
importorg.apache.struts.action.ActionMapping;
importorg.apache.struts.util.MessageResources;

importcn.pisoft.portlet.km.ExtActionKey;
importcn.pisoft.portlet.km.ServicePool;

importcom.liferay.portal.model.Layout;
importcom.liferay.portal.model.User;
importcom.liferay.portal.model.impl.ResourceImpl;
importcom.liferay.portal.service.ResourceLocalServiceUtil;
importcom.liferay.portal.service.UserLocalServiceUtil;
importcom.liferay.portal.struts.PortletAction;
importcom.liferay.portal.util.PortalUtil;
importcom.liferay.portal.util.WebKeys;
importcom.liferay.portlet.ActionRequestImpl;

publicclassDispatchPortletActionextendsPortletAction...{
protectedActionForwarddispatchMethod(ActionMappingmapping,
ActionFormform,HttpServletRequestrequest,
HttpServletResponseresponse,Stringname)
throwsException...{

PortletConfigportletConfig
=(PortletConfig)request
.getAttribute(WebKeys.JAVAX_PORTLET_CONFIG);

RenderRequestrenderRequest
=(RenderRequest)request
.getAttribute(WebKeys.JAVAX_PORTLET_REQUEST);

RenderResponserenderResponse
=(RenderResponse)request
.getAttribute(WebKeys.JAVAX_PORTLET_RESPONSE);

if(name==null)...{
returnthis.view(mapping,form,portletConfig,renderRequest,
renderResponse);
}


Methodmethod
=null;

try...{
method
=getMethod(name);

}
catch(NoSuchMethodExceptione)...{
Stringmessage
=messages.getMessage("dispatch.method",mapping
.getPath(),name);
log.error(message,e);

StringuserMsg
=messages.getMessage("dispatch.method.user",
mapping.getPath());
thrownewNoSuchMethodException(userMsg);
}


ActionForwardforward
=null;
try...{
Objectargs[]
=...{mapping,form,portletConfig,renderRequest,
renderResponse}
;
forward
=(ActionForward)method.invoke(this,args);

}
catch(ClassCastExceptione)...{
Stringmessage
=messages.getMessage("dispatch.return",mapping
.getPath(),name);
log.error(message,e);
throwe;

}
catch(IllegalAccessExceptione)...{
Stringmessage
=messages.getMessage("dispatch.error",mapping
.getPath(),name);
log.error(message,e);
throwe;

}
catch(InvocationTargetExceptione)...{
Throwablet
=e.getTargetException();
if(tinstanceofException)...{
throw((Exception)t);
}
else...{
Stringmessage
=messages.getMessage("dispatch.error",mapping
.getPath(),name);
log.error(message,e);
thrownewServletException(t);
}

}

return(forward);
}


protectedStringgetMethodName(ActionMappingmapping,ActionFormform,
HttpServletRequestrequest,HttpServletResponseresponse,
Stringparameter)
throwsException...{

StringmethodName
=request.getParameter(parameter);
if(methodName==null||methodName.length()==0)...{
methodName
=(String)request.getAttribute(parameter);
}

returnmethodName;
}


publicActionForwardview(ActionMappingmapping,ActionFormform,
PortletConfigconfig,RenderRequestreq,RenderResponseres)
throwsException...{
returnnull;
}


protectedMethodgetMethod(Stringname)throwsNoSuchMethodException...{
synchronized(methods)...{
Methodmethod
=(Method)methods.get(name);

if(method==null)...{
method
=clazz.getMethod(name,types);
methods.put(name,method);
}


return(method);
}

}


protectedvoidsaveToken(RenderRequestrequest)...{
Stringtoken
=generateToken(request.getPortletSession().getId());

request.getPortletSession().setAttribute(Globals.TRANSACTION_TOKEN_KEY,
token);
}


publicsynchronizedbooleanisTokenValid(RenderRequestrequest,
booleanreset)...{
//Retrievethecurrentsessionforthisrequest
PortletSessionsession=request.getPortletSession(false);

if(session==null)...{
returnfalse;
}


//Retrievethetransactiontokenfromthissession,and
//resetitifrequested
Stringsaved=(String)session
.getAttribute(Globals.TRANSACTION_TOKEN_KEY);

if(saved==null)...{
returnfalse;
}


if(reset)...{
this.resetToken(request);
}


Stringtoken
=request
.getParameter(org.apache.struts.taglib.html.Constants.TOKEN_KEY);

if(token==null)...{
returnfalse;
}


returnsaved.equals(token);
}


publicsynchronizedvoidresetToken(RenderRequestrequest)...{

request.getPortletSession().removeAttribute(
Globals.TRANSACTION_TOKEN_KEY);
}


publicsynchronizedStringgenerateToken(Stringid)...{
try...{
longcurrent=System.currentTimeMillis();

if(current==previous)...{
current
++;
}


previous
=current;

byte[]now=newLong(current).toString().getBytes();
MessageDigestmd
=MessageDigest.getInstance("MD5");

md.update(id.getBytes());
md.update(now);

returntoHex(md.digest());
}
catch(NoSuchAlgorithmExceptione)...{
returnnull;
}

}


privateStringtoHex(byte[]buffer)...{
StringBuffersb
=newStringBuffer(buffer.length*2);

for(inti=0;i<buffer.length;i++)...{
sb.append(Character.forDigit((buffer[i]
&0xf0)>>4,16));
sb.append(Character.forDigit(buffer[i]
&0x0f,16));
}


returnsb.toString();
}



protectedObjectgetService(StringserviceId)...{
returnServicePool.getService(serviceId);
}


protectedvoidregisterModelResource(RenderRequestrequest,StringclassName,Stringid)...{
try...{
Layoutlayout
=(Layout)request.getAttribute(WebKeys.LAYOUT);
StringuserId
=request.getRemoteUser();
Useruser
=UserLocalServiceUtil.getUserById(userId);
StringgroupId
=PortalUtil.getPortletGroupId(layout.getPlid());
ResourceLocalServiceUtil.addModelResources(user.getCompanyId(),
groupId,userId,className,id,
newString[1],
newString[1]);
http://images.csdn.net/syntaxhi
分享到:
评论

相关推荐

    Liferay 5.2.3 二次开发环境搭建

    本篇文章将详细讲解如何在基于Myeclipse 6和Tomcat 6.0.24的环境中搭建Liferay 5.2.3的二次开发环境。 **一、环境准备** 在开始Liferay的开发工作之前,我们需要准备好以下软件: 1. **Myeclipse 6**: 这是一个...

    Liferay 6.2 开发环境搭建

    Liferay 6.2 开发环境搭建.doc,包括Liferay SDK下载及搭建过程等!

    liferay6.1.2开发环境的搭建

    Liferay 6.1.2 开发环境的搭建 Liferay 是一个开源的企业portal平台,提供了丰富的功能和插件,帮助开发者快速构建企业门户网站。为了搭建 Liferay 6.1.2 开发环境,我们需要安装 JDK、Liferay Portal、Tomcat、Ant...

    搭建liferay portal的开发环境.doc

    搭建Liferay Portal的开发环境是一项细致且复杂的过程,涉及到多个步骤和组件的配合。本文将根据给定的文件信息,详细解析如何从零开始构建一个完整的Liferay开发环境,包括必要的准备、具体步骤以及关键配置。 ###...

    liferay6.1,Eclipse3.6开发环境搭建

    ### Liferay 6.1与Eclipse 3.6开发环境搭建详解 #### 一、前言 在软件开发领域,构建一个高效稳定的开发环境至关重要。对于基于Liferay平台的应用开发来说,选择合适的集成开发环境(IDE)是提高开发效率的关键之一...

    Liferay_Portal6.0开发环境搭建

    **Liferay Portal 6.0 开发环境搭建详解** Liferay Portal是一款强大的开源企业门户解决方案,深受全球开发者和企业的喜爱。它基于先进的Java技术和Web 2.0特性,支持多种应用服务器、servlet容器、数据库以及操作...

    liferay开发环境搭建

    本教程将详细解释如何在Windows环境下搭建Liferay的开发环境,以进行二次开发。 首先,我们需要准备以下文件: 1. JDK (Java Development Kit) - 用于编译和运行Java代码。 2. Ant - 一个自动化构建工具,Liferay的...

    liferay环境的搭建

    本文档旨在详细介绍如何利用Eclipse集成开发环境(IDE)来搭建Liferay开发环境,并创建portlet项目。通过本指南,您将能够成功安装必要的软件并配置开发环境。 #### 二、所需资源 为了搭建Liferay开发环境,您需要...

    7z压缩,三合一-LifeRay-开发参考手册&二次开发指南&4.3中文开发指南

    2. **LifeRay二次开发指南**:二次开发指南是针对已经熟悉LifeRay基础的开发者,它可能会详细讲解如何基于LifeRay的开放源代码进行定制化开发,包括创建自定义主题、布局、portlet、服务等,以及如何利用LifeRay的...

    Liferay 5.2.3 开发环境环境搭建.doc

    【Liferay 5.2.3 开发环境搭建】 Liferay 是一款强大的开源门户平台,基于J2EE架构,融合了EJB、JMS等多种技术。它的前端使用Struts MVC框架,通过XML配置文件实现portlet的动态扩展。此外,Liferay还集成了Web服务...

    Liferay_5.2.3_开发环境环境搭建

    本文将详细介绍如何搭建Liferay 5.2.3的开发环境。 1. **关于Liferay 5.2.3** Liferay 5.2.3是Liferay Portal的一个较早版本,发布于2009年。尽管现在已经有了更先进的版本,但5.2.3仍然被一些企业使用,因为它...

    MyEclipse8+Liferay 开发环境搭建

    ### MyEclipse 8 + Liferay 开发环境...通过上述步骤,开发者可以在 MyEclipse 8 环境下成功搭建 Liferay 的开发环境,并进行高效的二次开发工作。这不仅提高了开发效率,也为构建复杂的企业级应用提供了坚实的基础。

    Liferay Portal 二次开发指南

    #### 三、Liferay Portal 二次开发 ##### 3.1 重要基类:GenericPortlet Liferay提供了`GenericPortlet`基类,简化了Portlet的开发流程。继承这个基类可以自动实现大部分Portlet生命周期的方法,开发者只需关注...

    Liferay配置二次开发环境——Eclipse

    为了对Liferay进行二次开发,我们需要一个合适的集成开发环境(IDE),Eclipse是一个常用的选择。本篇文章将详细介绍如何利用Eclipse配置Liferay的二次开发环境,并着重讨论jikes.exe在这个过程中的作用。 首先,...

    Liferay_5.2.3_环境搭建

    【Liferay 5.2.3 环境搭建】是指在本地计算机上配置和安装Liferay Portal 5.2.3版本的过程。Liferay是一个全面的门户平台,基于Java Enterprise Edition (J2EE) 技术构建,利用EJB(Enterprise JavaBeans)和JMS...

    liferay开发小记---开发环境的搭建

    搭建Liferay开发环境的第一步是安装Java Development Kit (JDK)。确保安装的是JDK 8或更高版本,因为Liferay DXP(当前稳定版)需要这个版本的Java。同时,安装一个合适的IDE,例如Eclipse或IntelliJ IDEA,并配置好...

    MyEclipse8+Liferay开发环境搭建

    MyEclipse8+Liferay开发环境搭建

Global site tag (gtag.js) - Google Analytics