uCosminexus Portal Framework ポートレット開発ガイド
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.