コンテンツにスキップ

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");