Javaサーブレット
第1章 基本の流れ
1.サーブレットのdoGetまたはdoPostが実行される
- 通常のアクセスならGET
- フォームからmethod="post"を指定したときはPOST
2.フォームなどから渡されるデータがあれば受け取る
// フォームからsidで渡された
int sid = Integer.parseInt(request.getParameter("sid"));
3.データベースを使うならDAOを生成し処理を行う
ShouhinDAO dao = new ShouhinDAO();
Shouhin s = dao.findBySid(sid); // sidで検索
4.JSPに渡すデータがあるならセットする
// shouhinという名前でsを渡す
request.setAttribute("shouhin", s);
5.JSP呼び出し(フォワード)
// del.jsp を表示
RequestDispatcher rd = request.getRequestDispatcher("WEB-INF/jsp/del.jsp");
rd.forward(request, response);
第2章 サーブレット基本
URL設定
@WebServlet("/slist")
全検索の例 doGet内
// DAOを使い全商品のArrayList取得
ShouhinDAO dao = new ShouhinDAO();
ArrayList<Shouhin> list = dao.findAll();
// JSPにデータを渡す
request.setAttribute("list", list);
// フォワード
RequestDispatcher rd = request.getRequestDispatcher("WEB-INF/jsp/slist.jsp");
rd.forward(request, response);
追加の例 doPost内
// フォームから受け取るデータの文字コード設定
request.setCharacterEncoding("UTF-8");
// フォームから送信データを受け取る
String sname = request.getParameter("sname");
int tanka = Integer.parseInt(request.getParameter("tanka"));
// DAOを使い商品追加
ShouhinDAO dao = new ShouhinDAO();
Shouhin s = new Shouhin(0,sname,tanka);
dao.insert(s);
// slistにリダイレクト
response.sendRedirect("slist");
第3章 フォーム
フォームのHTML
<form action="insert" method="post">
商品名:<input type="text" name="sname"><br>
単価 :<input type="text" name="tanka"><br>
<input type="submit" value="送信">
</form>
サーブレットでデータ受け取り
// 文字コード設定
request.setCharacterEncoding("UTF-8");
// 文字列の受け取り name属性で指定された名前を指定する
String sname = request.getParameter("sname");
// 整数の受け取り
int tanka = Integer.parseInt(request.getParameter("tanka"));
第4章 データベース
全件検索
ShouhinDAO dao = new ShouhinDAO();
ArrayList<Shouhin> list = dao.findAll();
1件検索
ShouhinDAO dao = new ShouhinDAO();
Shouhin s = dao.findBySid(sid);
追加
ShouhinDAO dao = new ShouhinDAO();
Shouhin s = new Shouhin(0, sname, tanka);
dao.insert(s);
削除
ShouhinDAO dao = new ShouhinDAO();
dao.delete(sid);
更新
ShouhinDAO dao = new ShouhinDAO();
Shouhin s = new Shouhin(sid, sname, tanka);
dao.update(s);
第5章 JSP
サーブレットでJSPへ渡すデータをセット。
例:shouhin という名前で s を渡す
request.setAttribute("shouhin", s);
JSPで表示。shouhin を渡された場合(EL式)。
<p>商品名:${shouhin.sname}</p>
<p>単価 :${shouhin.tanka}</p>
JSPで一覧を表示。listでArrayListを渡された場合。
<c:forEach var="shouhin" items="${list}">
<tr>
<td>${shouhin.sid}</td>
<td>${shouhin.sname}</td>
<td>${shouhin.tanka}</td>
</tr>
</c:forEach>
※c:forEachはJSTLを使うので以下を上部に挿入するのを忘れずに。
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
第6章 データ受け渡し
ユーザが入力しなくてもデータを受け渡す方法。 基本的にはフォームと同じ。
1.hiddenで渡す
フォームに以下のようなタグを設置。 例:snameという名前で s.sname を渡す例。
<input type="hidden" name="sname" value="${s.sname}">
サーブレットでは普通にフォームの処理で受け取る。
2.リンクパラメータで渡す。
リンク先に URL?名前=値 でリンクを張る。 例:delにsidという名前で${shouhin.sid}を渡す
<a href="del?sid=${shouhin.sid}">削除</a>
サーブレットではフォームと同様に受け取る
int sid = Integer.parseInt(request.getParameter("sid"));
第7章 自動遷移
doPostなどで処理後に自動的に別ページに移動する方法(リダイレクト)。
// slistに遷移
response.sendRedirect("slist");