質問編集履歴

3

やったことの追加

2020/08/31 06:35

投稿

ypk
ypk

スコア83

test CHANGED
File without changes
test CHANGED
@@ -449,3 +449,25 @@
449
449
  }
450
450
 
451
451
  ```
452
+
453
+
454
+
455
+ ###追記
456
+
457
+
458
+
459
+ デバックをしてみた結果、InitializationListener.javaが動いていないことが判明しました。
460
+
461
+
462
+
463
+ ```ここに言語を入力
464
+
465
+ ArrayList<GenreDTO> maingenreList = (ArrayList<GenreDTO>)application.getAttribute("maingenreList");
466
+
467
+ ```
468
+
469
+
470
+
471
+ をしたときにmaingenreListには情報が何もセットされておらずnullになってしまいます。
472
+
473
+ これはいったいどうしてなのでしょうか、、、Tomcatに何か、ソースコードを記述しないといけないのでしょうか。それとも新しい何かをインポートする必要があるのでしょうか、、、、

2

質問の本文修正

2020/08/31 06:35

投稿

ypk
ypk

スコア83

test CHANGED
File without changes
test CHANGED
@@ -48,19 +48,23 @@
48
48
 
49
49
 
50
50
 
51
+
52
+
51
53
  ```ここに言語を入力
52
54
 
53
55
  info.setMainGenresId("000014");
54
56
 
