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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

JSP

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

Java

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

Eclipse

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

解決済

リクエストスコープの値がNullでエラーが出る

mum
mum

総合スコア17

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

JSP

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

Java

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

Eclipse

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

1回答

0リアクション

0クリップ

3587閲覧

投稿2020/02/23 01:18

前提・実現したいこと

Javaでつぶやきアプリを開発しています。
リクエストスコープで取得した値がNullになり、HTTPステータス500エラーが出る。
サーブレットクラスでリクエストスコープにセットしたMutterというインスタンスを
.jspで取得して値を画面上に表示しようとするとエラーが出ます。

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

java.lang.NullPointerException

イメージ説明

該当のソースコード

↓サーブレットクラス

java

package servlet; // コントローラー 呟きに関するリクエストを処理する import java.io.IOException; 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 javax.servlet.http.HttpSession; import model.GetMutterListLogic; import model.Mutter; import model.PostMutterLogic; import model.User; @WebServlet("/Main") public class Main extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // つぶやきリストを取得して、リクエストスコープに保存 GetMutterListLogic getMutterListLogic = new GetMutterListLogic(); List<Mutter> mutterList = getMutterListLogic.execute(); request.setAttribute("mutterList", mutterList); // ログインしているか確認するため // セッションスコープからユーザー情報を取得 HttpSession session = request.getSession(); User loginUser = (User) session.getAttribute("loginUser"); if (loginUser == null) { // ログインしていない // リダイレクト response.sendRedirect("/docoTsubu/"); } else { // ログイン済み // フォワード RequestDispatcher dispatcher = request. getRequestDispatcher("/WEB-INF/jsp/main.jsp"); dispatcher.forward(request, response); } } }

↓.jsp

java

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="model.User, model.Mutter, java.util.List" %> <% // セッションスコープに保存されたユーザー情報を取得 User loginUser = (User) session.getAttribute("loginUser"); // 呟きリストを取得をリクエストスコープから取得 List<Mutter> mutterList = (List<Mutter>)request.getAttribute("mutterList"); // リクエストスコープに保存されたエラーメッセージを取得 String errorMsg = (String)request.getAttribute("errorMsg"); %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>どこつぶ</title> </head> <body> <h1>どこつぶメイン画面</h1> <p> <%= loginUser.getName() %>さん、ログイン中 <a href="./Logout">ログアウト</a> </p> <p><a href="./Main">更新</a></p> <form action="./Main" method="post"> <input type="text" name="text"> <input type="submit" value="つぶやく"> </form> <% if(errorMsg != null) { %> <P><%= errorMsg %></P> <%} %> <% for(Mutter mutter : mutterList) { %> <p><%= mutter.getUserName() %>:<%= mutter.getText() %></p> <%} %> </body> </html>

試したこと

・同じプロジェクト内で別クラス作成
>データベース接続
>Javaアプリケーションで実行
>2件のレコード表示
>問題なし、データベースの接続もできている。

環境

eclipse - Version: 2018-12 (4.10.0)
java - Version 11.0.2
macOs - Catalin 10.15.2
Tomcat - Apache Tomcat/9.0.30
MySQL - Version 8.0.19

補足情報

”スッキリわかるサーブレット&JSP”という書籍を見ながらコードを書いているのですが、
なんどもコードも見直しているのですが、どの部分が間違っているのかわかりません。
ご教授願います。

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

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

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

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

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

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

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

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

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

hoshi-takanori

2020/02/23 04:25

mutterList が null っぽいですけど、GetMutterListLogic を見てみないとなんとも…。
mum

2020/02/23 09:46

回答ありがとうございます! いろいろ見直していると、SQLExceptionも出ていて、JDBCドライバの.jarファイルをTomcatのlib配下に配置することで改善しました。 コード見ていただいてありがとうございました。

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

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

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

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

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

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

JSP

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

Java

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

Eclipse

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