業務ロジックが複雑な場合は,MVCモデルと呼ばれるアプローチでポートレットを開発します。
MVCモデルとは,業務ロジック(Model),表示(View),制御(Controller)に分けてアプリケーションを開発する考え方です。業務と画面デザインを分離して開発できるため,効率良く開発できます。
MVCモデルをポートレット開発にあてはめた場合,ModelにはBean/EJB,ViewにはJSP/HTML,Controllerにはデフォルトアクションモジュールを使用します。Controllerにデフォルトアクションモジュールを利用すると,ポータル統合画面と連携した画面を制御できます。
MVCモデルを次の図に示します。
図3-11 MVCモデル
ControllerとViewのサンプルを次に示します。
(1) Controllerの開発
public class SampleControllerActionModule extends DefaultActionModule
{
public void action(HttpServletRequest req, HttpServletResponse res) {
req.setAttribute("page", Controller(req));
}
//コントローラ用メソッド
public String Controller(HttpServletRequest req){
//Attributeにcontrollerがセットされていたら,Stringオブジェクトに変換する。
String ControllerParameter = (String)req.getParameter("controller");
// サイトのエンコーディングがShift_JISの場合,次の処理を行う。
ControllerParameter = new String(ControllerParameter.getBytes("iso-8859-1"),"Windows-31J");
//デフォルト表示用JSP名をセットする。
String JSPFILE = "default.jsp";
//クエリにNEWMAILが指定されている場合
if("NEWMAIL".equals(ControllerParameter)){
//JSP表示を行うJSP名を返却する。
return "newmail.jsp";
}
//クエリにADDRESSが指定されている場合
else if("ADDRESS".equals(ControllerParameter)){
//JSP表示を行うJSP名を返却する。
return "address.jsp";
}
return JSPFILE;
}
}
(2) Viewの開発
JSPを使用して,パラメタの値に応じて表示内容を切り替えるポートレットコンテンツを開発します。日立APIポートレットのサンプルソース(index.jsp)は,パラメタpageの値(default.jsp,newmail.jsp,address.jsp)に応じて表示内容を切り替えます。
<hr>メールポートレットの画面<hr>
<%
//
//デフォルトアクションモジュールが設定した属性を判断し,画面に表示するコンテンツを切り替えます。
// ここでは,pageというAttributeを参照し, 表示コンテンツをControlします。
String view = (String)request.getAttribute("page");
if (page != null) {%>
<jsp:include page="<%= view %>" flush="true"/>
<% }%>
<hr>
初期状態の画面です。
<hr>
メールが到着した際の画面です。
<hr>
アドレス帳の画面です。