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

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

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

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

Java

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

servlet

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

Q&A

解決済

1回答

7238閲覧

mutterもしくはmutterListが取得できないのです。コードの意味は理解したつもりなのですが、原因が不明です。コードを全て記載しました。どうかよろしくお願いします。

edoooooo

総合スコア476

JSP

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

Java

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

servlet

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

0グッド

0クリップ

投稿2016/04/18 06:10

編集2016/04/18 09:48

doGet()でGetMutterListLogicのexecute()を呼び出し、
findAll()でデータベースから取得して、mutterListに代入して、return で返します。
mutterListを受け取った、doGetメソッドでrequest.setAttributeで、セットします。その後、main.jspにフォワードします。
main.jspでは、List<Mutter>mutterList=(List<Mutter>)request.getAttribute(“mutterList”); で、つぶやきリストを取得します。
そして、main.jspのactionで、methodには、postを指定して、
Main.javaのdoPostに飛び、new Mutter(text)で、mutterを作りpostMutterLogic.execute(mutter)で、excute()内で、dao.create(mutter)をして、MutterDAO.java内のcreate()内で、INSERT したsqlをpStmt.executeUpdate()でセットします。
その後、jspのHTMLコードの部分で<%for(Mutter mutter:mutterList){%>

<p><%=mutter.getText()%></p> によって出力します。 この時に使用される、getText()は、Mutter.javaにあるメソッドで、main.jspのimportで、<%@page import=“model.Mutter,java.util.List”%>のように、importしています。

mutterもしくはmutterListが取得できないのですが、なぜなのでしょうか?

どうぞよろしくお願いします。

このようなエラーが出ます。
//エラー

java

1HTTP Status 500 - An exception occurred processing JSP page /WEB-INF/jsp/main.jsp at line 21 2 3type Exception report 4 5message An exception occurred processing JSP page /WEB-INF/jsp/main.jsp at line 21 6 7description The server encountered an internal error that prevented it from fulfilling this request. 8 9exception 10 11org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/jsp/main.jsp at line 21 12 1318: <input type="text"name="text"> 1419: <input type="submit" value="つぶやく"> 1520: </form> 1621: <% for(Mutter mutter:mutterList){%> 1722: <p><%=mutter.getText() %></p> 1823: <%} %> 1924: </body> 20 21 22Stacktrace: 23 org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:575) 24 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:477) 25 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395) 26 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339) 27 javax.servlet.http.HttpServlet.service(HttpServlet.java:731) 28 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 29 servlet.Main.doGet(Main.java:38) 30 javax.servlet.http.HttpServlet.service(HttpServlet.java:624) 31 javax.servlet.http.HttpServlet.service(HttpServlet.java:731) 32 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 33root cause 34 35java.lang.NullPointerException 36 org.apache.jsp.WEB_002dINF.jsp.main_jsp._jspService(main_jsp.java:105) 37 org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 38 javax.servlet.http.HttpServlet.service(HttpServlet.java:731) 39 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:439) 40 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395) 41 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339) 42 javax.servlet.http.HttpServlet.service(HttpServlet.java:731) 43 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 44 servlet.Main.doGet(Main.java:38) 45 javax.servlet.http.HttpServlet.service(HttpServlet.java:624) 46 javax.servlet.http.HttpServlet.service(HttpServlet.java:731) 47 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 48note The full stack trace of the root cause is available in the Apache Tomcat/7.0.65 logs. 49 50Apache Tomcat/7.0.65

//Main.java(servlet)

java

