質問編集履歴
2
DAO、とShowAllSurveyクラスを少し書き換えました
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,15 +1,11 @@
|
|
1
|
-
別のクラスでhtmlを使い作ったアンケートフォームからアンケートを記入し、その結果を別のページ(ブラウザ?)で以下のように
|
1
|
+
別のクラスでhtmlを使い作ったアンケートフォームからアンケートを記入し、その結果を別のページ(ブラウザ?)で以下のように表示するようにしたいです。
|
2
|
-
例えば
|
3
2
|
名前 性別 満足度 意見 時
|
4
3
|
ーーーーーーーーーーーーーーーーーーーーーーーーー
|
5
4
|
モコ 2 4 楽しかった 2020/01/01
|
6
5
|
ーーーーーーーーーーーーーーーーーーーーーーーーー
|
7
6
|
ポチ 1 2 疲れた 2020/03/15
|
8
|
-
ーーーーーーーーーーーーーーーーーーーーーーーーー
|
7
|
+
ーーーーーーーーーーーーーーーーーーーーーーーーー
|
9
|
-
・
|
10
|
-
・
|
11
|
-
・
|
12
|
-
、とこんな感じに
|
8
|
+
、とこんな感じに結果を表として表示されるようにしたいです。
|
13
9
|
以下ArrayListを使ってやってみましたが、難しかったです…
|
14
10
|
どのように書けばうまくいくでしょうか。。。
|
15
11
|
```java
|
@@ -87,8 +83,7 @@
|
|
87
83
|
System.out.println( " <th>年齢</th> "); // thタグ:見出しを表す(2列目)
|
88
84
|
System.out.println( " <th>性別</th> "); // thタグ:見出しを表す(3列目)
|
89
85
|
System.out.println( " <th>満足度</th> "); // thタグ:見出しを表す(4列目)
|
90
|
-
System.out.println( " <th>ご意見・ご感想</th> "); // thタグ:見出しを表す(5列目
|
86
|
+
System.out.println( " <th>ご意見・ご感想</th> "); // thタグ:見出しを表す(5列目
|
91
|
-
System.out.println( " <th>回答時間</th> "); // thタグ:見出しを表す(6列目)
|
92
87
|
System.out.println( " </tr> "); // trタグ(閉じ)
|
93
88
|
|
94
89
|
for (int i = 0; i < postContentList.size(); i++) {
|
@@ -117,9 +112,45 @@
|
|
117
112
|
```
|
118
113
|
【DAO】
|
119
114
|
```java
|
120
|
-
public static String COMMA = ","; //コンマ(定数)
|
121
|
-
|
115
|
+
package work;
|
122
116
|
|
117
|
+
import java.sql.Connection;
|
118
|
+
import java.sql.DriverManager;
|
119
|
+
import java.sql.PreparedStatement;
|
120
|
+
import java.sql.ResultSet;
|
121
|
+
import java.sql.SQLException;
|
122
|
+
|
123
|
+
/**----------------------------------------------------------------------*
|
124
|
+
*SurveyDaoメソッド
|
125
|
+
*----------------------------------------------------------------------**/
|
126
|
+
public class SurveyDao {
|
127
|
+
//-------------------------------------------
|
128
|
+
//データベースへの接続情報
|
129
|
+
//-------------------------------------------
|
130
|
+
|
131
|
+
//JDBCドライバの相対パス
|
132
|
+
//※バージョンによって変わる可能性があります(MySQL5系の場合は「com.mysql.jdbc.Driver」)
|
133
|
+
String DRIVER_NAME = "com.mysql.cj.jdbc.Driver";
|
134
|
+
|
135
|
+
//接続先のデータベース
|
136
|
+
//※データベース名が「test_db」でない場合は該当の箇所を変更してください
|
137
|
+
String JDBC_URL = "jdbc:mysql://localhost/test_db?characterEncoding=UTF-8&serverTimezone=JST&useSSL=false";
|
138
|
+
|
139
|
+
//接続するユーザー名
|
140
|
+
//※ユーザー名が「test_user」でない場合は該当の箇所を変更してください
|
141
|
+
String USER_ID = "test_user";
|
142
|
+
|
143
|
+
//接続するユーザーのパスワード
|
144
|
+
//※パスワードが「test_pass」でない場合は該当の箇所を変更してください
|
145
|
+
String USER_PASS = "test_pass";
|
146
|
+
|
147
|
+
/**----------------------------------------------------------------------*
|
148
|
+
*doSelectメソッド
|
149
|
+
*----------------------------------------------------------------------**/
|
150
|
+
|
151
|
+
public static String COMMA = ","; //コンマ(定数)
|
152
|
+
public boolean doSelect() {
|
153
|
+
|
123
154
|
//-------------------------------------------
|
124
155
|
//データベースへの接続情報
|
125
156
|
//-------------------------------------------
|
@@ -155,6 +186,7 @@
|
|
155
186
|
Connection con = null ; // Connection(DB接続情報)格納用変数
|
156
187
|
PreparedStatement ps = null ; // PreparedStatement(SQL発行用オブジェクト)格納用変数
|
157
188
|
ResultSet rs = null ; // ResultSet(SQL抽出結果)格納用変数
|
189
|
+
boolean isSuccess = true ;
|
158
190
|
|
159
191
|
try {
|
160
192
|
//-------------------------------------------
|
@@ -168,16 +200,14 @@
|
|
168
200
|
|
169
201
|
//SQL文の生成(SELECT)
|
170
202
|
StringBuffer buf = new StringBuffer() ;
|
171
|
-
buf.append(" SELECT
|
203
|
+
buf.append(" SELECT ");
|
172
|
-
buf.append("
|
204
|
+
buf.append(" NAME , ");
|
173
|
-
buf.append("
|
205
|
+
buf.append(" AGE , ");
|
174
|
-
buf.append("
|
206
|
+
buf.append(" SEX , ");
|
175
|
-
buf.append("
|
207
|
+
buf.append(" SATISFACTION_LEVEL , ");
|
176
|
-
buf.append("
|
208
|
+
buf.append(" MESSAGE ");
|
177
|
-
buf.append(" FROM
|
209
|
+
buf.append(" FROM ");
|
178
|
-
buf.append("
|
210
|
+
buf.append(" SURVEY ");
|
179
|
-
buf.append(" ORDER BY ");
|
180
|
-
buf.append(" name ");
|
181
211
|
|
182
212
|
//PreparedStatementオブジェクトを生成&発行するSQLをセット
|
183
213
|
ps = con.prepareStatement(buf.toString());
|
@@ -204,23 +234,40 @@
|
|
204
234
|
System.out.println(rsbuf.toString());
|
205
235
|
}
|
206
236
|
|
237
|
+
//SQL文の実行
|
238
|
+
ps.executeUpdate();
|
239
|
+
|
207
240
|
} catch (SQLException e) {
|
208
241
|
e.printStackTrace();
|
209
242
|
|
243
|
+
//実行結果を例外発生として更新
|
244
|
+
isSuccess = false ;
|
245
|
+
|
210
246
|
} finally {
|
211
247
|
//-------------------------------------------
|
212
|
-
//
|
248
|
+
//トランザクションの終了
|
213
249
|
//-------------------------------------------
|
250
|
+
if(isSuccess){
|
251
|
+
//明示的にコミットを実施
|
252
|
+
try {
|
253
|
+
con.commit();
|
254
|
+
} catch (SQLException e) {
|
255
|
+
e.printStackTrace();
|
256
|
+
}
|
214
257
|
|
258
|
+
}else{
|
215
|
-
|
259
|
+
//明示的にロールバックを実施
|
216
|
-
if (rs != null) { //接続が確認できている場合のみ実施
|
217
260
|
try {
|
218
|
-
|
261
|
+
con.rollback();
|
219
262
|
} catch (SQLException e) {
|
220
263
|
e.printStackTrace();
|
221
264
|
}
|
222
265
|
}
|
223
266
|
|
267
|
+
//-------------------------------------------
|
268
|
+
//接続の解除
|
269
|
+
//-------------------------------------------
|
270
|
+
|
224
271
|
//PreparedStatementオブジェクトの接続解除
|
225
272
|
if (ps != null) { //接続が確認できている場合のみ実施
|
226
273
|
try {
|
@@ -238,53 +285,14 @@
|
|
238
285
|
e.printStackTrace();
|
239
286
|
}
|
240
287
|
}
|
288
|
+
|
241
289
|
}
|
290
|
+
|
291
|
+
//実行結果を返す
|
292
|
+
return isSuccess;
|
242
293
|
}
|
243
|
-
```
|
244
|
-
【DAO】
|
245
|
-
```java
|
246
|
-
package work;
|
247
294
|
|
248
|
-
import java.sql.Timestamp;
|
249
|
-
public class SurveyDto {
|
250
295
|
|
251
|
-
//----------------------------------------------------------------
|
252
|
-
|
296
|
+
}
|
253
|
-
//----------------------------------------------------------------
|
254
|
-
private String name ; //名前
|
255
|
-
private int age ; //年齢
|
256
|
-
private int sex ; //性別
|
257
|
-
private int satisfactionLevel ; //満足度
|
258
|
-
private String message ; //メッセージ
|
259
|
-
private Timestamp time ; //更新時刻
|
260
297
|
|
261
|
-
//----------------------------------------------------------------
|
262
|
-
//getter/setter
|
263
|
-
//----------------------------------------------------------------
|
264
|
-
|
265
|
-
//getter/setter(対象フィールド:name)
|
266
|
-
public String getName() { return name; }
|
267
|
-
public void setName(String name) { this.name = name; }
|
268
|
-
|
269
|
-
//getter/setter(対象フィールド:age)
|
270
|
-
public int getAge() { return age; }
|
271
|
-
public void setAge(int age) { this.age = age; }
|
272
|
-
|
273
|
-
//getter/setter(対象フィールド:sex)
|
274
|
-
public int getSex() { return sex; }
|
275
|
-
public void setSex(int sex) { this.sex = sex; }
|
276
|
-
|
277
|
-
//getter/setter(対象フィールド:satisfactionLevel)
|
278
|
-
public int getSatisfactionLevel() { return satisfactionLevel; }
|
279
|
-
public void setSatisfactionLevel(int satisfactionLevel) { this.satisfactionLevel = satisfactionLevel; }
|
280
|
-
|
281
|
-
//getter/setter(対象フィールド:message)
|
282
|
-
public String getMessage() { return message; }
|
283
|
-
public void setMessage(String message) { this.message = message; }
|
284
|
-
|
285
|
-
//getter/setter(対象フィールド:time)
|
286
|
-
public Timestamp getTime() { return time; }
|
287
|
-
public void setTime(Timestamp time) { this.time = time; }
|
288
|
-
|
289
|
-
}
|
290
298
|
```
|
1
書いたとおもっていたコードが書けていなかったのでそこを書いてもう一度あげなおしました
title
CHANGED
File without changes
|
body
CHANGED
@@ -16,7 +16,9 @@
|
|
16
16
|
package work;
|
17
17
|
|
18
18
|
import java.io.IOException;
|
19
|
+
import java.sql.Timestamp;
|
19
|
-
import java.
|
20
|
+
import java.util.ArrayList;
|
21
|
+
import java.util.List;
|
20
22
|
|
21
23
|
import javax.servlet.ServletException;
|
22
24
|
import javax.servlet.http.HttpServlet;
|
@@ -41,63 +43,68 @@
|
|
41
43
|
//レスポンスの文字コードを設定
|
42
44
|
response.setContentType("text/html;charset=UTF-8");
|
43
45
|
//リクエスト(受信データ)の文字コードを設定
|
44
|
-
request.setCharacterEncoding("UTF-8");
|
46
|
+
request.setCharacterEncoding("UTF-8");
|
45
47
|
|
46
|
-
//ビジネスロジックを呼び出す
|
47
|
-
BusinessLogic logic_ex = new BusinessLogic();
|
48
|
-
logic_ex.executeSelectSurvey(dto);
|
49
|
-
|
50
48
|
//リクエストパラメータを取得
|
51
49
|
String name = request.getParameter("NAME"); //リクエストパラメータ(NAME)
|
52
|
-
int age = Integer.parseInt(
|
50
|
+
int age = Integer.parseInt(request.getParameter("AGE")) ; //リクエストパラメータ(AGE)
|
53
51
|
int sex = Integer.parseInt( request.getParameter("SEX") ); //リクエストパラメータ(SEX)
|
54
52
|
int satisfactionLevel = Integer.parseInt( request.getParameter("SATISFACTION_LEVEL") ); //リクエストパラメータ(SATISFACTION_LEVEL)
|
55
53
|
String message = request.getParameter("MESSAGE"); //リクエストパラメータ(MESSAGE)
|
54
|
+
|
55
|
+
//アンケートデータ(SurveyDto型)の作成
|
56
|
+
SurveyDto dto = new SurveyDto();
|
57
|
+
dto.setName( name );
|
58
|
+
dto.setAge( age );
|
59
|
+
dto.setSex( sex );
|
60
|
+
dto.setSatisfactionLevel( satisfactionLevel );
|
61
|
+
dto.setMessage( message );
|
62
|
+
dto.setTime( new Timestamp(System.currentTimeMillis()) ); //現在時刻を更新時刻として設定
|
56
63
|
|
64
|
+
//ビジネスロジックを呼び出す
|
65
|
+
BusinessLogic logic_ex = new BusinessLogic();
|
66
|
+
logic_ex.executeSelectSurvey(dto);
|
67
|
+
|
57
68
|
//投稿内容のリスト
|
58
|
-
List<String> postContentList = new ArrayList<String>();
|
69
|
+
List<String> postContentList = new ArrayList<String>() ;
|
59
|
-
postContentList.add( name );
|
70
|
+
postContentList.add( name ) ;
|
60
|
-
postContentList.add( age );
|
71
|
+
postContentList.add( "age" ) ;
|
61
|
-
postContentList.add( sex );
|
72
|
+
postContentList.add( "sex" ) ;
|
62
|
-
postContentList.add(
|
73
|
+
postContentList.add( "satisfaction_level" ) ;
|
63
|
-
postContentList.add( message );
|
74
|
+
postContentList.add( message ) ;
|
64
|
-
|
75
|
+
|
65
76
|
//HTML文書(HTMLテーブル作成Sample画面)の出力
|
66
|
-
|
77
|
+
System.out.println( "<html>" ) ;
|
67
|
-
|
78
|
+
System.out.println( "<head>" ) ;
|
68
|
-
|
79
|
+
System.out.println( "<title>アンケート回答一覧</title>" ) ;
|
80
|
+
System.out.println( "</head>" ) ;
|
81
|
+
System.out.println( "<body>" ) ;
|
82
|
+
System.out.println( "<h2>アンケート回答一覧</h2>" ) ;
|
83
|
+
|
84
|
+
System.out.println( "< table class=\"list\" border=1 id=\"TABLE\"> " ) ;
|
85
|
+
System.out.println( " <tr bgcolor=\"#c0c0c0\"> "); // trタグ:1行分の情報を表す(1行目)
|
86
|
+
System.out.println( " <th>名前</th> "); // thタグ:見出しを表す(1列目)
|
87
|
+
System.out.println( " <th>年齢</th> "); // thタグ:見出しを表す(2列目)
|
88
|
+
System.out.println( " <th>性別</th> "); // thタグ:見出しを表す(3列目)
|
89
|
+
System.out.println( " <th>満足度</th> "); // thタグ:見出しを表す(4列目)
|
90
|
+
System.out.println( " <th>ご意見・ご感想</th> "); // thタグ:見出しを表す(5列目)
|
91
|
+
System.out.println( " <th>回答時間</th> "); // thタグ:見出しを表す(6列目)
|
69
|
-
out.println( "</
|
92
|
+
System.out.println( " </tr> "); // trタグ(閉じ)
|
70
|
-
out.println( "<body> ");
|
71
|
-
out.println( " <h2>ご協力ありがとうございました!</h2> ");
|
72
93
|
|
73
|
-
//--------------▼テーブルの作成▼--------------
|
74
|
-
|
75
|
-
out.println( " <table class=\"list\" border=1 id=\"TABLE\"> "); //tableタグ:テーブル全体を表す
|
76
|
-
out.println( " <tr bgcolor=\"#c0c0c0\"> "); // trタグ:1行分の情報を表す(1行目)
|
77
|
-
out.println( " <th>名前</th> "); // thタグ:見出しを表す(1列目)
|
78
|
-
out.println( " <th>年齢</th> "); // thタグ:見出しを表す(2列目)
|
79
|
-
out.println( " <th>性別</th> "); // thタグ:見出しを表す(3列目)
|
80
|
-
out.println( " <th>満足度</th> "); // thタグ:見出しを表す(4列目)
|
81
|
-
out.println( " <th>ご意見・ご感想</th> "); // thタグ:見出しを表す(5列目)
|
82
|
-
out.println( " <th>回答時間</th> "); // thタグ:見出しを表す(6列目)
|
83
|
-
out.println( " </tr> "); // trタグ(閉じ)
|
84
|
-
|
85
94
|
for (int i = 0; i < postContentList.size(); i++) {
|
86
|
-
|
87
|
-
out.println(" <tr> ");
|
95
|
+
System.out.println(" <tr> ");
|
88
|
-
out.println(" <td>" + postContentList.get(i) + "</td>
|
96
|
+
System.out.println(" <td>" + postContentList.get(i) + "</td> ");
|
89
|
-
out.println(" </tr> ");
|
97
|
+
System.out.println(" </tr> ");
|
98
|
+
|
90
99
|
}
|
100
|
+
|
101
|
+
System.out.println(" </table> ");
|
102
|
+
|
103
|
+
System.out.println(" <a href=\"InputSurvey\">アンケート画面へ戻る</a> "); //前の画面に戻るリンクの設定
|
91
104
|
|
92
|
-
out.println( " </table> "); //tableタグ(閉じ)
|
93
|
-
|
94
|
-
//--------------▲テーブルの作成▲--------------
|
95
|
-
|
96
|
-
out.println(" <a href=\"InputSurvey\">アンケート画面へ戻る</a> "); //前の画面に戻るリンクの設定
|
97
|
-
|
98
|
-
out.println( "</body> ");
|
105
|
+
System.out.println( "</body> ");
|
99
|
-
out.println( "</html> ");
|
106
|
+
System.out.println( "</html> ");
|
100
|
-
|
107
|
+
|
101
108
|
}
|
102
109
|
|
103
110
|
protected void doPost(HttpServletRequest request, HttpServletResponse response)
|
@@ -106,6 +113,7 @@
|
|
106
113
|
}
|
107
114
|
|
108
115
|
}
|
116
|
+
|
109
117
|
```
|
110
118
|
【DAO】
|
111
119
|
```java
|
@@ -238,11 +246,6 @@
|
|
238
246
|
package work;
|
239
247
|
|
240
248
|
import java.sql.Timestamp;
|
241
|
-
|
242
|
-
/**----------------------------------------------------------------------*
|
243
|
-
*■■■SurveyDtoクラス■■■
|
244
|
-
*概要:DTO(「survey」テーブル)
|
245
|
-
*----------------------------------------------------------------------**/
|
246
249
|
public class SurveyDto {
|
247
250
|
|
248
251
|
//----------------------------------------------------------------
|