论坛首页 Java企业应用论坛

再次提出Portal action问题

浏览 5266 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2004-12-23  
这次的问题是这样的,在不扩展jsr168的标准下,我是否能够将某一个服务器下的某个web程序拉到另一个服务器下的portlet中,而且还能正常跑起来?

比如,我现在创建一个门户,然后将yahoo,google的首页放到我的两个窗子里。然后点击查询的时候将结果显示在这些小窗子里

我现在的方案是模仿yahoo和google的页面,设计自己的portlet。然后将请求转发到这些网站再重新显示。

可能利用iframe也能够完成

除了这些技巧,有没有标准的办法??
   发表时间:2004-12-24  
wsrp,这个只是听说过,没有用过
0 请登录后投票
   发表时间:2004-12-24  
当然可以的
看来你们才开始研究portal的
plumtree到上面去找找的,实现起来很容易的
0 请登录后投票
   发表时间:2004-12-24  
willmac 写道
当然可以的
看来你们才开始研究portal的
plumtree到上面去找找的,实现起来很容易的
本人比较愚钝,请willmac讲讲好么?
0 请登录后投票
   发表时间:2004-12-25  
咳,类似proxy的东西,什么都可以吃的
用于弱整合,不过这是我极力反对的,portal是内容管理和流程控制的容器的
是web容器的更高层次,而不是infomation hub.
多余的话,不说了,这些年说累了。
plumtree的代码贴出来,有用就拿去吧
ps:rss解决方案也类是的,不想改代码都可以用这个方案的
虽然这个代码有些suck的,也就一个思路的
嗬嗬,这个代码仅限google,自己的应用,自己写proxy的,看的时候注意
package com.plumtree.portlet.portlets;

import com.google.soap.search.*;
import java.io.IOException;
import java.io.PrintWriter;
import javax.portlet.*;

public class GooglePortlet extends GenericPortlet
{

    private static final String SEARCH_QUERY = "searchQuery";
    private static final String START_RESULT = "startResult";
    public static final String KEY = "KEY";
    public static final String CONTENT_TYPE_HTML = "text/html;charset=UTF-8";

    public GooglePortlet();
    {
    }

    public void processAction(ActionRequest request, ActionResponse response);
        throws UnavailableException, PortletSecurityException, PortletException, IOException
    {
        String searchQuery = request.getParameter("searchQuery");;
        if(null != searchQuery);
            response.setRenderParameter("searchQuery", searchQuery);;
        String startResult = request.getParameter("startResult");;
        if(null != startResult);
            response.setRenderParameter("startResult", startResult);;
    }

    protected void doHelp(RenderRequest request, RenderResponse response);
        throws UnavailableException, PortletSecurityException, PortletException, IOException
    {
        response.setContentType("text/html;charset=UTF-8");;
        PrintWriter out = response.getWriter();;
        out.println("<table>");;
        out.println("<tr>");;
        out.println("<td>");;
        PortletURL renderURL = response.createRenderURL();;
        renderURL.setPortletMode(PortletMode.VIEW);;
        out.println("The Google Portlet searches Google, using the specified query.<BR/> The number of results returned at a time is ten- this is a limitation of the Google API<BR/> To change the key, or adust safe search, contact your administrator.<BR/> <a href=\"" + renderURL.toString(); + "\">back</a>");;
        out.println("</td>");;
        out.println("</tr>");;
        out.println("</form>");;
        out.println("</table>");;
    }

