АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Простейший портлет

Читайте также:
  1. Обмен как простейший случай социальной связанности
  2. Простейший источник тока на ПТ
  3. Простейший компаратор
  4. Простейший подход к сглаживанию
  5. Структуры и классы. Структура как простейший класс.

Для демонстрации возможностей Portlet API ниже рассмотрен пример, отображающий данные, введенные пользователем. На этой основе можно разрабатывать собственные portlet-приложения. Все необходимые для написания примеров классы находятся в пакете javax.portlet.

Вначале создается класс SamplePorltet. Этот класс, собственно, и является основным классом портлета. Все, что здесь происходит – это инициализация портлета в методе init(PortletConfig config), за каждое из представлений портлета отвечают методы doEdit(), doView(), doHelp(). В методе processAction() производится обработка событий портлета (в данном случае этот метод будет вызван при подтверждении пользователем желания отредактировать настройки портлета).

/*пример # 1: простой портлет: SamplePorltet.java*/

package com.learning.portlet;

import java.io.IOException;

import javax.portlet.ActionRequest;

import javax.portlet.ActionResponse;

import javax.portlet.GenericPortlet;

import javax.portlet.PortletConfig;

import javax.portlet.PortletContext;

import javax.portlet.PortletException;

import javax.portlet.PortletMode;

import javax.portlet.PortletPreferences;

import javax.portlet.PortletRequest;

import javax.portlet.PortletRequestDispatcher;

import javax.portlet.RenderRequest;

import javax.portlet.RenderResponse;

 

public class SamplePortlet extends GenericPortlet {

private static final String EDIT_PAGE_PARAM

= "Edit-Page";

private static final String HELP_PAGE_PARAM

= "Help-Page";

private static final String VIEW_PAGE_PARAM

= "View-Page";

 

public void init(PortletConfig config)

throws PortletException {

super. init(config); // инициализация

}

// метод, отвечающий за представление страницы редактирования

public void doEdit(RenderRequest request,

RenderResponse response)

throws PortletException,IOException {

PortletContext context = getPortletContext();

// получение контекста портлета

setRequestAttributes(request); // установка атрибутов

// получение диспатчера для включения ресурсов в responce

PortletRequestDispatcher rd = context.

getRequestDispatcher(getInitParameter(EDIT_PAGE_PARAM));

rd.include(request, response); /* включение

содержимого ресурса*/

}

// метод, отвечающий за представление страницы помощи

public void doHelp(RenderRequest request,

RenderResponse response)

throws PortletException, IOException {

PortletContext context = getPortletContext();

// получение контекста портлета

setRequestAttributes(request); // установка атрибута

// получение диспатчера для включения ресурсов в responce

PortletRequestDispatcher rd = context.

getRequestDispatcher(getInitParameter(HELP_PAGE_PARAM));

rd.include(request, response); // включение содержимого ресурса

}

// метод, отвечающий за представление страницы просмотра

public void doView(RenderRequest request,

RenderResponse response)

throws PortletException, IOException {

PortletContext context = getPortletContext();

// получение контекста портлета

setRequestAttributes(request); // устанавливаем атрибуты

// получение диспатчера для включения ресурсов в response

PortletRequestDispatcher rd = context.

getRequestDispatcher(getInitParameter(VIEW_PAGE_PARAM));

rd.include(request, response); // включение содержимого ресурса

}

// вызывается контейнером для обработки событий

public void processAction(ActionRequest request,

ActionResponse response)

throws PortletException, IOException {

PortletMode mode = request.getPortletMode(); /* получение

состояния*/

PortletPreferences preferences =

request.getPreferences(); // настройки

if (mode.equals(PortletMode.VIEW)) {

// сохранение настроек

preferences.setValue("firstName",

request.getParameter("firstName"));

 

preferences.setValue("lastName",

request.getParameter("lastName"));

 

preferences.setValue("address",

request.getParameter("address"));

 

preferences.setValue("telephone",

request.getParameter("telephone"));

preferences.store();

}

}

// для установки атрибутов

private void setRequestAttributes(PortletRequest

request) {

PortletPreferences preferences =

request.getPreferences();

request.setAttribute("firstName",

preferences.getValue("firstName", "undefined"));

 

request.setAttribute("lastName",

preferences.getValue("lastName", "undefined"));

 

request.setAttribute("address",

preferences.getValue("address", "undefined"));

 

request.setAttribute("telephone",

preferences.getValue("telephone", "undefined"));

 

request.setAttribute("portletName",

getPortletName());

}

}

