2.3 サーブレットコード
package com.business; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; @SuppressWarnings("serial") public class acctSvlt extends HttpServlet { @Override public void doGet (HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException{ req.setCharacterEncoding("utf-8"); res.setContentType("text/html; charset=utf-8"); PrintWriter out; out = res.getWriter(); String mode = req.getParameter("mode"); //(1) String acct_code = req.getParameter("acct_code"); String resp = ""; acctBean acct = new acctBean(); //(2) if(mode.equals("get_acct")){ //(3) resp = acct.getAcctName(acct_code); }else if(mode.equals("getAllAcct")){ //(4) resp = acct.getAllAcct(); } out.println(resp); out.flush(); out.close(); } @Override public void doPost (HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException{ req.setCharacterEncoding("utf-8"); res.setContentType("text/html; charset=utf-8"); PrintWriter out; out = res.getWriter(); String mode = req.getParameter("mode"); String check_no = req.getParameter("check_no"); String debit_code = req.getParameter("debit_code"); String debit_acct = req.getParameter("debit_acct"); String debit_amt = req.getParameter("debit_amt"); String credit_code = req.getParameter("credit_code"); String credit_acct = req.getParameter("credit_acct"); String credit_amt = req.getParameter("credit_amt"); String remark = req.getParameter("remark"); String resp = ""; acctBean acct = new acctBean(); //(5) if(mode.equals("addJournal")){ //(6) resp = acct.addJournal(check_no, debit_code, debit_acct, debit_amt, credit_code, credit_acct, credit_amt, remark); } out.println(resp); out.flush(); out.close(); } }
リスト4のサーブレットではWebクライアントからのリクエストを受信して、ビーンズに処理を依頼しますが、MVCでのコントローラ機能に徹しているので処理内容は定型的でシンプルです。
doGetメソッド
doGetメソッドでは参照系のリクエストを受け取り、以下の手順で処理を行います。
(1)のmodeでビーンズに依頼する処理内容を確認し、(2)で実際の処理を行う(モデル機能)ビーンズのインスタンスを生成後、(3)と(4)でmodeの指定に対応したビーンズメソッドを呼び出してCloud SQLでのMySQLアクセス処理を依頼しています。
doPostメソッド
doPostメソッドでは登録・更新系のリクエストを受け取り 、modeとビーンズに渡すパラメータを変数にセットした後、(5)でビーンズインスタンスを生成してメソッド呼び出しを行いますが、ここでは1種類のメソッドだけなので、(6)のif文判定は必要ありませんが、メソッド追加を予定してこのような処理手順にしています。