基于 Struts 2 构建 WebSphere Portal 上的 Portlet 应用.docx

上传人:b****4 文档编号:24454168 上传时间:2023-05-27 格式:DOCX 页数:36 大小:582.56KB
下载 相关 举报
基于 Struts 2 构建 WebSphere Portal 上的 Portlet 应用.docx_第1页
第1页 / 共36页
基于 Struts 2 构建 WebSphere Portal 上的 Portlet 应用.docx_第2页
第2页 / 共36页
基于 Struts 2 构建 WebSphere Portal 上的 Portlet 应用.docx_第3页
第3页 / 共36页
基于 Struts 2 构建 WebSphere Portal 上的 Portlet 应用.docx_第4页
第4页 / 共36页
基于 Struts 2 构建 WebSphere Portal 上的 Portlet 应用.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

基于 Struts 2 构建 WebSphere Portal 上的 Portlet 应用.docx

《基于 Struts 2 构建 WebSphere Portal 上的 Portlet 应用.docx》由会员分享,可在线阅读,更多相关《基于 Struts 2 构建 WebSphere Portal 上的 Portlet 应用.docx(36页珍藏版)》请在冰豆网上搜索。

基于 Struts 2 构建 WebSphere Portal 上的 Portlet 应用.docx

基于Struts2构建WebSpherePortal上的Portlet应用

2008年2月28日

Struts2是MVC框架发展的最新阶段。

Struts2从WebWork发展而来,而不是由Struts1演化而来,因此利用Struts2开发和部署应用程序有很多不同于Struts1的地方,尤其是在开发和部署Porlet方面,Struts2更是有着以往Portlet应用程序开发方式所无法比拟的优势。

本文的目的就是通过在IBM的WebSpherePortalServer上开发和部署一个基于Struts2的Porlet应用,向读者介绍利用Struts2进行Portlet应用开发的优势和关键流程。

概述

WebSpherePortalServer5.1及以上版本支持两种PortletAPI:

第一种是IBMPortlet,这种PortletAPI是WebSpherePortalServer专有的一种PortletAPI;第二种是符合JSR168标准的PortletAPI。

由于JSR168是一个开放的标准,因此符合JSR168标准的Portlet将更易于移植。

IBM为IBMPortletAPI和JSR168API分别实现了基于Struts1的Portlet开发框架,由于基于Struts1,这两种Portlet框架API同PortletAPI耦合紧密,尤其需要指出的是由于无论IBMPortlet还是在WebSpherePortalServer上实现的JSR168标准的PorletAPI,它们的接口都直接依赖于PortletRequest/PortletResponse对象,这就使得程序移植和单元测试等变得比较困难。

此外,我们在使用Struts1开发Servlet应用时,习惯于将数据存放在request作用域中,通过页面的跳转将数据呈现到jsp视图页面。

但是,这种做法在portlet开发中是不可行的。

与servlet的生命周期有所不同,portlet存在操作响应阶段和呈现阶段。

在portlet操作响应阶段存放在request作用域的变量,在呈现阶段就会失效。

在原有API上解决这个问题既费时又不优雅,而Struts2对Portlet的支持将能够很好的解决这些问题。

本文就是要通过一个简单的示例应用程序的开发和部署过程,来展示Struts2怎样解决旧有的PortletAPI所无法克服的困难的。

本文的重点不在于开发一个Struts2Web应用程序,而在于开发一个作为Portlet的Struts2应用程序所需的的实现和配置。

读者可以了解到如何利用Struts2来创建一个Portlet,这个Portlet将完全独立于其所开发和部署的平台。

在示例应用程序的开发和部署中用到了下列产品:

∙IBMWebSpherePortalServer集成测试环境5.1

∙IBMWebSphereApplicationServerVersion5.1

∙Struts2FullDistribution2.0.11

∙IBMRationalApplicationdeveloper7(RAD7)

Porlet示例程序设计概述

示例应用程序是一个简单的用户登录程序。

合法的用户将跳转到的登录成功页面,登录失败的用户则跳转到登录失败页面,并被要求输入正确的用户名和密码。

用户可以自由的在Portlet的View、Edit和Help模式之间进行切换。

应用程序视图部分分为以下几部分:

∙登录页面(login.jsp)——提示用户输入正确的用户名和密码,登录应用程序。

∙登录成功页面(success.jsp)——提示用户登录成功。