    protected void doView(RenderRequest request, RenderResponse response);
        throws UnavailableException, PortletSecurityException, PortletException, IOException
    {
        try
        {
            String searchQuery = request.getParameter("searchQuery");;
            String startResult = request.getParameter("startResult");;
            int totalResults = 0;
            response.setContentType("text/html;charset=UTF-8");;
            PrintWriter out = response.getWriter();;
            String key = getInitParameter("key");;
            if(null == key || key.equals(""););
            {
                out.println("Key for search is not available. Check with your administrator to obtain the Google API Key");;
                return;
            }
            StringBuffer buff = new StringBuffer(200);;
            buff.append("<SCRIPT language=\"Javascript\">function openGoogleWin(href);{");;
            buff.append("var newWin = window.open(href);;");;
            buff.append("}</SCRIPT>");;
            out.print(buff.toString(););;
            WindowState state = request.getWindowState();;
            WindowState otherState = null;
            if(state.equals(WindowState.MAXIMIZED););
                otherState = WindowState.NORMAL;
            else
                otherState = WindowState.MAXIMIZED;
            PortletURL otherUrl = response.createRenderURL();;
            if(!state.equals(WindowState.MAXIMIZED););
            {
                otherUrl.setWindowState(otherState);;
                out.println("<a href=\"" + otherUrl.toString(); + "\">" + otherState.toString(); + "</a>");;
            }
            GoogleSearchResult result = null;
            GoogleSearchResultElement elements[] = null;
            if(null != searchQuery);
            {
                GoogleSearch googleSearch = new GoogleSearch();;
                googleSearch.setKey(key);;
                googleSearch.setQueryString(searchQuery);;
                if(null != startResult);
                {
                    int start = Integer.parseInt(startResult);;
                    googleSearch.setStartResult(start);;
                }
                result = googleSearch.doSearch();;
                elements = result.getResultElements();;
            }
            PortletURL actionURL = response.createActionURL();;
            actionURL.setWindowState(state);;
            out.println("<table>");;
            out.println("<form name=\"inputForm\" target=\"_self\" method=\"POST\" action=\"" + actionURL.toString(); + "\">");;
            out.println("<tr>");;
            out.println("<td>");;
            PortletURL renderLink = response.createRenderURL();;
            renderLink.setPortletMode(PortletMode.HELP);;
            out.println("<a href=\"" + renderLink + "\">help</a>");;
            out.println("</td>");;
            out.println("</tr>");;
            out.println("<tr>");;
            out.println("<td>");;
            out.println("&amp;");;
            out.println("</td>");;
            out.println("</tr>");;
            out.println("<tr>");;
            out.println("<td>");;
            out.println("<input type=\"text\" name=\"searchQuery\" value=\"\">");;
            out.println("<input name=\"inputSubmit\" type=\"submit\" value=\"submit\">");;
            out.println("</td>");;
            out.println("</tr>");;
            out.println("</form>");;
            out.println("</table>");;
            if(null != searchQuery);
            {
                out.println("<table>");;
                out.println("<tr>");;
                out.println("<td>");;
                totalResults = result.getEstimatedTotalResultsCount();;
                out.println("# of results is " + totalResults);;
                out.println("</td>");;
                out.println("</tr>");;
                for(int i = 0; i < elements.length; i++);
                {
                    GoogleSearchResultElement element = elements[i];
                    out.println("<tr>");;
                    out.println("<td>");;
                    out.println("<a href=\"javascript:openGoogleWin('" + element.getURL(); + "');;\">" + element.getTitle(); + "</a>");;
                    out.println("</td>");;
                    out.println("</tr>");;
                    out.println("<tr>");;
                    out.println("<td>");;
                    out.println(element.getSummary(););;
                    out.println("</td>");;
                    out.println("</tr>");;
                }

                out.println("<tr>");;
                out.println("<td>");;
                out.println("&amp;");;
                out.println("</td>");;
                out.println("</tr>");;
                out.println("<tr>");;
                out.println("<td>");;
                out.println("&amp;");;
                out.println("</td>");;
                out.println("</tr>");;
                if(totalResults > 0);
                    printLinks(response, out, totalResults, result.getStartIndex();, searchQuery, state);;
                out.println("</table>");;
            }
        }
        catch(Exception e);
        {
            throw new PortletException(e);;
        }
    }

    private void printLinks(RenderResponse response, PrintWriter out, int results, int currentPos, String searchQuery, WindowState windowState);
    {
        int total = 10;
        total = results <= 100 ? results / 10 : total;
        if(currentPos != 1);
            currentPos = (currentPos - 1); / 10;
        out.println("<tr>");;
        out.println("<td>");;
        for(int i = 1; i <= total; i++);
        {
            if(i == currentPos);
            {
                out.print(i);;
            } else
            {
                PortletURL actionURL = response.createActionURL();;
                try
                {
                    actionURL.setWindowState(windowState);;
                }
                catch(Exception e); { }
                actionURL.setParameter("searchQuery", searchQuery);;
                actionURL.setParameter("startResult", "" + i * 10);;
                out.print("<a href=\"");;
                out.print(actionURL.toString(););;
                out.print("\">");;
                out.print(i);;
                out.println("</a>");;
            }
            out.print("&amp;");;
        }

        out.println("</td>");;
        out.println("</tr>");;
    }

    static 
    {
        SEARCH_QUERY = "searchQuery";
        START_RESULT = "startResult";
        KEY = "KEY";
        CONTENT_TYPE_HTML = "text/html;charset=UTF-8";
    }
}

0 请登录后投票
   发表时间:2005-04-30  
呵呵,willmac的代码在有代理服务器的情况下就跑不动啦。还是用iframe好点。方便,省事。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics