ここでは、JavaScriptアプリケーションからの送信データを受け取って処理を行うビジネスロジックの作成方法について説明します。
ビジネスロジックは、サーブレットとして作成します。
JavaBean(リクエスト用)の取得
JavaBean(リクエスト用)の取得は、以下の手順で行います。
ServletContextクラスのインスタンスを取得します。
com.fujitsu.interstage.rcf.http.RcfServletHelperクラスのgetRcfContextFromメソッドを使用して、ServletContextからcom.fujitsu.interstage.rcf.RcfContextクラスのインスタンスを取得します。
com.fujitsu.interstage.rcf.converter.RcfBeanConverterクラスのインスタンスを生成します。コンストラクタの引数にはRcfContextを指定します。なお、性能を考慮する場合は、生成したインスタンスをアプリケーション全体で共用することを推奨します。
リクエストから文字列を取り出します。
JavaBeanのインスタンスを用意します。
リクエストから取り出した文字列を、RcfBeanConverterクラスのdecodeメソッドで変換し、JavaBeanのインスタンスに格納します。
業務処理の呼出し
受け取ったリクエストパラメーターに応じて、各業務処理を振り分けて実行します。
業務処理では、処理結果をJavaBeanに格納します。
JavaBean(レスポンス用)の出力
RcfBeanConverterクラスのencodeメソッドで処理結果であるJavaBeanを文字列(JSON形式)に変換します。
変換した処理結果は、レスポンス(javax.servlet.http.HttpServletResponse)から出力ストリーム(java.io.PrintWriter)を取得し、出力ストリームへ出力します。
以下に、ビジネスロジックの記述例を示します。
package mypkg; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.fujitsu.interstage.rcf.RcfContext; import com.fujitsu.interstage.rcf.converter.RcfBeanConverter; import com.fujitsu.interstage.rcf.http.RcfServletHelper; public class MyHandler extends HttpServlet { public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { // JavaBean(リクエスト用)の取得 ServletContext context = getServletContext(); RcfContext rcfContext = RcfServletHelper.getRcfContextFrom(context); RcfBeanConverter conv = new RcfBeanConverter(rcfContext); String reqStr = req.getParameter("obj"); RequestBean reqBean = new RequestBean(); try { conv.decode(reqStr, reqBean); } catch (Exception e) { // 例外発生時の処理 ...; } // 業務ロジックの呼出し ResponseBean resBean = null; String cmd = req.getParameter("command"); if ("init".equals(cmd)) { // 初期処理の呼出し resBean = init(reqBean); } else if ("execute".equals(cmd)) { // 実行処理の呼出し ...; } // JavaBean(レスポンス用)の出力 res.setContentType("application/json; charset=UTF-8"); res.setStatus(HttpServletResponse.SC_OK); try { String resStr = conv.encode(resBean); PrintWriter wrt = res.getWriter(); wrt.print(resStr); } catch (Exception e) { // 例外発生時の処理 ...; } } }