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文判定は必要ありませんが、メソッド追加を予定してこのような処理手順にしています。
