eWorkplaces/Knowledge & Content Management
IBM Global Services
2002 8
B
ST Web ϵһЩM^mx IBM® WebSphere® Portal Ҫƽ_һ^҂Ҫ_lһʹ҂܉ЧʵOӋ_lTóĿYaaƷOӋ_lͬӶڞQPژóOӋ}ŬԱ̶ȵ WebSphere Portal ṩĿ
ҽ҂ҪһϵģͻģʽÁ portlet ԼڑóеʹUһNʹýyһģZԣUnified Modeling LanguageUMLOӋTc portlet ķʹûTOӋ UMLҞ麆ε Portlet-MVC OӋ@NOӋԘԼ portlet óṩOӋ@ϣɞһM portlet OӋģ͵c@Щģ҂_ʼһMõģʽ
IJPξ portlet mȻṩһЩaӱU UML ģcOӋaspֻPOӋIJκνѵđóҪe`zͮ̎@ṩҪö
ʲôҪTóģ
ʲôҪTóģúͨ҂TһMС֔ĹܻƬҲҪô韩؞ģdžINV҂ portlet ֻҪMСrͿԘε portlet@ӵԒ҂͎ҪҪOӋAϻMrgDzǵĴ_TֻҪһɂṩһЩ֔ĹܻfϵyL portletôܾ͛]ҪͶĕrgOӋ쵽һܵOӋrgܾҲԿ]һNʹøMԭͣprototypeO˾
ҵmȻ WebSphere Portal ܵĴ_pOӋ_lrgo҂ṩһɔUչĹһеĵķҪTóҪIJHHһɂε portletҪһ“” portletǎׁṩĹ߀ҪóӳsingletonӛһЩգṩNcϵyĵL҂ҲҪӛڴϵy EJB@NϵyҪһؽ^COӋČTOӋ]һʹ UML OӋڰlչ WebSphere Portal Ҳڲذlչ
ʂ乤
@ṩİஔҌһε portlet佨ģԓ portlet ᘌoĆ}ṩ˻ CRUDCreatexRead£UpdatehDeleteõķஔͨ@Nּչʾʹ UML @ϵyģĻԭṩ̫ĹʾOӋOӋˆTIж@ portlet ܵSʾԓ܉،@ṩ˼cHrϵһ
ӛס@һc҂Լbڌһ“Item”͵ĺΌҲһ“Items”Mв҂P“Item”ʲôһMÑ͑ӋCκΖ|
ʹռܱ^ֻЩģнĸֲ@헹ͨr UML ģļgˆTڏÑĽǶȿr韩һֱLԇռͬrOӋϵyΘЧķǼgˆT͘IշTPë@Щ˕f͑Z܉挍ӳIЧ
OӋfCRUD ܲҪͨıSoóҪӰܽoߎărֵҪJ@ҊĹ֮һҺϤϻM^rg;ʹ܉cģͺOӋ
Lԇ__ȼeҲǂ}һȷdzֵϵy҂Ԅһ“Manage Item”c̫^ṩκõķֽһܕʾ҂Ęӱ portletѽһε“ManageItems”İĂ
- Search Itemsһ헻һ
- Adds Itemó
- Delete Itemđóhͨ
- Edit Itemóеͨ
D 1 һDU@Щ@ṩIJһÑcȫĂMн߀ṩһЩ~ԔϢаĵ䛰߀]Оӱṩ̫ԔϢ܉ԼĹ
D 1.
һǽYPÿv_ʼMһϵyģԸռĹRe~̈́~OӋͲD҂ʾ҂ֻоһʾԔ҂ Search Items _ʼеѽ@ʾģڽY Search Items ҂Էص@ҕDһģ
ͽD
ÁÑcϵygķкÎND 2 @ʾ SearchItems һD@DǏcϵyÑĽǶṩ@DҲQ“Ӿ”DǴ_ϵyнMc@D҂“ϵy”һΪĽMMMһķֽ҂Ϳ_ʼ_Խģ~⌦OӋе
D 2. ӾIJD
cϵyMһͨ^D߀DžfDÁUչOӋģʹõ~⌦ͽ~̈́~@N͵ĽģͷֽҪı֪RҪ UML ʹֻLԇ UML ŵÁOӋ portlet m
D
\҂ʂ䘋һ WebSphere Portal portlet@ԭҲ WebSphere Portal ṩĿK portlet MஔOӋr҂ҪЩҪ__ֳֵÿ^ portlet OӋҲOӋߵĹĻAM؞ WebSphere Portal l API
չʾ҂ portlet ҂ѭ@]Ļģ-ҕD- Model-View-ControllerģʽD 3 @ʾ Manage Items portlet ĻDD 3 еṩһֺS portletژԼTórܕ@Щ portlet@Nʽõ Manage Items portlet ԽYM뵽ǰDе
D 3. Portlet D
ԭʼDҎ҂ͨ^һЩaʾһÿ
PrimaryHTMLController.class
@ portlet һҪǏ WebSphere Portal API ṩ PortletAdaptor ^^@һNpĿOӋ portletҪһpČИOٵĘI߉@еķе portlet иĘ˜ʷ
package com.ibm.wps.manageitems; import java.io.*; import java.util.*; import com.ibm.wps.engine.*; import org.apache.jetspeed.portlet.*; import org.apache.jetspeed.portlet.event.*; import org.apache.jetspeed.portlets.*; public class ManageItemsPortletHTMLController extends PortletAdapter implements PortletTitleListener, ActionListener { public void init(PortletConfig portletConfig) throws UnavailableException { super.init(portletConfig); } public void doTitle(PortletRequest request, PortletResponse response) { }
actionPerformed() @ portlet S߉@ʾԓһ if Z@ЩZ䌢ƙDƵ҂ČóеIJͬλ
public void actionPerformed(ActionEvent event) { PortletRequest request = event.getRequest(); PortletSession session = request.getPortletSession(); PortletAction _action = event.getAction(); DefaultPortletAction action; if (_action instanceof DefaultPortletAction) { action = (DefaultPortletAction)_action; // Handle ACTION events if (action.getName().equals(ManageItemsUtil.ACTION_SEARCH)) { bean = ManageItemsUtil.searchItems(this, request); session.setAttribute(ManageItemsUtil.TARGET_PAGE, ManageItemsPortletUtil.JSPSEARCHRESULTS); session.setAttribute("ManageItemsBean", bean); } else if (action.getName().equals(ManageItemsUtil.ACTION_CREATE)) { bean = ManageItemsUtil.createItem(this, request); session.setAttribute(ManageItemsUtil.TARGET_PAGE, ManageItemsUtil.JSPConfirm); session.setAttribute("ManageItemsBean", bean); } else if (action.getName().equals(ManageItemsUtil.ACTION_SAVE)) { bean = ManageItemsUtil.saveItem(this, request); bean.clearErrors(); bean.clearValues(); session.setAttribute(ManageItemsUtil.TARGET_PAGE, ManageItemsUtil.JSPSaveResults); session.setAttribute("ManageItemsBean", bean); } } }
doView()
@ʾ҂ portlet ÁÑݔ@ʾYĸN JSP䮔һOò@ʾ_ JSP ĿҪ@ʾĂ JSP actionPerformed()
Q
public void doView(PortletRequest request, PortletResponse response) throws PortletException, IOException { PrintWriter writer = response.getWriter(); PortletContext context = getPortletConfig().getContext(); PortletSession session = request.getPortletSession(); ManageItemsBean bean = null; // Set initial jspName to JSPMain. // Use this as the default if TARGET_JSP String displayJsp = null; String jspPrefix = "/jsp/"; String jspName = ManageItemUtil.JSPMain; String tempJsp = (String) session.getAttribute(ManageItemsUtil.TARGET_PAGE); if (tempJsp != null) { displayJsp = jspPrefix + tempJsp; } else { displayJsp = jspPrefix + jspName; } try { // Extract ManageItemsBean from session bean = (ManageItemsBean) session.getAttribute("ManageItemstBean"); // Keep the bean from session if it exists if (bean != null) { } else { // Instantiate a new bean if it doesn't already exist } bean = ManageItemsUtil.initItemsBean(this, request); } // Put the bean back into session session.setAttribute("ManageItemsBean", bean); // Delegate the rendering to displayJsp context.include(displayJsp, request, response); // Log debug information if (getPortletLog().isDebugEnabled()) { getPortletLog().debug("++++ Set display JSP to " + displayJsp); } } catch (Exception ex) { getPortletLog()Debug(ex.getMessage()); ex.printStackTrace(System.out); } } public void doHelp(PortletRequest request, PortletResponse response) throws PortletException, IOException { } public void doEdit(PortletRequest request, PortletResponse response) throws PortletException, IOException { } public void doConfigure(PortletRequest request, PortletResponse response) throws PortletException, IOException { } }
PortletUtility.class
manageItemsUtil
FһЩ JSP ҪĎׂČú߀ portlet ĴI߉ͨ^ԼķаI߉ߌ߉Doһportlet ջ EJB ɳ
package com.ibm.wps.manageitems; import java.io.*; import java.util.*; Import java.text.*; Import org.apache.jetspeed.portlet.*; Import org.apache.jetspeed.portlet.event.*; Import org.apache.jetspeed.util.*; public class ManageItemPortletUtil { public final static String ACTION_CREATE = "createItemAction"; public static final String ACTION_DELETE = "deleteItemAction"; public static final String ACTION_EDIT = "editItemAction"; public static final String ACTION_SEARCH = "searchItemAction"; public static final String ACTION_SAVE = "saveItemAction"; public static final String JSP_ADD = "AddItem.jsp"; public static final String JSP_CONFIRM = "ConfirmItem.jsp"; public static final String JSP_EDIT = "EditItem.jsp"; public static final String JSP_MAIN = "Index.jsp"; public static final String JSP_SEARCH_RESULTS = "SearchResults.jsp"; public static final String JSP_SAVE_RESULTS = "SaveResults.jsp"; public static final String CALLING_PAGE = "callingPage"; public static final String TARGET_PAGE = "targetPage";
getNewActionURI()
Ҫ portlet е JSP Á턓 JSP ȵķغͲ URI@Ѓɂ汾@ʾdž URI 汾ڶ汾ʹһ URI һ𱻂f
/** * Method: getNewActionURI(PortletResponse, String) * Return: String * Description: Build an action URI */ public static String getNewActionURI(PortletResponse request, String actionName) { PortletURI portletURI = request.createReturnURI(); DefaultPortletAction action = new DefaultPortletAction(actionName); portletURI.addAction(action); return portletURI.toString(); } /** * Method: getNewActionURI(PortletResponse, String, String, String ) * Return: String * Description: Build an action URI with additional parameters */ public static String getNewActionURI(PortletResponse request, String actionName, String Param, String Value) { PortletURI portletURI = request.createURI(); PortletAction portletAction = new DefaultPortletAction(actionName); portletURI.addAction(portletAction); portletURI.addParameter(Param, Value); return portletURI.toString(); }
initManageItemsBean()
һxķҪԒʼ portlet bean bean dzǾͲҪ@
Public static ManageItemsBean initManageItemsBean(PortletAdapter portlet, PortletRequest request) { ManageItemsBean bean = new ManageItemsBean(); //initialize bean here if necessary return bean; }
@ṩ searchItems()
һʾfI߉Է@ portlet @뷨ǞʹMֺܱSI߉@ԌFI߉ҪԒҲL portlet ջ EJBportlet ҪFȫ߀Ҫ@N͵
Public static ManageItemsBean searchItems(PortletAdapter portlet, PortletRequest request) { ManageItemsBean bean = new ManageItemsBean(); //business logic goes here! return bean; } }
PortletBean.class:
@ bean ҂惦c JSP MͨŵͨO portlet ڃ҂ԓ bean پ浽 PortletSession Ҫr portlet ԓ bean ȵĔ portlet Model 2 JSP wϵܘOӋԓ bean ҂OӋҪD 3 ѽһM getter setter ģMF҂ӑՓܕrҪķԓԼČFЩ getter setter
JSP HTML
úúͽú҂Կһ҂ portlet ıʾǰѽᵽ^ԓʾ҂Ϥģ-ҕD-_l Web ór J2EE ѷJSP @NҪ
JSP HTML c Java ZԵĻyѱʾȫx҂һЩCһЩI߉뵽 JSP ]ķ_lб_@һcһõOӋԎ_@һcõOӋҲoпܵr׃__lĸԼZԱн_l߿Ԏ_ JSP ȳFκΘI߉OӋ_
҂ԼʾӃɂ JSP עD 4 ӵģеÿ JSP҂߀һP HTML @NPʹ҂҂ģʾ˽c͑C˽֮gķx Manage Items portlet҂ѽ棺
- Main.jsp
- @ȱʡr@ʾ JSP
doView()
Ęӱa@ʾ@һʾ]actionHandler()
OԒԓʾOTARGET_PAGE
@ʾԓ- Main.html
- @
Main.jsp
Ŀ͑C˰汾@һ|l@еIJ|lactionPerformed()
_ʼ- SearchResults.jsp
- @ JSP Java bean ķʽ@ĽYʽ HTML @ʾY
- SearchResults.html
- @YĿ͑C@ʾ
ͨ^UչԭʼDʹ@Щ¹ʹ҂Ըõ˽҂ portlet wµDD 4҂һĈD@D҂ portlet ܵнM
D 4. Search D
mȻDʹ҂ԏĽMҕDṩ҂ portlet аl¼еҕDʹ@ʾΰlЈD҂ԿܵĸԔϢD 5 ҂ĽM^ЌHMнע⣺҂ʹ÷Qstereotype ͨӢZgĽ
D 5. Search ЈD
ӢZı“Determine Action”Էֽ÷dz@ڶOӋęnaƷڌF^нo_l̎PģͱķNeԔ̶]@Ҏt漰ŬԔ̶ȼeԓӳܵ|̵ҎģС
ӱ JSP a
OӋ JSP r҂ԓ҂Á혋Լ portlet cĿ҂OӋ҂ه Java bean ҂ṩҪ JSP @ʾκϢO@һc҂Ϳ bean ڞ JSP ar_ʼҪȌ댢Ҫκΰ@ portlet ҂ҪL manageItemsUtil()
@߀ԓκĘӛ
Dڞ Java bean ͌óģķӛ portlet սģ JSP Mѽ_lͽģĶƘӛôͿһN stereotype DO_ʼʹ@Щ֮ǰԓһе portlet Ƶϲc
<%@ page import="org.apache.jetspeed.portlet.service.*" %> <%@ page import="org.apache.jetspeed.portlet.*" %> <%@ page import="org.apache.jetspeed.portletcontainer.PortletRequestImpl" % > <%@ page import="org.apache.jetspeed.portlet.*" %> <%@ page import="com.ibm.wps.engine.RunData" %> <%@ page import="com.ibm.wps.manageitems.*" %> <%@ page import="com.ibm.wps.services.authorization.*, com.ibm.wps.puma.*,com.ibm.wps.util.*" %> <%@ taglib uri="/WEB-INF/tld/portlet.tld" prefix="portletAPI" %> <portletAPI:init/> <jsp:useBean id="ManageItemsBean" class="com.ibm.wps.manageitems.ManageItemsBean" scope="session" />
ѽ JSP Є^ԄһʾIJ̎ URI@ʾһ ACTION_CREATE
朽{@ʾr|lRe@ actionPerformed()
ƬȻ̎κҪеIJ TARGET
OÞһҪ@ʾ JSP
<a href="<%= ManageItemsUtil.getNewActionURI(portletResponse, ManageItemsUtil.ACTION_CREATE) %>">Add Item</a>
ʹдaӱģе߀ʹһ̎ URIʹ portlet ӛ΅a@첻҂ϵyнģǞ WebSphere Portal ṩ API һѽ WebSphere Portal ṩĽMģǿܵ@ӕģ͵ďs̶ԓֻ@ʾPʹ API ԔϢrʹ@NeԔ̶
<form name="itemsearchform" action="<%= ManageItemUtils.getNewActionURI(portletResponse, ManageItemsUtil.ACTION_SEARCH) %>" method="post"> <table border="0" cellpadding="3" cellspacing = "3"> <tr> <td align="left">Customer ID:</td> <td align="left"> <input type="text" name="PORTLETAPI:ENCODENAMESPACE value="itemname">" value="<%= ManageItemBean.getItemName() %>"> </td> </tr> <tr> <tr> <td align="right"> <input type="submit" name="" value="" />"> <br> </td> </tr> </table> </form>
_l
ֻһģ;;wƵ@KܵOӋ_l^Ҳöϵy҂ϵyеҪMȫOӋòҽӺһ_l߲HԿԓЩF߀Կ@ЩF_lgReĸĿģбľϵyбӳ
D 6 ѽչʾˌİYڽģУ@NYcϣ_l^ЄİY@NڰBӵc_lԼĿϵyķƵĸʽMһ
D 6. ģ͞g[
caƷ羀ģͣwire frame modelOӋęnһʹÕrUML ɞһN_l߂_OӋďṩĴaӱṩһʾΞ錦ģʾ߀ṩһЩʹ JSP ͌ó_l portlet ѷʾϣѽṩϢʹOӋԼTór_ʼʹ UMLڌҌLԇ@ṩăAģ portlet Uչ portlet @Щ
Y
- Developing Enterprise Java Applications with J2EE and UMLߣKhawar Zaman Ahmed Cary E. Umrysh
- Applied Java PatternsߣStephen Stelting Olav Maasen
ԴIyܛyԇW http://www.kjueaiud.com/
- ]
(C) 20032010 TestAgeIyܛyԇW|IyHƼ˾|ܛyԇ̎ӖW All Rights Reserved
к^Pϴ9̖ƼB1402 ICP10010545̖-5
gֺ֧͘Iϵinfo@testage.com.cn Ԓ010-51297073
老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月