質問編集履歴

2

2020/08/22 03:31

投稿

ypk
ypk

スコア83

test CHANGED
@@ -1 +1 @@
1
- DTOから取得たデータの取り出方と、プルダウンメニューに新規で文言を追加し
1
+ 間違えて質問した
test CHANGED
File without changes

1

ああああああああああああああああ

2020/08/22 03:31

投稿

ypk
ypk

スコア83

test CHANGED
File without changes
test CHANGED
@@ -1,345 +1 @@
1
- 初めまして。現在Javaの学習をしているものです。
2
-
3
- 現在、下記のようなことを実現できるクラスを作成しようとしています。
4
-
5
-
6
-
7
-
8
-
9
- > ジャンルのプルダウンメニューが必要になった時(プルダウンメニューを表示させる画面(jsp)が表示されたとき)に、毎回毎回ジャンル情報を取得するためにDAOへアクセスせずとも、Webアプリケーション全体でジャンル情報を保存することで、ジャンルに関する情報を各画面(jsp)にて保存できるようにしたい。
10
-
11
-
12
-
13
- *アプリケーション属性の利用
14
-
15
-
16
-
17
-
18
-
19
-
20
-
21
-
22
-
23
- そのために、各画面がジャンル情報を必要としたときにジャンル情報をいつでも取得することができるようなクラスの作成をしています。
24
-
25
-
26
-
27
- ```ここに言語を入力
28
-
29
- ①書籍管理システムの作成をしています。書籍管理システムにて、ジャンル情報が必要になった時にDAOにアクセスし、DAOにジャンルの情報をDTOにセットした後、そのセットしたデータを取得し、画面にて自由に使用することができる機能(InitializationListenerクラス)を作りたい。
30
-
31
-
32
-
33
- ②ジャンル情報を取得したのち、プルダウンメニューを表示させるときに「メインジャンルを選択する」「サブジャンルを選択する」という項目も、DBから取得したジャンル情報に加えてプルダウンメニューに表示させることができるようにしたい。
34
-
35
- ```
36
-
37
-
38
-
39
-
40
-
41
- #分からないこと
42
-
43
-
44
-
45
- **①について**
46
-
47
- 今回の機能を実装させるにあたり、私は下記のようなソースコードを記述しています。
48
-
49
-
50
-
51
-
52
-
53
- ```ここに言語を入力
54
-
55
- // genreListデータをapplicationスコープで保存
56
-
57
- sc.setAttribute("genreList", genreList);
58
-
59
- ```
60
-
61
-
62
-
63
- 私の認識だと、genreListにDTOから取得したジャンル情報がすべて入っているという認識なのですが、genreListから情報を取り出すことで、各画面プルダウンメニューを表示したいときにプルダウンメニューを表示させることができるようになるのでしょうか。そうだとしたら
64
-
65
-
66
-
67
- ```ここに言語を入力
68
-
69
- genreList
70
-
71
- ```
72
-
73
-
74
-
75
- に対して、各画面(JSP)どのようなソースコードを記述してげればプルダウンメニューを表示させることができるのでしょうか。お手数をおかけしますが、ご教示いただけたら幸いです。
1
+ あああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああ
76
-
77
-
78
-
79
-
80
-
81
- **②について**
82
-
83
- 仮に①が解決したとします。ジャンル情報のプルダウンメニューを表示させる際、今回はデフォルトで
84
-
85
-
86
-
87
-
88
-
89
- > 「メインジャンルを選択する」
90
-
91
- > 「サブジャンルを選択する」
92
-
93
-
94
-
95
-
96
-
97
- という文言をデフォルトで挿入している必要があるのですが、これはどのようにすれば実装させることができるのでしょうか。
98
-
99
- 私が今回実装させようとしているInitializationListenerクラスではデフォルトで上記文言を追加することはできないのでプルダウンメニューを表示させる各画面において対応をしなければならない部分になるのでしょうか。
100
-
101
-
102
-
103
- お手数をおかけしますが、ご教授いただけたらと思います。
104
-
105
-
106
-
107
- 質問の仕方が拙いため、修正事項なども大歓迎です。
108
-
109
- どうぞよろしくお願いいたします。
110
-
111
-
112
-
113
-
114
-
115
-
116
-
117
-
118
-
119
- #プルダウンメニューのイメージ
120
-
121
-
122
-
123
- ![イメージ説明](bd70a64567f99b01159fc74b4ad42d39.jpeg)
124
-
125
-
126
-
127
-
128
-
129
- #ジャンル一覧
130
-
131
-
132
-
133
- ![イメージ説明](077df11da71be48dec54b7e4814f8b51.jpeg)
134
-
135
-
136
-
137
-
138
-
139
- #プルダウンメニューを表示させる画面の一例
140
-
141
-
142
-
143
- プルダウンメニューを必要とする画面が表示されたときに、私が作成したクラスがJSPとDAOの仲介役になることで、プルダウンメニューに表示させるジャンル情報を画面が直接取得しに行かずともジャンル情報を取得できるようにしようとしています。
144
-
145
-
146
-
147
- ![イメージ説明](82f3c05d4f0cade8f2333510ae500975.jpeg)
148
-
149
-
150
-
151
-
152
-
153
- #今回私が作成しようとしているクラス(InitializationListener)
154
-
155
-
156
-
157
- ```InitializationListener
158
-
159
- package ???;
160
-
161
-
162
-
163
- import java.io.IOException;
164
-
165
- import java.sql.SQLException;
166
-
167
- import java.util.ArrayList;
168
-
169
-
170
-
171
- import javax.servlet.ServletException;
172
-
173
- import javax.servlet.annotation.WebServlet;
174
-
175
- import javax.servlet.http.HttpServlet;
176
-
177
- import javax.servlet.http.HttpServletRequest;
178
-
179
- import javax.servlet.http.HttpServletResponse;
180
-
181
-
182
-
183
- import common.LoggerTester;
184
-
185
- import dao.GenreDAO;
186
-
187
- import dto.GenreDTO;
188
-
189
-
190
-
191
- @WebServlet("/InitializationListener")
192
-
193
- public class InitializationListener extends HttpServlet {
194
-
195
-
196
-
197
- protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
198
-
199
-
200
-
201
- // リクエストで受け取る文字列符号化方式を指定
202
-
203
- req.setCharacterEncoding("UTF-8");
204
-
205
-
206
-
207
- // ログの出力
208
-
209
- LoggerTester lt = new LoggerTester();
210
-
211
- lt.outActionLog("InitializationListener.java", "処理開始");
212
-
213
-
214
-
215
- GenreDAO bn = new GenreDAO();
216
-
217
- ArrayList<GenreDTO> genreList = bn.selectGenresAll();
218
-
219
-
220
-
221
- // ServletContextインタフェースのオブジェクトを取得
222
-
223
- ServletContext sc = getServletContext();
224
-
225
-
226
-
227
- // genreListデータをapplicationスコープで保存
228
-
229
- sc.setAttribute("genreList", genreList);
230
-
231
-
232
-
233
- }
234
-
235
- }
236
-
237
-
238
-
239
- ```
240
-
241
-
242
-
243
- #上記クラスを使うにあたり使用しているクラス
244
-
245
-
246
-
247
- ```genredao
248
-
249
- package dao;
250
-
251
-
252
-
253
- import java.sql.Connection;
254
-
255
- import java.sql.PreparedStatement;
256
-
257
- import java.sql.ResultSet;
258
-
259
- import java.sql.SQLException;
260
-
261
- import java.util.ArrayList;
262
-
263
-
264
-
265
- import javax.naming.NamingException;
266
-
267
-
268
-
269
- import dto.GenreDTO;
270
-
271
-
272
-
273
- public class GenreDAO extends DAO {
274
-
275
-
276
-
277
- public ArrayList<GenreDTO> selectBooksAll() throws SQLException, NamingException {
278
-
279
- Connection conn = null;
280
-
281
- PreparedStatement pstmt = null;
282
-
283
- ResultSet rset = null;
284
-
285
-
286
-
287
- ArrayList<GenreDTO> list = new ArrayList<GenreDTO>();
288
-
289
-
290
-
291
- /* DAOクラスメソッドの呼び出し */
292
-
293
-
294
-
295
- conn = getConnection();
296
-
297
-
298
-
299
- // SELECT文実行
300
-
301
- String sql = "SELECT maingenresid, maingenresname, subgenresid, subgenresname ";
302
-
303
- pstmt = conn.prepareStatement(sql);
304
-
305
- rset = pstmt.executeQuery();
306
-
307
- // 検索結果の数だけ繰り返す
308
-
309
- while (rset.next()) {
310
-
311
-
312
-
313
- // DBに存在しているジャンル情報を取得
314
-
315
- GenreDTO book = new GenreDTO();
316
-
317
- genre.setmainGenresID(rset.getString("maingenresid"));
318
-
319
- genre.setmainGenresName(rset.getString("maingenresname"));
320
-
321
- genre.setsubGenresID(rset.getString("subgenresid"));
322
-
323
- genre.setsubGenresName(rset.getString("subgenresname"));
324
-
325
-
326
-
327
- // リストに追加
328
-
329
- list.add(genre);
330
-
331
- }
332
-
333
-
334
-
335
- return list;
336
-
337
-
338
-
339
- }
340
-
341
-
342
-
343
- }
344
-
345
- ```