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

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

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

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

Java

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

Eclipse

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

1回答

1782閲覧

答えてもらったアンケートを表にして、さらに回答してもらった順番に上から並べたい

chimo

総合スコア55

MySQL

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

Java

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

Eclipse

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/03/21 12:15

編集2020/03/23 03:08

別のクラスでhtmlを使い作ったアンケートフォームからアンケートを記入し、その結果を別のページ(ブラウザ?)で以下のように表示するようにしたいです。
名前  性別  満足度  意見    時
ーーーーーーーーーーーーーーーーーーーーーーーーー
モコ   2   4   楽しかった 2020/01/01
ーーーーーーーーーーーーーーーーーーーーーーーーー
ポチ   1   2   疲れた   2020/03/15
ーーーーーーーーーーーーーーーーーーーーーーーーー           
、とこんな感じに結果を表として表示されるようにしたいです。
以下ArrayListを使ってやってみましたが、難しかったです…
どのように書けばうまくいくでしょうか。。。

java

1package work; 2 3import java.io.IOException; 4import java.sql.Timestamp; 5import java.util.ArrayList; 6import java.util.List; 7 8import javax.servlet.ServletException; 9import javax.servlet.http.HttpServlet; 10import javax.servlet.http.HttpServletRequest; 11import javax.servlet.http.HttpServletResponse; 12 13/**----------------------------------------------------------------------* 14 *■■■ShowAllSurveyクラス■■■ 15 *概要:サーブレット 16 *詳細:HTML文書(回答入力画面の結果)を出力する。 17 *----------------------------------------------------------------------**/ 18public class ShowAllSurvey extends HttpServlet { 19 private static final long serialVersionUID = 1L; 20 21 public ShowAllSurvey() { 22 super(); 23 } 24 25 protected void doGet(HttpServletRequest request, HttpServletResponse response) 26 throws ServletException, IOException { 27 28 //レスポンスの文字コードを設定 29 response.setContentType("text/html;charset=UTF-8"); 30 //リクエスト(受信データ)の文字コードを設定 31 request.setCharacterEncoding("UTF-8"); 32 33 //リクエストパラメータを取得 34 String name = request.getParameter("NAME"); //リクエストパラメータ(NAME) 35 int age = Integer.parseInt(request.getParameter("AGE")) ; //リクエストパラメータ(AGE) 36 int sex = Integer.parseInt( request.getParameter("SEX") ); //リクエストパラメータ(SEX) 37 int satisfactionLevel = Integer.parseInt( request.getParameter("SATISFACTION_LEVEL") ); //リクエストパラメータ(SATISFACTION_LEVEL) 38 String message = request.getParameter("MESSAGE"); //リクエストパラメータ(MESSAGE) 39 40 //アンケートデータ(SurveyDto型)の作成 41 SurveyDto dto = new SurveyDto(); 42 dto.setName( name ); 43 dto.setAge( age ); 44 dto.setSex( sex ); 45 dto.setSatisfactionLevel( satisfactionLevel ); 46 dto.setMessage( message ); 47 dto.setTime( new Timestamp(System.currentTimeMillis()) ); //現在時刻を更新時刻として設定 48 49 //ビジネスロジックを呼び出す 50 BusinessLogic logic_ex = new BusinessLogic(); 51 logic_ex.executeSelectSurvey(dto); 52 53 //投稿内容のリスト 54 List<String> postContentList = new ArrayList<String>() ; 55 postContentList.add( name ) ; 56 postContentList.add( "age" ) ; 57 postContentList.add( "sex" ) ; 58 postContentList.add( "satisfaction_level" ) ; 59 postContentList.add( message ) ; 60 61 //HTML文書(HTMLテーブル作成Sample画面)の出力 62 System.out.println( "<html>" ) ; 63 System.out.println( "<head>" ) ; 64 System.out.println( "<title>アンケート回答一覧</title>" ) ; 65 System.out.println( "</head>" ) ; 66 System.out.println( "<body>" ) ; 67 System.out.println( "<h2>アンケート回答一覧</h2>" ) ; 68 69 System.out.println( "< table class=\"list\" border=1 id=\"TABLE\"> " ) ; 70 System.out.println( " <tr bgcolor=\"#c0c0c0\"> "); // trタグ:1行分の情報を表す(1行目) 71 System.out.println( " <th>名前</th> "); // thタグ:見出しを表す(1列目) 72 System.out.println( " <th>年齢</th> "); // thタグ:見出しを表す(2列目) 73 System.out.println( " <th>性別</th> "); // thタグ:見出しを表す(3列目) 74 System.out.println( " <th>満足度</th> "); // thタグ:見出しを表す(4列目) 75 System.out.println( " <th>ご意見・ご感想</th> "); // thタグ:見出しを表す(5列目 76 System.out.println( " </tr> "); // trタグ(閉じ) 77 78 for (int i = 0; i < postContentList.size(); i++) { 79 System.out.println(" <tr> "); 80 System.out.println(" <td>" + postContentList.get(i) + "</td> "); 81 System.out.println(" </tr> "); 82 83 } 84 85 System.out.println(" </table> "); 86 87 System.out.println(" <a href=\"InputSurvey\">アンケート画面へ戻る</a> "); //前の画面に戻るリンクの設定 88 89 System.out.println( "</body> "); 90 System.out.println( "</html> "); 91 92 } 93 94 protected void doPost(HttpServletRequest request, HttpServletResponse response) 95 throws ServletException, IOException { 96 doGet(request, response); 97 } 98 99} 100

【DAO】

java

1package work; 2 3import java.sql.Connection; 4import java.sql.DriverManager; 5import java.sql.PreparedStatement; 6import java.sql.ResultSet; 7import java.sql.SQLException; 8 9/**----------------------------------------------------------------------* 10 *SurveyDaoメソッド 11 *----------------------------------------------------------------------**/ 12public class SurveyDao { 13 //------------------------------------------- 14 //データベースへの接続情報 15 //------------------------------------------- 16 17 //JDBCドライバの相対パス 18 //※バージョンによって変わる可能性があります(MySQL5系の場合は「com.mysql.jdbc.Driver」) 19 String DRIVER_NAME = "com.mysql.cj.jdbc.Driver"; 20 21 //接続先のデータベース 22 //※データベース名が「test_db」でない場合は該当の箇所を変更してください 23 String JDBC_URL = "jdbc:mysql://localhost/test_db?characterEncoding=UTF-8&serverTimezone=JST&useSSL=false"; 24 25 //接続するユーザー名 26 //※ユーザー名が「test_user」でない場合は該当の箇所を変更してください 27 String USER_ID = "test_user"; 28 29 //接続するユーザーのパスワード 30 //※パスワードが「test_pass」でない場合は該当の箇所を変更してください 31 String USER_PASS = "test_pass"; 32 33 /**----------------------------------------------------------------------* 34 *doSelectメソッド 35 *----------------------------------------------------------------------**/ 36 37 public static String COMMA = ","; //コンマ(定数) 38 public boolean doSelect() { 39 40 //------------------------------------------- 41 //データベースへの接続情報 42 //------------------------------------------- 43 44 //JDBCドライバの相対パス 45 //※バージョンによって変わる可能性があります(MySQL5系の場合は「com.mysql.jdbc.Driver」) 46 String driverName = "com.mysql.cj.jdbc.Driver"; 47 48 //接続先のデータベース 49 //※データベース名が「test_db」でない場合は該当の箇所を変更してください 50 String jdbcUrl = "jdbc:mysql://localhost/test_db?characterEncoding=UTF-8&serverTimezone=JST&useSSL=false"; 51 52 //接続するユーザー名 53 //※ユーザー名が「test_user」でない場合は該当の箇所を変更してください 54 String userId = "test_user"; 55 56 //接続するユーザーのパスワード 57 //※パスワードが「test_pass」でない場合は該当の箇所を変更してください 58 String userPass = "test_pass"; 59 60 //------------------------------------------- 61 //① JDBCドライバのロード 62 //------------------------------------------- 63 try { 64 Class.forName(driverName); //JDBCドライバをロード&接続先として指定 65 } catch (ClassNotFoundException e) { 66 e.printStackTrace(); 67 } 68 69 70 //JDBCの接続に使用するオブジェクトを宣言 71 //※finallyブロックでも扱うためtryブロック内で宣言してはいけないことに注意 72 Connection con = null ; // Connection(DB接続情報)格納用変数 73 PreparedStatement ps = null ; // PreparedStatement(SQL発行用オブジェクト)格納用変数 74 ResultSet rs = null ; // ResultSet(SQL抽出結果)格納用変数 75 boolean isSuccess = true ; 76 77 try { 78 //------------------------------------------- 79 // ②接続の確立(Connectionオブジェクトの取得) 80 //------------------------------------------- 81 con = DriverManager.getConnection(jdbcUrl, userId, userPass); 82 83 //------------------------------------------- 84 // ③SQL文の送信 & ④抽出結果の取得 85 //------------------------------------------- 86 87 //SQL文の生成(SELECT) 88 StringBuffer buf = new StringBuffer() ; 89 buf.append(" SELECT "); 90 buf.append(" NAME , "); 91 buf.append(" AGE , "); 92 buf.append(" SEX , "); 93 buf.append(" SATISFACTION_LEVEL , "); 94 buf.append(" MESSAGE "); 95 buf.append(" FROM "); 96 buf.append(" SURVEY "); 97 98 //PreparedStatementオブジェクトを生成&発行するSQLをセット 99 ps = con.prepareStatement(buf.toString()); 100 101 //SQL文の送信&抽出結果(ResultSetオブジェクト)の取得 102 rs = ps.executeQuery(); 103 104 //ResultSetオブジェクトから1レコードずつデータを取得&加工&表示する 105 while (rs.next()) { 106 107 //1レコード分のデータを取得&加工(各カラムをコンマ綴りで結合) 108 StringBuffer rsbuf = new StringBuffer(); 109 rsbuf.append(rs.getString("name")); 110 rsbuf.append(COMMA); 111 rsbuf.append(rs.getString("age")); 112 rsbuf.append(COMMA); 113 rsbuf.append(rs.getString("sex")); 114 rsbuf.append(COMMA); 115 rsbuf.append(rs.getString("satisfaction_level")); 116 rsbuf.append(COMMA); 117 rsbuf.append(rs.getString("message")); 118 119 //加工作成した1レコード分のデータを表示 120 System.out.println(rsbuf.toString()); 121 } 122 123 //SQL文の実行 124 ps.executeUpdate(); 125 126 } catch (SQLException e) { 127 e.printStackTrace(); 128 129 //実行結果を例外発生として更新 130 isSuccess = false ; 131 132 } finally { 133 //------------------------------------------- 134 //トランザクションの終了 135 //------------------------------------------- 136 if(isSuccess){ 137 //明示的にコミットを実施 138 try { 139 con.commit(); 140 } catch (SQLException e) { 141 e.printStackTrace(); 142 } 143 144 }else{ 145 //明示的にロールバックを実施 146 try { 147 con.rollback(); 148 } catch (SQLException e) { 149 e.printStackTrace(); 150 } 151 } 152 153 //------------------------------------------- 154 //接続の解除 155 //------------------------------------------- 156 157 //PreparedStatementオブジェクトの接続解除 158 if (ps != null) { //接続が確認できている場合のみ実施 159 try { 160 ps.close(); //接続の解除 161 } catch (SQLException e) { 162 e.printStackTrace(); 163 } 164 } 165 166 //Connectionオブジェクトの接続解除 167 if (con != null) { //接続が確認できている場合のみ実施 168 try { 169 con.close(); //接続の解除 170 } catch (SQLException e) { 171 e.printStackTrace(); 172 } 173 } 174 175 } 176 177 //実行結果を返す 178 return isSuccess; 179 } 180 181 182 } 183

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

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

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

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

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

m.ts10806

2020/03/21 12:48

name昇順で取得されてるみたいですが、この順番ではないということでしょうか。
m.ts10806

2020/03/21 12:50

あぁタイトルにありましたね。失礼
guest

回答1

0

回答してもらった順であればtimeの降順でselectすれば良いのでは?

投稿2020/03/21 12:50

m.ts10806

総合スコア80850

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

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

chimo

2020/03/21 13:13

ordered by timeにしても結果は変わりませんでした...。「The origin server did not find a current representation for the target resource or is not willing to disclose that one exists」という内容のエラーがでます...。ほかにもShowAllSurvey.java以外にもSaveSurveyクラスやInputSurveyクラス、web.xmlも作りました。全て現時点でEclipse上で何のエラーも出ていないのですが、エラーが出てしまいます...。見当がつきません...。
chimo

2020/03/21 13:35

再度失礼します。 起動の順番を間違えていました。 正しい順番で起動すると以下のようなエラーが出てきました。 (追記として編集したかったのですが字数の問題でここに失礼します) 【エラー内容】 Type Exception Report Message null Description The server encountered an unexpected condition that prevented it from fulfilling the request. Exception java.lang.NumberFormatException: null java.lang.Integer.parseInt(Integer.java:542) java.lang.Integer.parseInt(Integer.java:615) work.SaveSurvey.doPost(SaveSurvey.java:40) work.SaveSurvey.doGet(SaveSurvey.java:26) javax.servlet.http.HttpServlet.service(HttpServlet.java:634) javax.servlet.http.HttpServlet.service(HttpServlet.java:741) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) Note The full stack trace of the root cause is available in the server logs. いつも見る感じのエラーとすこし違う感じがします。。。どういう意味なのでしょう...。
javahack

2020/03/21 17:55

横から失礼します。 Integer.parseInt()の引数には数字として変換可能な文字列を渡す必要があります。エラーメッセージを見ると3つのInteger.parseInt()のどれかでnullを渡しているのが原因です。 それよりも、この質問の解決をほったらかしにして新たな質問を立てるのはどうかと思いますが。 https://teratail.com/questions/248584
m.ts10806

2020/03/21 21:38

降順ですしコード間違えてます。思った通りに書くのではなくドキュメントも確認されたほうが良いです。 order by time desc 昇順でもascはなるべく省略しない方が良いです。
chimo

2020/03/22 01:53

失礼いたしました。了解しました。回答ありがとうございました。
chimo

2020/03/23 01:54

まだ解決していないです...。今もこのプログラムと戦っている最中です。でも解決していない状態で新しい質問をしたらコメントで怒られてしまったのでやむをえず解決済みにしました。ごめんなさい。
m.ts10806

2020/03/23 01:56

解決してないのに解決済みにするのは問題です。 同じような問題を抱えた誰かが見たときに解決済みとなっていたら解決策が書いてあることを期待しますよね。 受付中に戻してください。
m.ts10806

2020/03/23 02:00

javahackさんの指摘は「解決してなくても解決済みにしろ」というものではなく、「きちんとこちらを解決済みにしてください」ということです。 問題と言うのは連動性があるものも多いです。もしかしたらこの問題を解決していたら出てこなかったはずの疑問もあったかもしれません。 正しい対応は投稿してしまった質問を削除、削除依頼できなければ一度止めて、こちらの問題の解決に注力することです。
chimo

2020/03/23 02:04

前に、同じプログラムであっても新しい内容の質問をしたい場合は追記ではなく新しく質問を投稿するのが礼儀だとどなたかにいわれましたので、今回そうすることにしてしまいました。もしいまも同じプログラムのことで新しい疑問がでてきたらどうすればよいですか
m.ts10806

2020/03/23 02:13

問題が解決するかどうかですね。 解決してないなら次々立てるのはマナーとしてはよくないと思います。 基本的に人間はシングルタスクですし、片方放置されることにもなり。解決する気がないと捉えられることもあるので。 あとは「新しい質問」の内容によりです。流れが同じであればその場で解決した方があとから見る人の役にもたちます。 思考停止でとにかく新しく立てるのではなく、都度相談されては如何でしょう。 それに自身で何も試行錯誤せずに質問たてては成長にはつながりません。 回答者はあくまで赤の他人。赤の他人の時間を使うことになるわけですから、一定の配慮は必要です。
chimo

2020/03/23 02:30

なるほど、わかりました。次からは回答してくださった方に追記で質問をしてもよいか聞いてみることにします。アドバイスありがとうございます。 それと、さきほどコメントを読み直していて気になったのですが、「降順ですし、コード間違えてます」とおっしゃっていたところに戻るのですが、「コード間違えている」というのはどの部分でしょうか発行するSQL文全体の書き方ですか?それともDAOのコード全体でしょうか?
m.ts10806

2020/03/23 02:35

>ordered by time ordered はORACLEのヒント句です(私は使用したことないですけど)。 ascもdescも指定しなければデフォルトはascなので昇順になります。
chimo

2020/03/23 02:48

>ordered by time order by ではなかったでしょうか?
m.ts10806

2020/03/23 02:51

ご自身が投稿された 2020/03/21 22:13 のコメントをよく読んでください。
chimo

2020/03/23 03:10

>調べましたがorder by が正しい構文です。
chimo

2020/03/23 03:13

>時間別ではなくいいので、もうとにかくShowAllSurveyクラスがちゃんと実行されて、時間以外の項目がセレクト文により抜き出されてブラウザ上に表示されるようにしたいです。となると、質問内容が変わってしまいますので、新しく質問をしようと思います。
m.ts10806

2020/03/23 04:07

引用なのか自身のコメントなのかわかりません。 通常 > がついていると引用だと理解します。 ちなみに私が指摘しているchimoさんのコメントは下記。 >ordered by timeにしても結果は変わりませんでした...。
m.ts10806

2020/03/23 04:13

「ちゃんと」を具体的に書かないとその部分に指摘がくることになるのでご注意を。 いずれにしても回答者は別に質問者の問題が解決しなくても困らないので、コミュニケーションロスがおきないようにだけ注意してご自由にどうぞ。 質問が未解決で放置されればされるほど回答者はその姿勢をよく見るので、そこもご注意を。
m.ts10806

2020/03/23 21:19

ベストアンサー取り消して低評価ですかね。 ちょっとやり方として感心できませんね。 問題解決しなくてもいいと、投げだしたと解釈しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問