質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

解決済

Servetエラー DBの取得結果が画面に表示されない

退会済みユーザー

退会済みユーザー

総合スコア0

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

1回答

0リアクション

0クリップ

334閲覧

投稿2022/09/10 13:15

編集2022/09/11 05:07

ここに質問の内容を詳しく書いてください。

初心者です。
Todoリストの一覧をDBから取得して画面に出力するという事を行っています。
home.html画面は表示でき、Todo一覧表示ボタンを押し画面遷移の際にエラーになってしまいます。
DBでselect文できちんとデータが登録されているのは確認済みです。
どのようにすればこのエラーを解決できるのでしょうか?
よろしくお願いいたします。

実現したいこと

Todoリストの一覧をDBから取得して画面に出力する

発生している問題・エラーメッセージ

エラーメッセージ
Cannot invoke "java.sql.Connection.prepareStatement(String)" because "connection" is null
サーバーは予期しない条件に遭遇しました。それはリクエストの実行を妨げます。
例外
java.lang.NullPointerException: Cannot invoke "java.sql.Connection.prepareStatement(String)" because "connection" is null
model.dao.TodoListDAO.getTodoList(TodoListDAO.java:36)
servlet.ListServlet.doGet(ListServlet.java:44)
javax.servlet.http.HttpServlet.service(HttpServlet.java:655)
javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

該当のソースコード

java,html,jsp

ソースコード package model; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class DBConnection { public static Connection getConnection() throws SQLException, ClassNotFoundException { // データベースのURL final String URL = "jdbc:postgresql://localhost:5432/Tododb"; // データベースにアクセスするユーザー final String USER = "postgres"; // パスワード final String PASSWORD = "postgres"; Class.forName("org.postgresql.Driver"); // データベースへ接続する Connection connection = DriverManager.getConnection(URL, USER, PASSWORD); return connection; } } package model.dao.dto; import java.sql.Date; public class TodoDTO { /** * TodoのIdを保持する */ private int id; /** * Todoの内容を保持する */ private String todo; /** * Todoの期限を保持する */ private Date timeLimit; /** * 引数なしコンストラクタ * 初期化を行う */ public TodoDTO () { id = 0; todo = ""; timeLimit = new Date(System.currentTimeMillis()); } /** * 受け取った引数によって初期化を行う * @param id * @param todo * @param timeLimit */ public TodoDTO(int id, String todo, Date timeLimit) { this.id = id; this.todo = todo; this.timeLimit = timeLimit; } /** * idを取得する * @return id */ public int getId() { return id; } /** * idを設定する * @param id */ public void setId(int id) { this.id = id; } /** * Todoの内容を取得する * @return Todoの内容 */ public String getTodo() { return todo; } /** * Todoの内容を設定する * @param todo */ public void setTodo(String todo) { this.todo = todo; } /** * Todoの期限を取得する * @return */ public Date getTimeLimit() { return timeLimit; } /** * Todoの期限を設定する * @param timeLimit */ public void setTimeLimit(Date timeLimit) { this.timeLimit = timeLimit; } } package model.dao; import java.sql.Connection; import java.sql.Date; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import model.DBConnection; import model.dao.dto.TodoDTO; public class TodoListDAO { /** * Todoの一覧を取得する * @return todoの一覧 * @throws ClassNotFoundException * @throws SQLException */ public List<TodoDTO> getTodoList() throws ClassNotFoundException, SQLException { // 返却用Listの初期化 List<TodoDTO> todoList = new ArrayList<>(); // 実行するSQL String sql = "SELECT id, todo, timeLimit from todo"; // DBに接続し、Todo一覧を取得する try (Connection connection = DBConnection.getConnection(); PreparedStatement pstmt = connection.prepareStatement(sql)) { // SQLを実行しResultSetの変数に結果を格納する ResultSet res = pstmt.executeQuery(); // 実行結果を順番に取り出す while (res.next()) { // それぞれid, todo, timeLimitを取得する int id = res.getInt("id"); String todo = res.getString("todo"); Date timeLimit = res.getDate("timeLimit"); // 取得したid, todo, timeLimitでTodoDTOを初期化してListに追加 todoList.add(new TodoDTO(id, todo, timeLimit)); } } return todoList; } } package servlet; import java.io.IOException; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import model.dao.TodoListDAO; import model.dao.dto.TodoDTO; /** * Servlet implementation class ListServlet */ @WebServlet("/list-servlet") public class ListServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public ListServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // todoの一覧を保持する変数を宣言 List<TodoDTO> todoList = new ArrayList<>(); // DAOを生成し、Todo一覧を取得する TodoListDAO dao = new TodoListDAO(); try { // todo一覧を取得する todoList = dao.getTodoList(); System.out.println(todoList); }catch(SQLException | ClassNotFoundException e) { e.printStackTrace(); } // todo一覧をリクエストスコープに設定する request.setAttribute("todoList", todoList); // todo一覧画面に遷移する RequestDispatcher rd = request.getRequestDispatcher("list.jsp"); rd.forward(request, response); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } } <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Home</title> </head> <body> <h1>Todo 管理Webアプリケーション</h1> <form action="list-servlet" method="get"> <input type="submit" value="Todo一覧を表示"> </form> </body> </html> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.util.List, java.util.ArrayList, model.dao.dto.TodoDTO"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Todo List</title> </head> <body> <% List<TodoDTO> todoList = (List) request.getAttribute("todoList"); %> <% for(TodoDTO todo: todoList){ %> <%=todo.getTodo() %> 期限:<%=todo.getTimeLimit() %><br> <% } %> </body> </html> ### 試したこと インターネットで調べる \pleiades\workspace\Todo\src\main\webapp\WEB-INF\libフォルダにjdbcドライバを格納 ここに問題に対して試したことを記載してください。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。