Ниже приведен файл portlet.xml, который является дескриптором портлета и необходим для его развертывания.

<!--пример # 2: дескриптор портлета: portlet.xml- ->

<?xml version="1.0" encoding="UTF-8"?>

<portlet-app

xmlns=

"http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"

version="1.0"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/

portlet-app_1_0.xsd

http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd">

 

<portlet id="sample-application">

<!-- описание -->

<description>Portlet Application</description>

<!-- название -->

<portlet-name>SamplePortlet</portlet-name>

<!-- отображаемое имя -->

<display-name>Sample Portlet</display-name>

<!-- класс портлета -->

<portlet-class> com.learning.portlet.SamplePortlet</portlet-class>

<!-- параметры инициализации -->

<init-param>

<name>ViewPage</name>

<value>/WEB-INF/jsp/sample-view.jsp</value>

</init-param>

<init-param>

<name>HelpPage</name>

<value>/WEB-INF/jsp/sample-help.jsp</value>

</init-param>

<init-param>

<name>EditPage</name>

<value>/WEB-INF/jsp/sample-edit.jsp</value>

</init-param>

<!-- количество секунд, на которое кешируется портлет. -1 значит cache
не истекает -->

<expiration-cache>-1</expiration-cache>

<!-- поддерживаемые режимы -->

<supports>

<mime-type>text/html</mime-type>

<portlet-mode>view</portlet-mode>

<portlet-mode>help</portlet-mode>

<portlet-mode>edit</portlet-mode>

</supports>

<!-- локализация -->

<supported-locale>en</supported-locale>

<!-- текстовые ресурсы -->

<resource-bundle> com.learning.portlet.SamplePortlet</resource-bundle>

<!-- информация -->

<portlet-info>

<!-- заголовок -->

<title>Portlet Application</title>

<short-title>Portlet</short-title>

<!-- ключевые слова -->

<keywords>portlet</keywords>

</portlet-info>

</portlet>

</portlet-app>

Файл web.xml является дескриптором web-приложения, поскольку портлет-приложение является и web-приложением, то понадобится и этот файл.

/* пример # 3: дескриптор приложения: web.xml*/

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee

http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"

version="2.4">

<display-name>Sample</display-name>

</web-app>

Далее приведены JSP-страницы, отвечающие за представления портлета. Единственное, что следует отметить: библиотеку тегов для работы с портлетами, которая необходима для непосредственного доступа к специфическим классам портлетов (классам, используемым портлетом): RenderRequest, RenderResponse, PortletConfig. Также эта библиотека предлагает функциональность по созданию ссылок, пригодных для работы с портлетами.

<!-- пример # 4: представление портлета: sample-edit.jsp - ->

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>

<%@ taglib prefix="portlet" uri="http://java.sun.com/portlet"%>

<portlet:defineObjects/>

<portlet:actionURL var="editAction" portletMode="view"/>

<c:set var="inputTextStyle" value="border: none; width: 150px; color: #000000;"/>

<c:set var="inputSubmitStyle" value="border: none; width: 75px;"/>

<c:set var="labelStyle" value="text-align: right; color: #000000; white-space: nowrap;"/>

<fmt:setBundle basename="com.learning.portlet.SamplePortlet"/>

<form action="${editAction}" method="post">

<table style="border: none;">

<tbody>

<tr><td style="${labelStyle}">

<fmt:message key="portlet.label.firstname"/>:

</td>

<td nowrap="nowrap">

