uCosminexus Portal Framework ポートレット開発ガイド

[目次][用語][索引][前へ][次へ]


3.10.2 サーブレットからのJSPの呼び出し

MVCモデルをポートレット開発に適用して,Controllerをサーブレット,ViewをJSPで開発する場合,サーブレットからJSPを呼び出す必要があります。ここでは,サーブレットからJSPを呼び出す例を示します。

JSPを呼び出すには,RequestDispatcher#includeを使用します。サーブレットをポートレットのエントリポイントとして登録する場合には,doPostがdoGetを呼び出すようにします。

サーブレットからJSPを呼び出す例を次に示します。

 
package mydomain;
import javax.servlet.*;
import javax.servlet.http.*;
import jp.co.hitachi.soft.portal.portlet.PortletURI;
import jp.co.hitachi.soft.portal.portlet.PortletUtils;
import jp.co.hitachi.soft.portal.portlet.beans.PortletInfoBean;
 
public class Controller extends HttpServlet {
  /*
   * JSPの相対パスをコンテキスト内絶対パスに変換
   **/
  private String getUrl(HttpServletRequest req, String url) {
    String current =
      (String)req.getAttribute("javax.servlet.include.servlet_path"); 
    return current.substring(0, current.lastIndexOf('/')+1) + url; 
  } 
 
  public void doGet(HttpServletRequest req, HttpServletResponse res) {
    String uri = "error.jsp";
    try {
      PortletInfoBean pInfo = new PortletInfoBean();
      pInfo.initBean(req);
      PortletInfoBean.Mode mode = pInfo.getMode();
 
      if (mode == PortletInfoBean.Mode.DEFAULT) {
        /** サマリ画面用業務ロジック呼び出し **/
        
        // サマリ画面用JSPのパス取得
        uri = getUrl(req, "summary.jsp");
      } else if (mode == PortletInfoBean.Mode.MAXIMIZE) {
        /** 最大化画面用業務ロジック呼び出し **/
 
        // 最大化画面用JSPのパス取得
        uri = getUrl(req, "main.jsp");
      }
      // includeを用いたView(JSP)の呼び出し
      getServletContext().getRequestDispatcher(uri).include(req, res);
    } catch (Exception e) {
        // エラーメッセージ出力
    }
  }
 
  public void doPost(HttpServletRequest req, HttpServletResponse res) {
    doGet(req, res);
  }
 
}
 

[目次][前へ][次へ]


[他社商品名称に関する表示]

All Rights Reserved. Copyright (C) 2009, 2013, Hitachi, Ltd.
All Rights Reserved. Copyright (C) 2009, 2013, Hitachi INS Software, Ltd.