∙登录失败页面(fail.jsp)——提示用户登录失败,提示用户输入正确的用户名和密码。

∙Edit页面(edit.jsp)——用户进入Edit模式后的页面。

∙Help页面(help.jsp)——用户进入Help模式后的页面。

∙程序主类——Login.java。

图1.程序初始页面

下图是本文示例的Action与页面的交互图:

图2.Action与页面的交互图

利用Struts2实现Portlet

在本文中,使用Struts2开发Portlet应用需要经历以下步骤:

1.使用RAD7建立开发环境

2.生成web.xml配置文件

3.生成portlet.xml配置文件

4.编辑jsp文件

5.应用Struts2

6.部署Portlet应用程序

7.访问Portlet应用

使用RAD7建立开发环境

在RationalApplicationdeveloper7中启动一个Portlet项目,需要遵循下列步骤:

1.选择新建一个Portlet项目,如图3所示:

图3.新建一个Portlet项目

2.输入项目名Struts2TestPortlet,目标运行时选择WebSpherePortalv5.1或者更高版本,注意PortletAPI选择JSR168Portlet,注意勾掉创建portlet选项,点击完成按钮。

如图4所示:

图4.设置项目属性

生成portlet项目及其结构如图5所示:

图5.portlet项目及其结构

3.接下来到Apache官方网站下载strtus2的完整版(FullDistribution)。

将下载到的Zip文件解压缩。

本文中使用的版本为struts-2.0.11。

将struts-2.0.11j4文件夹下的backport-util-concurrent-3.0.jar,retrotranslator-runtime-1.2.2.jar,struts2-core-j4-2.0.11.jar,xwork-j4-2.0.4.jar和lib目录下的ognl-2.6.11.jar,freemarker-2.3.8.jar文件拷贝到portletweb工程的WEB-INF/lib目录下。

在这里需要注意的是从j4文件夹下拷贝过来的JAR包,这是因为WebSpherePortalSever5.1基于jdk1.4,而j4文件夹下的内容就是Struts2支持JDK1.4的JAR文件。

生成web.xml配置文件

双击WEB-INF/web.xml,打开web部署描述符界面,如图6所示:

图6.web部署描述符界面

切换到过滤器选项卡,点击添加按钮,创建一个过滤器,名称设定为Struts2Filter,URL映射为/*,并且使用现有的过滤器类org.apache.struts2.dispatcher.FilterDispatcher,如图7所示。

点击完成

图7.创建一个过滤器

生成的web.xml描述文件内容如下所示:

web.xml描述文件内容

xmlversion="1.0"encoding="UTF-8"?

>

DOCTYPEweb-appPUBLIC"-//SunMicrosystems,Inc.//DTDWebApplication2.3//EN"

"

Struts2TestPortlet

Struts2Filter

Struts2Filter

Struts2Filter

org.apache.struts2.dispatcher.FilterDispatcher

Struts2Filter

/*

index.html

index.htm

index.jsp

default.html

default.htm

default.jsp

生成portlet.xml配置文件

双击portlet.xml,打开Portlet部署描述符界面,切换到portlet选项卡,如图8所示:

图8.Portlet部署描述符界面

点击添加按钮,添加一个portlet,输入portlet类型org.apache.struts2.portlet.dispatcher.Jsr168Dispatcher,确定,如图9所示:

图9.添加portlet

编辑该portlet的其它信息,分别设定Portlet名称,显示名称,标题,简短标题,关键字。

本示例中均输入Struts2TestPortlet。

如图10所示:

图10.编辑portlet信息

接下来在本页中编辑受支持的方式text/html,添加portlet模式view,edit,help。

如图11所示:

图11.添加portlet模式

Portlet模式让Portlet决定它该显示什么内容和执行什么动作。

调用一个Portlet的时候,Portlet容器会提供一个Portlet模式给那个Portlet。

当在处理一个请求动作时,Portlet的模式是可以用程序来改变的。

JSR168规范定义了三个Portlet模式:

浏览(View)、编辑(Edit)和帮助(Help)。

Struts2支持其中的全部三个模式。

同时Portal还可以根据使用者的角色,来决定是要提供(显示)哪几个Portlet模式给使用者操作。

在我们的例子中就使用了这三个模式。

继续在本页中添加初始化参数,首先是Namespace相关的参数见表1:

表1.Namespace相关的参数

名称

viewNamespace

/view

editNamespace

/edit

helpNamespace

/help

考虑到在同一个Web应用中需要同名Action,Struts2以命名空间方式管理Action。

同一个命名空间里不能有同名的Action,不同的命名空间里可以有同名的Action。

Struts2不支持为单独的Action设置命名空间,而是通过为包指定namespace属性来为下面所有的Action指定共同的命名空间。

这一点可以从下面的portlet.xml清单中看出。

Struts2对portlet的三种模式的支持是通过namespace体现的。

View,Edit,Help三种模式分别对应ViewNamespace,editNamespace,helpNamespace。

Action相关的参数见表2:

表2.Action相关的参数

名称

defaultViewAction

view

defaultEditAction

edit

defaultHelpAction

help

这些参数指定了在portlet的三种模式下的默认aciton名称,进入View、Edit、Help模式分别首先调用名称为view、edit、help的action。

图12.编辑portlet初始化参数

生成portlet.xml文件如下:

portlet.xml描述文件内容

xmlversion="1.0"encoding="UTF-8"?

>

xmlns="

version="1.0"xmlns:

xsi="http:

//www.w3.org/2001/XMLSchema-instance"

xsi:

schemaLocation="

id="com.ibm.faces.portlet.FacesPortlet.3ccbdcb861">

Struts2TestPortlet

Struts2TestPortlet

org.apache.struts2.portlet.dispatcher.Jsr168Dispatcher

viewNamespace

/view

editNamespace

/edit

helpNamespace

/help

defaultViewAction

view

defaultEditAction

edit

defaultHelpAction

help

text/html

view

edit

help

Struts2TestPortlet

Struts2TestPortlet

Struts2TestPortlet

在本清单中Portlet类“org.apache.struts2.portlet.dispatcher.Jsr168Dispatcher”在将Struts2集成到Portlet中起到了关键作用,该类将Portlet操作分发给Struts2。

编辑jsp文件

在WEB-INF下新建jsp文件夹,并生成几个jsp文件及内容如下:

input.jsp

<%@taglibprefix="s"uri="/struts-tags"%>

Pleasesignin

formaction="login"method="POST">

textfieldlabel="UserName"name="username"value="%{username}"/>

passwordlabel="Password"name="password"value="%{password}"/>

submitvalue="Signin"/>

form>

success.jsp

<%@taglibprefix="s"uri="/struts-tags"%>

Welcome

propertyvalue="username"/>

urlaction="view"/>">Backtosigninpage

fail.jsp

<%@taglibprefix="s"uri="/struts-tags"%>

Invalidusernameorpassword!

urlaction="view"/>">Backtosigninpage

edit.jsp

<%@taglibprefix="s"uri="/struts-tags"%>

Thisiseditpage!

help.jsp

<%@taglibprefix="s"uri="/struts-tags"%>

Thisishelppage!

应用Struts2

建立Struts2配置文件struts.xml

在src目录下建立struts.xml,工程构建之后struts.xml会被置于WEB-INF/classes下,这也是Struts2默认的配置文件路径。

struts.xml文件是基于Struts2的项目的核心配置文件。

在portlet开发过程最重要的内容就是要将"struts-portlet-default.xml"包含进来,这个xml文件存在于前面步骤中我们拷贝过来的struts2-core-j4-2.0.11.jar中,只有把它包含进来我们才能使Struts2支持portlet。

接下来描述的内容就是将前面定义的action和页面关联起来。

从中可以看出我们定义的login这个actoin的输入界面是input.jsp,如果成功则会被转向success.jsp,失败则会被转向fail.jsp。

struts.xml

xmlversion="1.0"encoding="UTF-8"?

>

DOCTYPEstrutsPUBLIC

"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN"

"http:

//struts.apache.org/dtds/struts-2.0.dtd">

namespace="/view">

/WEB-INF/jsp/input.jsp

/WEB-INF/jsp/input.jsp

/WEB-INF/jsp/success.jsp

/WEB-INF/jsp/fail.jsp

namespace="/edit">

/WEB-INF/jsp/edit.jsp

namespace="/help">

/WEB-INF/jsp/help.jsp

新建java类Login.java

Login.java

packagestruts2TestPortlet.action;

publicclassLoginextendsActionSupport{

Stringusername;

Stringpassword;

publicStringgetPassword(){

returnpassword;

}

publicvoidsetPassword(Stringpassword){

this.password=password;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 育儿知识

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1