<input type="text" name="firstName" value="${firstName}"

style="${inputTextStyle}"/>

</td>

</tr>

<tr><td style="${labelStyle}">

<fmt:message key="portlet.label.lastname"/>:

</td>

<td nowrap="nowrap">

<input type="text" name="lastName" value="${lastName}"

style="${inputTextStyle}"/>

</td>

</tr>

<tr><td style="${labelStyle}">

<fmt:message key="portlet.label.address"/>:

</td>

<td nowrap="nowrap">

<input type="text" name="address" value="${address}"

style="${inputTextStyle}"/>

</td>

</tr>

<tr><td style="${labelStyle}">

<fmt:message key="portlet.label.telephone"/>:

</td>

<td nowrap="nowrap">

<input type="text" name="telephone" value="${telephone}"

style="${inputTextStyle}"/>

</td>

</tr>

<tr><td colspan="2" align="right">

<button type="submit" style="${inputSubmitStyle}">

<fmt:message key="portlet.button.submit"/>

</button>

</td>

</tr>

</tbody>

</table>

</form>

<!-- пример # 5:: sample-help.jsp- ->

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>

<%@ taglib prefix="portlet" uri="http://java.sun.com/portlet"%>

<portlet:defineObjects/>

<fmt:setBundle basename="com.learning.portlet.SamplePortlet"/>

<table><tbody>

<tr>

<td colspan="2">

&nbsp;&nbsp;

<fmt:message key="portlet.name.message">

<fmt:param>${portletName}</fmt:param>

</fmt:message><br>

&nbsp;&nbsp;

<fmt:message key="portlet.storeduser.message">

<fmt:param>${firstName}</fmt:param>

<fmt:param>${lastName}</fmt:param>

</fmt:message>

</td></tr>

<tr>

<td align="center">

<portlet:renderURL var="viewUrl" portletMode="view"/>

<a href="${viewUrl}" style="text-decoration: none;">

<fmt:message key="portlet.viewpage.link"/>.

</a>

</td>

<td align="center">

<portlet:renderURL var="editUrl" portletMode="edit"/>

<a href="${editUrl}" style="text-decoration: none;">

<fmt:message key="portlet.editpage.link"/>.

</a>

</td></tr>

</tbody>

</table>

<!-- пример # 6:: sample-view.jsp- ->

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>

<%@ taglib prefix="portlet" uri="http://java.sun.com/portlet"%>

<portlet:defineObjects/>

<c:set var="labelStyle" value="text-align: right; color: #000000; white-space: nowrap;"/>

<c:set var="textStyle" value="text-align: left; color: #000000; white-space: nowrap;"/>

<fmt:setBundle basename="com.learning.portlet.SamplePortlet"/>

<table>

<tbody style="background-color: ">

<tr>

<td style="${labelStyle}">

<fmt:message key="portlet.label.firstname"/>:

</td>

<td style="${textStyle}">

${firstName}

</td>

</tr>

<tr>

<td style="${labelStyle}">

<fmt:message key="portlet.label.lastname"/>:

</td>

<td style="${textStyle}">

${lastName}

</td>

</tr>

<tr>

<td style="${labelStyle}">

<fmt:message key="portlet.label.address"/>:

</td>

<td style="${textStyle}">

${address}

</td>

</tr>

<tr>

<td style="${labelStyle}">

<fmt:message key="portlet.label.telephone"/>:

</td>

<td style="${textStyle}">

${telephone}

</td>

</tr>

</tbody>

</table>

# пример # 7: файл свойств для русского языка:SamplePortlet_en.txt

portlet.label.firstname = First name

portlet.label.lastname = Last name

portlet.label.address = Address

portlet.label.telephone = Telephone number

portlet.button.submit = Store

portlet.name.message = This is the simple help page of the portlet <span style="font-weight: bolder">{0}</span>.

portlet.storeduser.message = Stored user is <span style="font-weight: bolder"> {0} {1}</span>.

portlet.viewpage.link = View page