55
57
  ```
56
58
 
59
+
60
+
57
61
  の部分です。
58
62
 
59
63
 
60
64
 
61
65
  ###困っていること
62
66
 
63
- bookList.jspを実行するとJSPを実行すると"HTTPステータス 500"が発生します。
67
+ 現在の私のソースコードでは、bookList.jspを実行すると"HTTPステータス 500"が発生します。
64
68
 
65
69
 
66
70
 
@@ -76,6 +80,10 @@
76
80
 
77
81
  と出力される想定なのですが、、、
78
82
 
83
+ **
84
+
85
+ 理由はbookList.jspを実行した瞬間InitializationListener.javaがDAOからジャンルの情報を取得してくれると解釈しているからです。**
86
+
79
87
 
80
88
 
81
89
  これは

1

修正

2020/08/31 06:20

投稿

ypk
ypk

スコア83

test CHANGED
File without changes
test CHANGED
@@ -32,7 +32,321 @@
32
32
 
33
33
  info.setMainGenresId("000014");
34
34
 
35
+
36
+
37
+
38
+
39
+ //2つ目のメインジャンル情報をDTOにセット
40
+
35
- info.setMainGenresName("1");
41
+ info.setMainGenresId("000014");
42
+
43
+
44
+
45
+ ```
46
+
47
+
48
+
49
+
50
+
51
+ ```ここに言語を入力
52
+
53
+ info.setMainGenresId("000014");
54
+
55
+ ```
56
+
57
+ の部分です。
58
+
59
+
60
+
61
+ ###困っていること
62
+
63
+ bookList.jspを実行するとJSPを実行すると"HTTPステータス 500"が発生します。
64
+
65
+
66
+
67
+ 私の想定では、bookList.jspを実行すると
68
+
69
+
70
+
71
+ > 000014
72
+
73
+ > 000014
74
+
75
+
76
+
77
+ と出力される想定なのですが、、、
78
+
79
+
80
+
81
+ これは
82
+
83
+
84
+
85
+ ```ここに言語を入力
86
+
87
+ ArrayList<GenreDTO> maingenreList = (ArrayList<GenreDTO>)application.getAttribute("maingenreList");
88
+
89
+ ```
90
+
91
+
92
+
93
+ にてGenreDAOにセットした情報をInitializationListener.javaにてセットすることができていないために起きているのでしょうか。それとも、単純にbookList.jspの
94
+
95
+
96
+
97
+ ```ここに言語を入力
98
+
99
+ <% for(int i=0;i<maingenreList.size();++i){
100
+
101
+ GenreDTO info = maingenreList.get(i);
102
+
103
+ %>
104
+
105
+ ```
106
+
107
+ の部分に何かしらの誤りがあるのでしょうか。赤波線などはEclipseでは確認できていません。
108
+
109
+
110
+
111
+ お手数をおかけしますが、どうぞよろしくお願いいたします。
112
+
113
+
114
+
115
+ ###私のソースコード
116
+
117
+
118
+
119
+ ```bookList
120
+
121
+ <%@ page import="java.util.ArrayList" %>
122
+
123
+ <%@ page import="dto.GenreDTO" %>
124
+
125
+ <%@ page import="javax.servlet.ServletContext" %>
126
+
127
+ <%@ page import="javax.servlet.ServletContextEvent" %>
128
+
129
+ <%@ page import="javax.servlet.ServletContextListener" %>
130
+
131
+ <%@ page language="java" contentType="text/html; charset=UTF-8"
132
+
133
+ pageEncoding="UTF-8"%>
134
+
135
+ <!DOCTYPE html>
136
+
137
+ <html>
138
+
139
+ <head>
140
+
141
+ <meta charset="UTF-8">
142
+
143
+ <title>書籍情報一覧画面</title>
144
+
145
+ </head>
146
+
147
+ <body>
148
+
149
+
150
+
151
+ <%
152
+
153
+ ArrayList<GenreDTO> maingenreList = (ArrayList<GenreDTO>)application.getAttribute("maingenreList");
154
+
155
+
156
+
157
+ %>
158
+
159
+
160
+
161
+ <table>
162
+
163
+ <tr>
164
+
165
+ <th>メインジャンルID</th>
166
+
167
+
168
+
169
+
170
+
171
+ </tr>
172
+
173
+
174
+
175
+ <% for(int i=0;i<maingenreList.size();++i){
176
+
177
+ GenreDTO info = maingenreList.get(i);
178
+
179
+ %>
180
+
181
+ <tr>
182
+
183
+ <td>
184
+
185
+ <%= info.getMainGenresId() %>
186
+
187
+ </td>
188
+
189
+
190
+
191
+ </tr>
192
+
193
+ <%}%>
194
+
195
+ </table>
196
+
197
+ </body>
198
+
199
+ </html>
200
+
201
+ ```
202
+
203
+
204
+
205
+ ```InitializationListener
206
+
207
+ package mutual;
208
+
209
+
210
+
211
+ import java.util.ArrayList;
212
+
213
+
214
+
215
+ import javax.servlet.ServletContext;
216
+
217
+ import javax.servlet.ServletContextEvent;
218
+
219
+ import javax.servlet.ServletContextListener;
220
+
221
+
222
+
223
+ import common.LogManager;
224
+
225
+ import dao.GenreDAO;
226
+
227
+ import dto.GenreDTO;
228
+
229
+
230
+
231
+ public class InitializationListener implements ServletContextListener {
232
+
233
+ public void contextInitialized(ServletContextEvent event) {
234
+
235
+
236
+
237
+
238
+
239
+ // ログの出力
240
+
241
+ LogManager lg = new LogManager();
242
+
243
+ lg.outMethodLog("", null);
244
+
245
+
246
+
247
+ ServletContext context = event.getServletContext();
248
+
249
+
250
+
251
+ try {
252
+
253
+
254
+
255
+ GenreDAO bn = new GenreDAO();
256
+
257
+ ArrayList<GenreDTO> maingenreList = bn.searchAllMain();
258
+
259
+
260
+
261
+ // genreListデータをapplicationスコープで保存
262
+
263
+ context.setAttribute("maingenreList", maingenreList);
264
+
265
+
266
+
267
+ ArrayList<GenreDTO> subGenreList = bn.searchAllSub();
268
+
269
+
270
+
271
+ // genreListデータをapplicationスコープで保存
272
+
273
+ context.setAttribute("subGenreList", subGenreList);
274
+
275
+
276
+
277
+ // 投げた例外をException型の変数e1で受取る
278
+
279
+ } catch (Exception e1) {
280
+
281
+ // e1の中には例外に関する情報が詰まっている。それをログで出力してあげる
282
+
283
+ lg.outExceptionLog(e1, null, null);
284
+
285
+
286
+
287
+ }
288
+
289
+ }
290
+
291
+
292
+
293
+ public void contextDestoryed(ServletContextEvent event) {
294
+
295
+ ServletContext context = event.getServletContext();
296
+
297
+ context.removeAttribute("allgenreList"); // 削除処理
298
+
299
+ }
300
+
301
+ }
302
+
303
+
304
+
305
+ ```
306
+
307
+ ```GenreDAO
308
+
309
+ package dao;
310
+
311
+ import java.io.Serializable;
312
+
313
+ import java.sql.SQLException;
314
+
315
+ import java.util.ArrayList;
316
+
317
+
318
+
319
+ import javax.naming.NamingException;
320
+
321
+
322
+
323
+ import dto.GenreDTO;
324
+
325
+
326
+
327
+ public class GenreDAO implements Serializable {
328
+
329
+
330
+
331
+ //セットしたメインジャンル情報を取得
332
+
333
+ public ArrayList<GenreDTO> searchAllMain()
334
+
335
+ throws NamingException,SQLException{
336
+
337
+
338
+
339
+
340
+
341
+ ArrayList<GenreDTO> genre = new ArrayList<GenreDTO>();
342
+
343
+ GenreDTO info = new GenreDTO();
344
+
345
+
346
+
347
+ //一つ目のメインジャンル情報をDTOにセット
348
+
349
+ info.setMainGenresId("000014");
36
350
 
37
351
  genre.add(info);
38
352
 
@@ -42,406 +356,88 @@
42
356
 
43
357
  info.setMainGenresId("000014");
44
358
 
45
- info.setMainGenresName("1");
46
-
47
- genre.add(info);
48
-
49
- ```
50
-
51
-
52
-
53
-
54
-
55
- ```ここに言語を入力
56
-
57
- info.setMainGenresId("000014");
58
-
59
- ```
60
-
61
- の部分です。
62
-
63
-
64
-
65
- ###困っていること
66
-
67
- bookList.jspを実行するとJSPを実行すると"HTTPステータス 500"が発生します。
68
-
69
-
70
-
71
- 私の想定では、bookList.jspを実行すると
72
-
73
-
74
-
75
- > 000014
76
-
77
- > 000014
78
-
79
-
80
-
81
- と出力される想定なのですが、、、
82
-
83
-
84
-
85
- これは
86
-
87
-
88
-
89
- ```ここに言語を入力
90
-
91
- ArrayList<GenreDTO> maingenreList = (ArrayList<GenreDTO>)application.getAttribute("maingenreList");
92
-
93
- ```
94
-
95
-
96
-
97
- にてGenreDAOにセットした情報をInitializationListener.javaにてセットすることができていないために起きているのでしょうか。それとも、単純にbookList.jspの
98
-
99
-
100
-
101
- ```ここに言語を入力
102
-
103
- <% for(int i=0;i<maingenreList.size();++i){
104
-
105
- GenreDTO info = maingenreList.get(i);
106
-
107
- %>
108
-
109
- ```
110
-
111
- の部分に何かしらの誤りがあるのでしょうか。赤波線などはEclipseでは確認できていません。
112
-
113
-
114
-
115
- お手数をおかけしますが、どうぞよろしくお願いいたします。
116
-
117
-
118
-
119
- ###私のソースコード
120
-
121
-
122
-
123
- ```bookList
124
-
125
- <%@ page import="java.util.ArrayList" %>
126
-
127
- <%@ page import="dto.GenreDTO" %>
128
-
129
- <%@ page import="javax.servlet.ServletContext" %>
130
-
131
- <%@ page import="javax.servlet.ServletContextEvent" %>
132
-
133
- <%@ page import="javax.servlet.ServletContextListener" %>
134
-
135
- <%@ page language="java" contentType="text/html; charset=UTF-8"
136
-
137
- pageEncoding="UTF-8"%>
138
-
139
- <!DOCTYPE html>
140
-
141
- <html>
142
-
143
- <head>
144
-
145
- <meta charset="UTF-8">
146
-
147
- <title>書籍情報一覧画面</title>
148
-
149
- </head>
150
-
151
- <body>
152
-
153
-
154
-
155
- <%
156
-
157
- ArrayList<GenreDTO> maingenreList = (ArrayList<GenreDTO>)application.getAttribute("maingenreList");
158
-
159
-
160
-
161
- %>
162
-
163
-
164
-
165
- <table>
166
-
167
- <tr>
168
-
169
- <th>メインジャンルID</th>
170
-
171
-
172
-
173
-
174
-
175
- </tr>
176
-
177
-
178
-
179
- <% for(int i=0;i<maingenreList.size();++i){
180
-
181
- GenreDTO info = maingenreList.get(i);
182
-
183
- %>
184
-
185
- <tr>
186
-
187
- <td>
188
-
189
- <%= info.getMainGenresId() %>
190
-
191
- </td>
192
-
193
-
194
-
195
- </tr>
196
-
197
- <%}%>
198
-
199
- </table>
200
-
201
- </body>
202
-
203
- </html>
204
-
205
- ```
206
-
207
-
208
-
209
- ```InitializationListener
210
-
211
- package mutual;
212
-
213
-
214
-
215
- import java.util.ArrayList;
216
-
217
-
218
-
219
- import javax.servlet.ServletContext;
220
-
221
- import javax.servlet.ServletContextEvent;
222
-
223
- import javax.servlet.ServletContextListener;
224
-
225
-
226
-
227
- import common.LogManager;
228
-
229
- import dao.GenreDAO;
230
-
231
- import dto.GenreDTO;
232
-
233
-
234
-
235
- public class InitializationListener implements ServletContextListener {
236
-
237
- public void contextInitialized(ServletContextEvent event) {
238
-
239
-
240
-
241
-
242
-
243
- // ログの出力
244
-
245
- LogManager lg = new LogManager();
246
-
247
- lg.outMethodLog("", null);
248
-
249
-
250
-
251
- ServletContext context = event.getServletContext();
252
-
253
-
254
-
255
- try {
256
-
257
-
258
-
259
- GenreDAO bn = new GenreDAO();
260
-
261
- ArrayList<GenreDTO> maingenreList = bn.searchAllMain();
262
-
263
-
264
-
265
- // genreListデータをapplicationスコープで保存
266
-
267
- context.setAttribute("maingenreList", maingenreList);
268
-
269
-
270
-
271
- ArrayList<GenreDTO> subGenreList = bn.searchAllSub();
272
-
273
-
274
-
275
- // genreListデータをapplicationスコープで保存
276
-
277
- context.setAttribute("subGenreList", subGenreList);
278
-
279
-
280
-
281
- // 投げた例外をException型の変数e1で受取る
282
-
283
- } catch (Exception e1) {
284
-
285
- // e1の中には例外に関する情報が詰まっている。それをログで出力してあげる
286
-
287
- lg.outExceptionLog(e1, null, null);
288
-
289
-
290
-
291
- }
359
+ genre.add(info);
360
+
361
+
362
+
363
+ // 戻り値の設定
364
+
365
+ return genre;
366
+
367
+
368
+
369
+
292
370
 
293
371
  }
294
372
 
295
373
 
296
374
 
297
- public void contextDestoryed(ServletContextEvent event) {
298
-
299
- ServletContext context = event.getServletContext();
300
-
301
- context.removeAttribute("allgenreList"); // 削除処理
302
-
303
- }
375
+ }
376
+
377
+ ```
378
+
379
+
380
+
381
+ ```GenreDTO
382
+
383
+ package dto;
384
+
385
+
386
+
387
+ import javax.servlet.annotation.WebServlet;
388
+
389
+ /**
390
+
391
+ * Servlet implementation class GenreDTO
392
+
393
+ */
394
+
395
+ @WebServlet("/dto/GenreDTO")
396
+
397
+ // シリアライズを行う
398
+
399
+ public class GenreDTO implements java.io.Serializable{
400
+
401
+
402
+
403
+ //メンバ変数の定義
404
+
405
+ private String main_genres_id;
406
+
407
+
408
+
409
+
410
+
411
+ //---------------------以下getter処理-------------------------------------------------
412
+
413
+
414
+
415
+ //呼び出し元へメインジャンルIDを返す
416
+
417
+ public String getMainGenresId() {
418
+
419
+ return main_genres_id;
420
+
421
+ }
422
+
423
+
424
+
425
+ //---------------------以下setter処理-------------------------------------------------
426
+
427
+
428
+
429
+ //メインジャンルIDに呼び出し元から受け取った値を設定する
430
+
431
+ public void setMainGenresId(String main_genres_id) {
432
+
433
+ this.main_genres_id = main_genres_id;
434
+
435
+ }
436
+
437
+
438
+
439
+
304
440
 
305
441
  }
306
442
 
307
-
308
-
309
- ```
443
+ ```
310
-
311
- ```GenreDAO
312
-
313
- package dao;
314
-
315
- import java.io.Serializable;
316
-
317
- import java.sql.SQLException;
318
-
319
- import java.util.ArrayList;
320
-
321
-
322
-
323
- import javax.naming.NamingException;
324
-
325
-
326
-
327
- import dto.GenreDTO;
328
-
329
-
330
-
331
- public class GenreDAO implements Serializable {
332
-
333
-
334
-
335
- //セットしたメインジャンル情報を取得
336
-
337
- public ArrayList<GenreDTO> searchAllMain()
338
-
339
- throws NamingException,SQLException{
340
-
341
-
342
-
343
-
344
-
345
- ArrayList<GenreDTO> genre = new ArrayList<GenreDTO>();
346
-
347
- GenreDTO info = new GenreDTO();
348
-
349
-
350
-
351
- //一つ目のメインジャンル情報をDTOにセット
352
-
353
- info.setMainGenresId("000014");
354
-
355
- genre.add(info);
356
-
357
-
358
-
359
- //2つ目のメインジャンル情報をDTOにセット
360
-
361
- info.setMainGenresId("000014");
362
-
363
- genre.add(info);
364
-
365
-
366
-
367
- // 戻り値の設定
368
-
369
- return genre;
370
-
371
-
372
-
373
-
374
-
375
- }
376
-
377
-
378
-
379
- }
380
-
381
- ```
382
-
383
-
384
-
385
- ```GenreDTO
386
-
387
- package dto;
388
-
389
-
390
-
391
- import javax.servlet.annotation.WebServlet;
392
-
393
- /**
394
-
395
- * Servlet implementation class GenreDTO
396
-
397
- */
398
-
399
- @WebServlet("/dto/GenreDTO")
400
-
401
- // シリアライズを行う
402
-
403
- public class GenreDTO implements java.io.Serializable{
404
-
405
-
406
-
407
- //メンバ変数の定義
408
-
409
- private String main_genres_id;
410
-
411
-
412
-
413
-
414
-
415
- //---------------------以下getter処理-------------------------------------------------
416
-
417
-
418
-
419
- //呼び出し元へメインジャンルIDを返す
420
-
421
- public String getMainGenresId() {
422
-
423
- return main_genres_id;
424
-
425
- }
426
-
427
-
428
-
429
- //---------------------以下setter処理-------------------------------------------------
430
-
431
-
432
-
433
- //メインジャンルIDに呼び出し元から受け取った値を設定する
434
-
435
- public void setMainGenresId(String main_genres_id) {
436
-
437
- this.main_genres_id = main_genres_id;
438
-
439
- }
440
-
441
-
442
-
443
-
444
-
445
- }
446
-
447
- ```