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

サーブレットをポートレットディレクトリ下のURLにマッピングしておくと,JSPを呼び出す方法と同様に,includeアクションを使用して相対パス形式でサーブレットを呼び出せます。

WebアプリケーションのDD(web.xml)のマッピング例を次に示します。

<servlet>
 <servlet-name>Handler</servlet-name>
 <servlet-class>mydomain.myapp</servlet-class>
</servlet>
<servlet-mapping>
 <servlet-name>Handler</servlet-name>
 <url-pattern>/portlets/mvctest/Handler</url-pattern>
</servlet-mapping>

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

<%@ page import="jp.co.hitachi.soft.portal.portlet.PortletURI" %>
<%@ page import="jp.co.hitachi.soft.portal.portlet.PortletUtils" %>
<%@ page import="jp.co.hitachi.soft.portal.portlet.beans.PortletInfoBean" %>
// サーブレット呼び出し
<jsp:include page="Handler" flush="true"/>
<%
   String uri = "error.jsp";
   try {
     PortletInfoBean pInfo = new PortletInfoBean();
     pInfo.initBean(request);
     PortletInfoBean.Mode mode = pInfo.getMode();
     if (mode == PortletInfoBean.Mode.DEFAULT) {
       /** サマリ画面用業務ロジック呼び出し */
       uri = "summary.jsp";
     } else if (mode == PortletInfoBean.Mode.MAXIMIZE) {
       /** 最大化画面用業務ロジック呼び出し */
       uri = "main.jsp";
     }
   } catch (Exception ioe) {
     // エラーメッセージ出力
   }
%>
// includeを用いたJSP(View)の呼び出し
<jsp:include page="<%= uri %>" flush="true"/>