10/17 つまづいたとこ
◎RequestDispatcher
リソースにリクエストをフォワードするか、レスポンスのなかのリソースをインクルードする目的で使用。
リソースは動的、静的どちらにも適用可。
パス名は "/" で始まらなければならない。これによりWebアプリケーションのコンテキストルートに対する相対パスであると解釈される。
外部のコンテキストに属するリソースを利用するには getContext() メソッドを使って RequestDispatcher オブジェクトを取得する。
このメソッドはServletContextがRequestDispatcherを返せなかった場合にnullを返す。
サーブレットからサーブレットへPOSTしようとしたら『パス ほにゃらら が"/"文字で始まりません』って怒られまくってそのエラー文をずっと調べてたんだけど解決せず。
web.xmlになんか付け足す記事が何個か出ていたけど、関係なかったぽい。解決しなかった。
最終的にforwardのこと調べてたら
http://mergedoc.osdn.jp/tomcat-servletapi-5-ja/javax/servlet/RequestDispatcher.html
ここにたどり着いて、決まりを確認したら解決できた。
"/"これつけてないだけだった・・・。
つけて試したりもしたはずなんだけどなぁ・・?
でも今回のは確実にわかってて出来る方がいい。なんとなくじゃなくて。
エラーで調べることばかり考えてたけど、そもそもまだルールや仕様がよくわかってないことの方が多いんだったと思ったつまづきでした。
◎DBからSelectで取って来た値を配列へ
List<Item> itemList = new ArrayList<Item>();
while (rs.next()) {
itemList.add(new Item(
rs.getString("itemId"),
rs.getString("itemName"),
rs.getInt("price")
));
}
return itemList;
前回学んだ余計な変数を作らないみたいな話がもっとよくわかった感じだった。
itemList.add(new Item(
ここ、new Itemでインスタンス生成してるけど、それに名前はついてない(変数に代入してない)。
説明下手だけど、なんかnewするとき変数あるパターンしか見たことなかったから、こういう書き方あるんか!って思った。
あとやっとかないとと思ったのはfinallyでDBcloseするとこ。
でも商品一覧まできたな〜すごい〜