前提・実現したいこと
初心者です
JavaのサーブレットJSPを学習中です
簡単な投稿サイトを作成しています
発生している問題・エラーメッセージ
変数の中身がnullになってしまいます
サーブレットファイルのdoPostメソッド中だとlistが空で
テストクラスファイルの中だとlistにちゃんと値が入っていることが謎です
該当のソースコード
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { List<Bean> list = new ArrayList<>(); SampleDAO sampleDAO = new SampleDAO(); list = sampleDAO.findAll(); if (list.size() != 0){ RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/sample.jsp"); dispatcher.forward(request, response); } }
フォワードしません。==だと飛びます。isEmpty()でも確認済みです。
試したこと
簡単なテストクラスを作って試したところ、こっちでは出力成功しました。
public class DAOTest { public static void main(String[] args) { List<Bean> list = new ArrayList<>(); SampleDAO sampleDAO = new SampleDAO(); list = sampleDAO.findAll(); System.out.println(list.size()); } } }
テストは異常なく出力されました。
補足情報(FW/ツールのバージョンなど)
テストで問題なく出力されたので文法には間違いがないはず。。。
なぜサーブレットのdoPostになると結果が違うのかはまってます
DAOの該当箇所
public List<Bean> findAll() { List<Bean> list = new ArrayList<>(); try (Connection con = DriverManager.getConnection(DBURL, DBUSER, DBPASS)) { String sql = "SELECT * FROM ACCOUNT"; Statement smt = con.createStatement(); ResultSet rs = smt.executeQuery(sql); while (rs.next()) { String name = rs.getString("NAME"); String text = rs.getString("TEXT"); Bean bean = new Bean(name, text); list.add(bean); } } catch (SQLException e) { e.printStackTrace(); } return list; }
回答1件
あなたの回答
tips
プレビュー