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

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

新規登録して質問してみよう
ただいま回答率
85.48%
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で実装されています。

Q&A

解決済

1回答

5245閲覧

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

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で実装されています。

0グッド

0クリップ

投稿2020/02/23 01:18

前提・実現したいこと

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

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

java.lang.NullPointerException

イメージ説明

該当のソースコード

↓サーブレットクラス

java

1package servlet; 2 3// コントローラー 呟きに関するリクエストを処理する 4 5import java.io.IOException; 6import java.util.List; 7import javax.servlet.RequestDispatcher; 8import javax.servlet.ServletException; 9import javax.servlet.annotation.WebServlet; 10import javax.servlet.http.HttpServlet; 11import javax.servlet.http.HttpServletRequest; 12import javax.servlet.http.HttpServletResponse; 13import javax.servlet.http.HttpSession; 14 15import model.GetMutterListLogic; 16import model.Mutter; 17import model.PostMutterLogic; 18import model.User; 19 20@WebServlet("/Main") 21public class Main extends HttpServlet { 22 private static final long serialVersionUID = 1L; 23 24 protected void doGet( 25 HttpServletRequest request, 26 HttpServletResponse response) throws ServletException, IOException { 27 // つぶやきリストを取得して、リクエストスコープに保存 28 GetMutterListLogic getMutterListLogic = 29 new GetMutterListLogic(); 30 List<Mutter> mutterList = getMutterListLogic.execute(); 31 request.setAttribute("mutterList", mutterList); 32 33 // ログインしているか確認するため 34 // セッションスコープからユーザー情報を取得 35 HttpSession session = request.getSession(); 36 User loginUser = (User) session.getAttribute("loginUser"); 37 38 if (loginUser == null) { // ログインしていない 39 // リダイレクト 40 response.sendRedirect("/docoTsubu/"); 41 } else { // ログイン済み 42 // フォワード 43 RequestDispatcher dispatcher = request. 44 getRequestDispatcher("/WEB-INF/jsp/main.jsp"); 45 dispatcher.forward(request, response); 46 } 47 } 48 49 50} 51

↓.jsp

java

1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3<%@ page import="model.User, model.Mutter, java.util.List" %> 4<% 5// セッションスコープに保存されたユーザー情報を取得 6User loginUser = (User) session.getAttribute("loginUser"); 7// 呟きリストを取得をリクエストスコープから取得 8List<Mutter> mutterList = (List<Mutter>)request.getAttribute("mutterList"); 9// リクエストスコープに保存されたエラーメッセージを取得 10String errorMsg = (String)request.getAttribute("errorMsg"); 11%> 12<!DOCTYPE html> 13<html> 14<head> 15<meta charset="UTF-8"> 16<title>どこつぶ</title> 17</head> 18<body> 19<h1>どこつぶメイン画面</h1> 20<p> 21<%= loginUser.getName() %>さん、ログイン中 22<a href="./Logout">ログアウト</a> 23</p> 24<p><a href="./Main">更新</a></p> 25<form action="./Main" method="post"> 26<input type="text" name="text"> 27<input type="submit" value="つぶやく"> 28</form> 29<% if(errorMsg != null) { %> 30 <P><%= errorMsg %></P> 31<%} %> 32<% for(Mutter mutter : mutterList) { %> 33 <p><%= mutter.getUserName() %>:<%= mutter.getText() %></p> 34<%} %> 35</body> 36</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”という書籍を見ながらコードを書いているのですが、
なんどもコードも見直しているのですが、どの部分が間違っているのかわかりません。
ご教授願います。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hoshi-takanori

2020/02/23 04:25

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

2020/02/23 09:46

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

回答1

0

自己解決

JDBCドライバの.jarファイルを下記に配置

/usr/local/Cellar/tomcat/9.0.30/libexec/lib

投稿2020/02/23 09:47

mum

総合スコア17

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問