1package servlet; 2 3import java.io.IOException; 4import java.util.List; 5 6import javax.servlet.RequestDispatcher; 7 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.PostMutterLogic; 17import model.Mutter; 18 19/** 20 * Servlet implementation class Main 21 */ 22@WebServlet("/Main") 23public class Main extends HttpServlet { 24 private static final long serialVersionUID = 1L; 25 26 /** 27 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 28 */ 29 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 30 31 //つぶやきリストを取得して、リクエストスコープに保存 32 GetMutterListLogic getMutterListLogic=new GetMutterListLogic(); 33 List<Mutter>mutterList=getMutterListLogic.execute(); 34 request.setAttribute("mutterList", mutterList); 35 36 //フォワード 37 RequestDispatcher dispatcher=request.getRequestDispatcher("/WEB-INF/jsp/main.jsp"); 38 dispatcher.forward(request,response); 39 } 40 41protected void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{ 42 43 //リクエストパラメータからの取得 44 request.setCharacterEncoding("UTF-8"); 45 String text=request.getParameter("text"); 46 47 48 //つぶやきをつぶやきリストに追加 49 Mutter mutter=new Mutter(text); 50 PostMutterLogic postMutterLogic=new PostMutterLogic(); 51 postMutterLogic.execute(mutter); 52 53 //つぶやきリストを取得して、リクエストスコープに保存 54 GetMutterListLogic getMutterListLogic=new GetMutterListLogic(); 55 List<Mutter>mutterList=getMutterListLogic.execute(); 56 request.setAttribute("mutterList", mutterList); 57 58//メイン画面にフォワード 59RequestDispatcher dispatcher=request.getRequestDispatcher("/WEB-INF/jsp/main.jsp"); 60dispatcher.forward(request,response); 61} 62}

//main.jsp

java

1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <%@ page import="model.Mutter,java.util.List" %> 4 <% 5 //リクエストスコープに保存されたつぶやきリストを取得 6 List<Mutter>mutterList=(List<Mutter>)request.getAttribute("mutterList"); 7 %> 8<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 9<html> 10<head> 11<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 12<title>掲示板</title> 13</head> 14<body> 15<h1>掲示板メイン</h1> 16<p><a href="/example14/Main">更新</a></p> 17<form action="/example14/Main" method="post"> 18<input type="text"name="text"> 19<input type="submit" value="つぶやく"> 20</form> 21<% for(Mutter mutter:mutterList){%> 22<p><%=mutter.getText() %></p> 23<%} %> 24</body> 25</html>

//GetMutterListLogic.java(modelパッケージ)

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(modelパッケージ)

java

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

//MutterDAO.java(daoパッケージ)

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="org.h2.Driveer"; 16 private final String JDBC_URL= 17 "jdbc:h2:file:/Users/taichi/Documents/networkspace/example14/h2data.dat"; 18 private final String DB_USER="sa"; 19 private final String DB_PASS=""; 20 21 public List<Mutter>findAll(){ 22 Connection conn=null; 23 List<Mutter>mutterList=new ArrayList<Mutter>(); 24 try{ 25 Class.forName(DRIVER_NAME); 26 conn=DriverManager.getConnection(JDBC_URL,DB_USER,DB_PASS); 27 28 //SELECT文の準備 29 String sql="SELECT TEXT FROM MUTTER"; 30 PreparedStatement pStmt=conn.prepareStatement(sql); 31 32 //SELECTを実行 33 ResultSet rs=pStmt.executeQuery(); 34 35 //SELECT文の結果をArrayList二格納 36 while(rs.next()){ 37 String text=rs.getString("TEXT"); 38 39 Mutter mutter=new Mutter(text); 40 mutterList.add(mutter); 41 } 42 }catch(SQLException e){ 43 e.printStackTrace(); 44 return null; 45 }catch(ClassNotFoundException e){ 46 e.printStackTrace(); 47 return null; 48 }finally{ 49 //データベース切断 50 if(conn!=null){ 51 try{ 52 conn.close(); 53 }catch(SQLException e){ 54 e.printStackTrace(); 55 return null; 56 } 57 } 58 } 59 return mutterList; 60 } 61 62 public boolean create(Mutter mutter){ 63 Connection conn=null; 64 try{ 65 //データベースへ接続 66 conn=DriverManager.getConnection(JDBC_URL,DB_USER,DB_PASS); 67 68 //INSERT文の準備 69 String sql="INSERT INTO MUTTER(TEXT)VALUES(?)"; 70 PreparedStatement pStmt=conn.prepareStatement(sql); 71 72 //INSERT文中の「?」二使用する値を設定しSQLを完成 73 pStmt.setString(1, mutter.getText()); 74 75 //INSERT文を実行 76 int result=pStmt.executeUpdate(); 77 78 if(result!=1){ 79 return false; 80 } 81 }catch(SQLException e){ 82 e.printStackTrace(); 83 return false; 84 }finally{ 85 //データベース切断 86 if(conn!=null){ 87 try{ 88 conn.close(); 89 }catch(SQLException e){ 90 e.printStackTrace(); 91 } 92 } 93 } 94 return true; 95 } 96}

//index.jsp

java

1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 4<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 5<html> 6<head> 7<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 8<title>掲示板</title> 9</head> 10<body> 11<h1>掲示板へようこそ</h1> 12<a href="/example14/Main">投稿.閲覧へ</a> 13</body> 14</html>

//Mutter.java

java

1package model; 2 3import java.io.Serializable; 4 5public class Mutter implements Serializable{ 6 7 private String text;//つぶやき内容 8 public Mutter(){} 9 public Mutter(String text){ 10 this.text=text; 11 } 12 public String getText(){return text;} 13 14 }

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

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

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

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

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

guest

回答1

0

ベストアンサー

MutterDAO.javaのDRIVER_NAME="org.h2.Driveer"をDRIVER_NAME="org.h2.Driver"。

投稿2016/04/18 11:11

Cipher0

総合スコア19

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

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

edoooooo

2016/04/18 11:21

膨大なコードの中から探していただき、すみませんでした。  無事エラーが、消えました。本当にありがとうございました。 内容を少しずつレベルアップして、技術を身につけていきます。  ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問