質問編集履歴

1

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

2022/05/17 11:10

投稿

wassan_nikoniko
wassan_nikoniko

スコア9

test CHANGED
@@ -1 +1 @@
1
- DBにる値をjspで出力したい
1
+ あああああああああああああああああ
test CHANGED
@@ -1,461 +1 @@
1
- DB(mysql)にid (int),age(int),name(varchar)のデータがあり、それを出力しようとすると以下のエラーが出てしまい出力ができません。
2
-
3
-
4
-
5
- ### 発生している問題・エラーメッセージ
6
-
7
-
8
-
9
- ```
10
-
11
- org.apache.jasper.JasperException: [/WEB-INF/jsp/Result.jsp] の処理中に行番号 [11] で例外が発生しました。
12
-
13
-
14
-
15
- 8: </head>
16
-
17
- 9: <body>
18
-
19
- 10: <h1>Result</h1>
1
+ ああああああああああああああああああああああああああああああああああああ
20
-
21
- 11: <p>${userdata.id}</p>
22
-
23
- 12: <p>${userdata.age}</p>
24
-
25
- 13: <p>${userdata.name}</p>
26
-
27
- 14: </body>
28
-
29
-
30
-
31
-
32
-
33
- Stacktrace:
34
-
35
- org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:611)
36
-
37
- org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:500)
38
-
39
- org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:378)
40
-
41
- org.apache.jasper.servlet.JspServlet.service(JspServlet.java:326)
42
-
43
- javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
44
-
45
- org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
46
-
47
- Servlet.Servlet.doGet(Servlet.java:41)
48
-
49
- javax.servlet.http.HttpServlet.service(HttpServlet.java:626)
50
-
51
- javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
52
-
53
- org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
54
-
55
- 根本原因
56
-
57
-
58
-
59
- java.lang.NumberFormatException: For input string: "id"
60
-
61
- java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
62
-
63
- java.base/java.lang.Integer.parseInt(Integer.java:652)
64
-
65
- java.base/java.lang.Integer.parseInt(Integer.java:770)
66
-
67
- javax.el.ListELResolver.coerce(ListELResolver.java:150)
68
-
69
- javax.el.ListELResolver.getValue(ListELResolver.java:67)
70
-
71
- org.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:125)
72
-
73
- org.apache.el.parser.AstValue.getValue(AstValue.java:169)
74
-
75
- org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:190)
76
-
77
- org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:699)
78
-
79
- org.apache.jsp.WEB_002dINF.jsp.Result_jsp._jspService(Result_jsp.java:126)
80
-
81
- org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:71)
82
-
83
- javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
84
-
85
- org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:467)
86
-
87
- org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:378)
88
-
89
- org.apache.jasper.servlet.JspServlet.service(JspServlet.java:326)
90
-
91
- javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
92
-
93
- org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
94
-
95
- Servlet.Servlet.doGet(Servlet.java:41)
96
-
97
- javax.servlet.http.HttpServlet.service(HttpServlet.java:626)
98
-
99
- javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
100
-
101
- org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
102
-
103
- ```
104
-
105
-
106
-
107
- ### 該当のソースコード
108
-
109
-
110
-
111
- ```dao
112
-
113
- package dao;
114
-
115
-
116
-
117
- import java.sql.Connection;
118
-
119
- import java.sql.DriverManager;
120
-
121
- import java.sql.PreparedStatement;
122
-
123
- import java.sql.ResultSet;
124
-
125
- import java.sql.SQLException;
126
-
127
- import java.util.ArrayList;
128
-
129
- import java.util.List;
130
-
131
-
132
-
133
- import dto.dto;
134
-
135
-
136
-
137
- public class dao {
138
-
139
-
140
-
141
- private String url="jdbc:mysql://localhost/selectuser";
142
-
143
- private String user="testuser";
144
-
145
- private String pass="testuser";
146
-
147
- private String sql="select * from users";
148
-
149
-
150
-
151
- public List<dto>findAll(){
152
-
153
- List<dto> userlist=new ArrayList<>();
154
-
155
- try {
156
-
157
- //DBの接続先指定
158
-
159
- Connection conn=DriverManager.getConnection(url,user,pass);
160
-
161
- //sqlの準備
162
-
163
- PreparedStatement ps=conn.prepareStatement(sql);
164
-
165
- //実行してrsに入れ込む(配列の用に入れ込む)
166
-
167
- ResultSet rs=ps.executeQuery();
168
-
169
- //rsに入っている値を取り込む
170
-
171
- while(rs.next()) {
172
-
173
- //dtoのフィールドに入れるためにインスタンス化
174
-
175
- dto userdata=new dto();
176
-
177
- //userdataインスタンス変数に入れ込む
178
-
179
- userdata.setAge(rs.getInt("age"));
180
-
181
- userdata.setId(rs.getInt("id"));
182
-
183
- userdata.setName(rs.getString("name"));
184
-
185
- //反映させる
186
-
187
- userlist.add(userdata);
188
-
189
- }
190
-
191
-
192
-
193
- } catch (SQLException e) {
194
-
195
- e.printStackTrace();
196
-
197
- }
198
-
199
- //終わったらuserlistを返す。
200
-
201
- return userlist;
202
-
203
- }
204
-
205
- }
206
-
207
-
208
-
209
- ```
210
-
211
-
212
-
213
- ```dto
214
-
215
- package dto;
216
-
217
-
218
-
219
- import java.io.Serializable;
220
-
221
-
222
-
223
- public class dto implements Serializable {
224
-
225
- private String name;
226
-
227
- private int age;
228
-
229
- private int id;
230
-
231
-
232
-
233
- public dto() {
234
-
235
- }
236
-
237
-
238
-
239
- public dto(String name, int age, int id) {
240
-
241
- this.age = age;
242
-
243
- this.id = id;
244
-
245
- this.name = name;
246
-
247
- }
248
-
249
-
250
-
251
- public String getName() {
252
-
253
- return name;
254
-
255
- }
256
-
257
-
258
-
259
- public void setName(String name) {
260
-
261
- this.name = name;
262
-
263
- }
264
-
265
-
266
-
267
- public int getAge() {
268
-
269
- return age;
270
-
271
- }
272
-
273
-
274
-
275
- public void setAge(int age) {
276
-
277
- this.age = age;
278
-
279
- }
280
-
281
-
282
-
283
- public int getId() {
284
-
285
- return id;
286
-
287
- }
288
-
289
-
290
-
291
- public void setId(int id) {
292
-
293
- this.id = id;
294
-
295
- }
296
-
297
-
298
-
299
- }
300
-
301
-
302
-
303
- ```
304
-
305
- ```jsp
306
-
307
- <%@ page language="java" contentType="text/html; charset=UTF-8"
308
-
309
- pageEncoding="UTF-8"%>
310
-
311
- <!DOCTYPE html>
312
-
313
- <html>
314
-
315
- <head>
316
-
317
- <meta charset="UTF-8">
318
-
319
- <title></title>
320
-
321
- </head>
322
-
323
- <body>
324
-
325
- <h1>Result</h1>
326
-
327
- <p>${userdata.id}</p>
328
-
329
- <p>${userdata.age}</p>
330
-
331
- <p>${userdata.name}</p>
332
-
333
- </body>
334
-
335
- </html>
336
-
337
- ```
338
-
339
- ```servlet
340
-
341
- package Servlet;
342
-
343
-
344
-
345
- import java.io.IOException;
346
-
347
- import java.util.List;
348
-
349
-
350
-
351
- import javax.servlet.RequestDispatcher;
352
-
353
- import javax.servlet.ServletException;
354
-
355
- import javax.servlet.annotation.WebServlet;
356
-
357
- import javax.servlet.http.HttpServlet;
358
-
359
- import javax.servlet.http.HttpServletRequest;
360
-
361
- import javax.servlet.http.HttpServletResponse;
362
-
363
-
364
-
365
- import dao.dao;
366
-
367
- import dto.dto;
368
-
369
-
370
-
371
- /**
372
-
373
- * Servlet implementation class Servlet
374
-
375
- */
376
-
377
- @WebServlet("/Servlet")
378
-
379
- public class Servlet extends HttpServlet {
380
-
381
- private static final long serialVersionUID = 1L;
382
-
383
-
384
-
385
- /**
386
-
387
- * @see HttpServlet#HttpServlet()
388
-
389
- */
390
-
391
- public Servlet() {
392
-
393
- super();
394
-
395
- // TODO Auto-generated constructor stub
396
-
397
- }
398
-
399
-
400
-
401
- /**
402
-
403
- * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
404
-
405
- */
406
-
407
- protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
408
-
409
- //findAllを使うためにインスタンス化
410
-
411
- dao dao =new dao() ;
412
-
413
- List<dto>userdata=dao.findAll();
414
-
415
- request.setAttribute("userdata", userdata);
416
-
417
-
418
-
419
- RequestDispatcher rd=request.getRequestDispatcher("/WEB-INF/jsp/Result.jsp");
420
-
421
- rd.forward(request, response);
422
-
423
- }
424
-
425
-
426
-
427
- /**
428
-
429
- * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
430
-
431
- */
432
-
433
- protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
434
-
435
- // TODO Auto-generated method stub
436
-
437
- doGet(request, response);
438
-
439
- }
440
-
441
-
442
-
443
- }
444
-
445
-
446
-
447
- ```
448
-
449
- ### 試したこと
450
-
451
-
452
-
453
- DBのデータ型が間違えているのかと思い確認などしたのですが、間違いはない状態でした。
454
-
455
-
456
-
457
- このエラーは本来数値として受け取りたいのに文字列として受け取ってしまっているからエラーが出ているのでしょうか?
458
-
459
- であれば、EL式でのキャストの方法はどのようにして行えばいいのかなど考えているのですが考え方の方向性がわかっておりません。
460
-
461
- ご教授いただければ幸いです。