portlet.editpage.link = Edit page

# пример # 8:: файл свойств для английского языка:SamplePortlet_ru.txt

portlet.label.firstname = Имя

portlet.label.lastname = Фамилия

portlet.label.address = Адрес

portlet.label.telephone = Номер телефона

portlet.button.submit = Сохранить

portlet.name.message = Страница помощи портлета <span style="font-weight: bolder">{0}</span>.

portlet.storeduser.message = Сохраненный пользователь <span style="font-weight: bolder"> {0} {1}</span>.

portlet.viewpage.link = Смотреть

portlet.editpage.link = Редактировать

/* пример # 9: файл развертывания: build.xml*/

<?xml version="1.0" encoding="UTF-8"?>

<project name="SamplePortlet" default="war" basedir=".">

<property file="build.properties"/>

<property name="src.dir" value="src"/>

<property name="jsp.dir" value="jsp"/>

<property name="java.dir" value="java"/>

<property name="message.dir" value="message"/>

<property name="config.dir" value="config"/>

<property name="lib.dir" value="lib"/>

<property name="src.lib.dir" value="${src.dir}/${lib.dir}"/>

<property name="src.java.dir" value="${src.dir}/${java.dir}"/>

<property name="src.jsp.dir" value="${src.dir}/${jsp.dir}"/>

<property name="src.message.dir" value="${src.dir}/${message.dir}"/>

<property name="src.config.dir" value="${src.dir}/${config.dir}"/>

<property name="webapp.dir" value="WEB-INF"/>

<property name="result.dir" value="result"/>

<property name="classes.dir" value="classes"/>

<property name="project.name" value="SamplePortlet"/>

<property name="localization.encoding" value="Cp1251"/>

<property name="localization.src.dir" value="${src.message.dir}/com/learning/portlet"/>

<property name="localization.result.dir" value="${result.dir}/${classes.dir}/com/learning/portlet"/>

<property name="localization.ext" value=".properties"/>

<target name="compile" description="Compiles all source files of the portlet.">

<mkdir dir="${result.dir}/${classes.dir}"/>

<javac srcdir="${src.java.dir}" destdir= "${result.dir} /${classes.dir}" optimize="yes" debug="no">

<classpath>

<fileset dir="${src.lib.dir}">

<include name="**/*.jar"/>

</fileset>

</classpath>

</javac>

<copy todir="${result.dir}/${classes.dir}">

<fileset dir="${src.message.dir}" excludes="**/*.txt"/>

</copy>

<native2ascii src="${localization.src.dir}" dest=

"${localization.result.dir}" includes="**/*.txt"

encoding="${localization.encoding}" ext="${localization.ext}"/>

</target>

<target name="war" depends="compile" description= "Creates.war file of the portlet.">

<war destfile="${result.dir}/${project.name}.war"

webxml="${src.config.dir}/web.xml" compress="on">

<lib dir="${src.lib.dir}">

<exclude name="**/portlet-api-1.0.jar"/>

</lib>

<classes dir="${result.dir}/${classes.dir}"/>

<zipfileset dir="${src.config.dir}" prefix="${webapp.dir}">

<include name="**/*.*"/>

<exclude name="**/web.xml"/>

</zipfileset>

<zipfileset dir="${src.jsp.dir}" prefix=

"${webapp.dir}/${jsp.dir}"/>

</war>

</target>

<target name="deploy" depends="war" description ="Deploys.war file of the portlet.">

<copy todir="${jetspeed.deploy.dir}">

<fileset file="${result.dir}/${project.name}.war"/>

</copy>

</target>

<target name="clean" description=

"Deletes all result files of the portlet.">

<delete dir="${result.dir}"/>

</target>

</project>

# пример # 10: файл свойств для ant: build.properties

jetspeed.deploy.dir = E:/web/jetspeed-2.0-M3-Tomcat-5.5.9 /jakarta-tomcat-5.5.9/webapps/jetspeed/WEB-INF/deploy

 


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.043 сек.)