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

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

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

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

Java

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

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Eclipse

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

Q&A

解決済

1回答

1051閲覧

[JAVA] SQLのデータをJSPに表示しようと書きましたが、500エラー出てきました 教えてくださいー

randle5118

総合スコア7

MySQL

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

Java

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

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Eclipse

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

0グッド

0クリップ

投稿2018/03/30 08:06

編集2018/03/30 09:00

JAVAの初心者です。
本の練習で簡単な書き込みできるwebアプリケーションを作っております。
コード書いてみましたが、localで実行ところです500エラーになりました。
内容は下記の通りになります。

コードはごちゃごちゃになっていて、大変失礼いたしますが、
ご教示して頂ければ幸いです。

何卒よろしく願いします!

イメージ説明

環境:
Eclipse
サーバー:
Tomcat
DB:
mysql  drivaer:mysql-connector-java-5.1.46

関連コード↓

MutterDAO.java

MutterDAO.java

1package dao; 2 3import java.sql.Connection; 4import java.sql.DriverManager; 5import java.sql.PreparedStatement; 6import java.sql.ResultSet; 7import java.sql.SQLException; 8import java.util.ArrayList; 9import java.util.List; 10 11import model.Mutter; 12 13public class MutterDAO{ 14 15 private final String DRIVER_NAME ="com.mysql.jdbc.Driver"; 16 private final String JDBC_URL ="jdbc:mysql://localhost/docoTsubu"; 17 private final String DB_USER ="root"; 18 private final String DB_PASS ="Zz25324956!!"; 19 20 public List<Mutter> findAll(){ 21 Connection conn = null; 22 List<Mutter> mutterList =new ArrayList<Mutter>(); 23 24 try { 25 Class.forName(DRIVER_NAME); 26 conn = DriverManager.getConnection(JDBC_URL,DB_USER,DB_PASS); 27 28 //select文準備 29 String sql = "SELECT ID,NAME,TEXT FROM MUTTER ORDER BY ID DESC"; 30 PreparedStatement pStmt = conn.prepareStatement(sql); 31 32 //select 実行 33 ResultSet rs = pStmt.executeQuery(); 34 35 //select結果をArrayListに格納 36 while(rs.next()) { 37 int id = rs.getInt("ID"); 38 String userName = rs.getString("NAME"); 39 String text = rs.getString("TEXT"); 40 Mutter mutter = new Mutter(id,userName,text); 41 mutterList.add(mutter); 42 } 43 }catch (SQLException e) { 44 e.printStackTrace(); 45 return null; 46 }catch(ClassNotFoundException e) { 47 e.printStackTrace(); 48 return null; 49 }finally { 50 //データベース切断 51 if(conn != null) { 52 try { 53 conn.close(); 54 }catch(SQLException e) { 55 e.printStackTrace(); 56 return null; 57 } 58 } 59 } 60 return null; 61 } 62 public boolean create(Mutter mutter) { 63 Connection conn = null; 64 65 try { 66 //データベース接続 67 conn = DriverManager.getConnection(JDBC_URL,DB_USER,DB_PASS); 68 69 //INSERT文の準備(IDは自動連番なので指定しなくていい) 70 String sql = "INSERT INTO MUTTER(NAME, TEXT) VALUES(?,?)"; 71 PreparedStatement pStmt = conn.prepareStatement(sql); 72 73 //INSERT文の中の?に使用する値に設定しSQLを完成 74 pStmt.setString(1, mutter.getUserName()); 75 pStmt.setString(2, mutter.getText()); 76 77 //INSERT文を実行 78 int result = pStmt.executeUpdate(); 79 80 if(result != 1) { 81 return false; 82 } 83 }catch (SQLException e) { 84 e.printStackTrace(); 85 return false; 86 }finally { 87 //データベース切断 88 if(conn != null) { 89 try { 90 conn.close(); 91 }catch(SQLException e) { 92 e.printStackTrace(); 93 } 94 } 95 } 96 return true; 97 98 } 99} 100 101

main.jsp

main.jsp

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 <% 6 // セッションスコープ に保存されたデータを取得 7 User loginUser = (User) session.getAttribute("loginUser"); 8 9 // applicationsocope に保存されたつぶやきリストを取得 10 // List<Mutter> mutterList = (List<Mutter>) application.getAttribute("mutterList"); 11 12 List<Mutter> mutterList = (List<Mutter>) request.getAttribute("mutterList"); 13 14 // リクエストスコープに保存されたユーザー情報を取得 15 String errorMsg = (String) request.getAttribute("errorMsg"); 16 %> 17 18 19 20<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 21<html> 22<head> 23<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 24<title>どこつぶ</title> 25</head> 26<body> 27<h1>どこつぶメイン</h1> 28<p> 29<%= loginUser.getName() %>>さん、ログイン中<br> 30<a href ="/docoTsubu/Logout">ログアウト</a> 31</p> 32<p> 33<a href = "/docoTsubu/Main">更新</a> 34</p> 35<form action = "/docoTsubu/Main" method = "post"> 36<input type ="text" name="text"> 37<input type ="submit" value="つぶやき"> 38</form> 39<% if(errorMsg != null) { %> 40<p><%= errorMsg %></p> 41<% } %> 42<% for(Mutter mutter:mutterList){ %> 43<p><%= mutter.getUserName() %>:<%= mutter.getText() %></p> 44<% } %> 45</body> 46</html> 47 48

Main.java

Main.java

1package servlet; 2 3import java.io.IOException; 4import java.util.List; 5 6import javax.servlet.RequestDispatcher; 7import javax.servlet.ServletException; 8import javax.servlet.annotation.WebServlet; 9import javax.servlet.http.HttpServlet; 10import javax.servlet.http.HttpServletRequest; 11import javax.servlet.http.HttpServletResponse; 12import javax.servlet.http.HttpSession; 13 14import model.GetMutterListLogic; 15import model.Mutter; 16import model.PostMutterLogic; 17import model.User; 18 19/** 20 * Servlet implementation class Main 21 */ 22/** 23 * @author tt5118 24 * 25 */ 26/** 27 * @author tt5118 28 * 29 */ 30@WebServlet("/Main") 31public class Main extends HttpServlet { 32 private static final long serialVersionUID = 1L; 33 34 /** 35 * @see HttpServlet#HttpServlet() 36 */ 37 // public Main() { 38 // super();} 39 // TODO Auto-generated constructor stub 40 41 /** 42 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 43 */ 44 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 45 // TODO Auto-generated method stub 46 // response.getWriter().append("Served at: ").append(request.getContextPath()); 47 48 // つぶやきをapplicationscopeから取得 49 // ServletContext application = this.getServletContext(); 50 // List<Mutter> mutterList = (List<Mutter>)application.getAttribute("mutterList"); 51 52 // 取得できなかった場合、つぶやきリストを新規作成してapplicationscopeに保存 53 // if(mutterList == null) { 54 // mutterList = new ArrayList<Mutter>(); 55 // application.setAttribute("mutterList", mutterList); 56 // } 57 58 // つぶやきリストを取得し、リクエストスコープに保存 59 GetMutterListLogic getMutterListLogic = new GetMutterListLogic(); 60 List<Mutter>mutterList = getMutterListLogic.execute(); 61 request.setAttribute("mutterList", mutterList); 62 63 // ログインしているか確認するため 64 // セッションスコープかたユーザー情報を取得 65 HttpSession session = request.getSession(); 66 User loginUser = (User) session.getAttribute("loginUser"); 67 68 if(loginUser == null ) {// ログインしていない場合 69 // リダイレクト 70 response.sendRedirect("/docoTsubu/"); 71 }else { 72 // login済みの場合 73 // forward 74 RequestDispatcher dispacther = request.getRequestDispatcher("/WEB-INF/jsp/main.jsp"); 75 dispacther.forward(request, response); 76 77 } 78 } 79 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 80 // TODO 自動生成されたメソッド・スタブ 81 // super.doPost(req, resp); 82 83 // リクエストパラメータ 84 request.setCharacterEncoding("UTF-8"); 85 String text = request.getParameter("text"); 86 87 // 入力値チェック 88 if(text != null && text.length() !=0 ) { 89 // applicationscopeに保存されたつぶやきリストを取得 90 // ServletContext application = this.getServletContext(); 91 // List<Mutter> mutterList = (List<Mutter>)application.getAttribute("mutterList"); 92 93 // セッションスコープ に保存された情報を取得 94 HttpSession session = request.getSession(); 95 User loginUser = (User) session.getAttribute("loginUser"); 96 97 //つぶやきをつぶやきリストに追加 98 Mutter mutter = new Mutter(loginUser.getName() , text); 99 PostMutterLogic postMutterLogic = new PostMutterLogic(); 100 postMutterLogic.execute(mutter); 101 102 // applicationscopeにつぶやきリストを保存 103 // application.setAttribute("mutterList", mutterList); 104 105 }else { 106 // エラーメッセージをリクエストスコープに保存 107 request.setAttribute("errorMsg", "つぶやきが入力されておりません。"); 108 } 109 //つぶやきリストを取得して、リクエストスコープに保存 110 GetMutterListLogic getMutterListLogic = new GetMutterListLogic(); 111 List<Mutter>mutterList = getMutterListLogic.execute(); 112 request.setAttribute("mutterList", mutterList); 113 114 // メインに forward 115 RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/main.jsp"); 116 dispatcher.forward(request, response); 117 118 } 119 120}

Mutter.java

Mutter.java

1package model ; 2 3import java.io.Serializable; 4 5public class Mutter implements Serializable { 6 private int id ;// ID 7 private String userName ; //UserName 8 private String text ;//つぶやき内容 9 10 11 public Mutter() { 12 } 13 public Mutter(String userName , String text) { 14 this.userName = userName ; 15 this.text = text ; 16 } 17 18 public Mutter(int id ,String userName, String text) { 19 this.id = id; 20 this.userName = userName; 21 this.text = text; 22 } 23 24 public int getId() { 25 return id; 26 } 27 28 public String getUserName() { 29 return userName ; 30 } 31 32 public String getText() { 33 return text ; 34 } 35 36}

試したこと

問題がある42行を削除したら、
入力したtextデータは無事にDBに入りました。

eclipseで見る限りエラーのコードは見当たらなく、
大文字と小文字のところももう一度確認しました。

内容不十分で申し訳ございません。。

追記します
GetMutterListLogic.java

java

1package model; 2 3import java.util.List; 4 5import dao.MutterDAO; 6 7public class GetMutterListLogic{ 8 9 public List<Mutter>execute(){ 10 MutterDAO dao = new MutterDAO(); 11 List<Mutter>mutterList = dao.findAll(); 12 return mutterList; 13 } 14}

PostMutterLogic.java

java

1package model ; 2 3import dao.MutterDAO; 4 5public class PostMutterLogic{ 6 public void execute(Mutter mutter) { 7 MutterDAO dao = new MutterDAO(); 8 dao.create(mutter); 9 } 10}

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

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

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

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

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

guest

回答1

0

ベストアンサー

jspで「mutterList」が取得できなかったのが原因です。
そもそも、Main.javaで

List<Mutter>mutterList = getMutterListLogic.execute();

こうしてますが、「getMutterListLogic.execute()」の戻り値がnullなんじゃないですか?

投稿2018/03/30 08:23

tkturbo

総合スコア5572

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

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

randle5118

2018/03/30 09:06

ご回答ありがとうございます。 一番下の方にコードを追加しました。 「getMutterListLogic.execute()」戻り値はGetMutterListLogic.javaのファイル内記載しています。 不十分な内容で失礼いたしました。 よろしくお願い致します。
tkturbo

2018/03/30 09:12 編集

GetMutterListLogic.java」の「execute」メソッドは「MutterDAO」インスタンスの「findAll」メソッドの処理結果を返しています。 ご自身で「MutterDAO.java」の「findAll」メソッドのソースをよく読んでください。処理結果がどうあれ、100%nullが返ってくるようになってます。
randle5118

2018/03/30 09:20

ご対応ありがとうございます! ソースしっかりと読んだ上修正しました。 無事に動けました! ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問