質問編集履歴

3

追加

2019/05/24 05:46

投稿

Yuri0402
Yuri0402

スコア13

test CHANGED
File without changes
test CHANGED
@@ -225,3 +225,259 @@
225
225
  現在、データベースのテーブル作成しました。
226
226
 
227
227
  type_idカラムの値を条件にフィルターファイルでページの振り分けするところで止まっています。
228
+
229
+
230
+
231
+
232
+
233
+
234
+
235
+
236
+
237
+ >4.絞込検索のときにプリペアドステートメントを利用する:prepareStatementの使用
238
+
239
+ ⇒手順4でつまづいてます。
240
+
241
+ PreparedStatement st = con.PreparedStatement(sql);の一行がエラーになります。
242
+
243
+
244
+
245
+ ```java
246
+
247
+
248
+
249
+ package test04;
250
+
251
+
252
+
253
+ import java.sql.Connection;
254
+
255
+ import java.sql.DriverManager;
256
+
257
+ import java.sql.ResultSet;
258
+
259
+ import java.sql.SQLException;
260
+
261
+ import java.sql.Statement;
262
+
263
+
264
+
265
+ /**
266
+
267
+ * localhost上のデータベースと接続し、取得したデータをコンソール出力する。
268
+
269
+ */
270
+
271
+ public class UseJdbc {
272
+
273
+
274
+
275
+ public static void main(String args[]) throws Exception {
276
+
277
+
278
+
279
+ /*接続先サーバー名を"localhost"で与えることを示している*/
280
+
281
+ String servername = "localhost";
282
+
283
+
284
+
285
+ /*接続するデータベース名をsenngokuとしている*/
286
+
287
+ String databasename = "mydb";
288
+
289
+
290
+
291
+ /*データベースの接続に用いるユーザ名をrootユーザとしている*/
292
+
293
+ String user = "root";
294
+
295
+
296
+
297
+ /*データベースの接続に用いるユーザのパスワードを指定している*/
298
+
299
+ String password = "pass";
300
+
301
+
302
+
303
+ /*取り扱う文字コードをUTF-8文字としている*/
304
+
305
+ String serverencoding = "UTF-8";
306
+
307
+
308
+
309
+ /*データベースをあらわすURLを設定している*/
310
+
311
+ String url = "jdbc:mysql://localhost/" + databasename;
312
+
313
+
314
+
315
+ /*MySQLの場合、URLの形式は次のようになります。
316
+
317
+ jdbc:mysql://(サーバ名)/(データベース名)*/
318
+
319
+
320
+
321
+ /*↑データベースをあらわすURL(データベースURL)は、データベースに接続する場合に
322
+
323
+ 必要となる情報をセットした文字列である。
324
+
325
+ この文字列の構造は、"jdbc"、サブプロトコル、サブネームの3つの部分から構成される。*/
326
+
327
+
328
+
329
+ /*接続を表すConnectionオブジェクトを初期化*/
330
+
331
+ Connection con = null;
332
+
333
+
334
+
335
+ try {
336
+
337
+
338
+
339
+ /*クラスローダによりJDBCドライバを読み込んでいることを示している。
340
+
341
+ 引数は、データベースにアクセスするためのJDBCドライバのクラス名である。*/
342
+
343
+ Class.forName("com.mysql.jdbc.Driver").newInstance();
344
+
345
+
346
+
347
+ /*DriverManagerクラスのgetConnectionメソッドを使ってデータベースに接続する。*/
348
+
349
+ con = DriverManager.getConnection(url, user, password);
350
+
351
+
352
+
353
+ System.out.println("Connected....");
354
+
355
+
356
+
357
+ /*データベースの接続後に、sql文をデータベースに直接渡すのではなく、
358
+
359
+ sqlコンテナの役割を果たすオブジェクトに渡すためのStatementオブジェクトを作成する。*/
360
+
361
+ // Statement st = con.createStatement(sql);
362
+
363
+ PreparedStatement st = con.PreparedStatement();
364
+
365
+
366
+
367
+ /*SQL文を作成する*/
368
+
369
+ String sqlStr = "SELECT * FROM mydb.users where name = ?,?;";
370
+
371
+ st.setString(1, "山田太郎");
372
+
373
+
374
+
375
+ /*SQL文を実行した結果セットをResultSetオブジェクトに格納している*/
376
+
377
+ ResultSet result = st.executeQuery(sqlStr);
378
+
379
+
380
+
381
+ /*クエリ結果を1レコードずつ出力していく*/
382
+
383
+ while (result.next()) {
384
+
385
+ /*getString()メソッドは、引数に指定されたフィールド名(列)の値をStringとして取得する*/
386
+
387
+ // String str1 = result.getString("id");
388
+
389
+ String str2 = result.getString("login_id");
390
+
391
+ String str3 = result.getString("login_pass");
392
+
393
+ // String str4 = result.getString("name");
394
+
395
+ // String str5 = result.getString("type_id");
396
+
397
+ // String str6 = result.getString("grouo_id");
398
+
399
+ // String str7 = result.getString("created");
400
+
401
+ // System.out.println(str1 + ", " + str2 + ", " + str3 + "," + str4);
402
+
403
+ System.out.println(str2 + ", " + str3);
404
+
405
+ }
406
+
407
+
408
+
409
+ /*ResultSetオブジェクトを閉じる*/
410
+
411
+ result.close();
412
+
413
+
414
+
415
+ /*Statementオブジェクトを閉じる*/
416
+
417
+ st.close();
418
+
419
+
420
+
421
+ /*Connectionオブジェクトを閉じる*/
422
+
423
+ con.close();
424
+
425
+ } catch (SQLException e) {
426
+
427
+
428
+
429
+ /*エラーメッセージ出力*/
430
+
431
+ System.out.println("Connection Failed. : " + e.toString());
432
+
433
+
434
+
435
+ /*例外を投げちゃうぞ*/
436
+
437
+ throw new Exception();
438
+
439
+
440
+
441
+ } catch (ClassNotFoundException e) {
442
+
443
+
444
+
445
+ /*エラーメッセージ出力*/
446
+
447
+ System.out.println("ドライバを読み込めませんでした " + e);
448
+
449
+ } finally {
450
+
451
+ try {
452
+
453
+ if (con != null) {
454
+
455
+ con.close();
456
+
457
+ }
458
+
459
+ } catch (Exception e) {
460
+
461
+
462
+
463
+ /*エラーメッセージ出力*/
464
+
465
+ System.out.println("Exception2! :" + e.toString());
466
+
467
+
468
+
469
+ /*例外を投げちゃうぞ*/
470
+
471
+ throw new Exception();
472
+
473
+ }
474
+
475
+ }
476
+
477
+ }
478
+
479
+ }
480
+
481
+ コード
482
+
483
+ ```

2

タイトル変更

2019/05/24 05:46

投稿

Yuri0402
Yuri0402

スコア13

test CHANGED
@@ -1 +1 @@
1
- 【java初心者】filterでユーザー振り分けがしたいです。
1
+ filterでユーザー振り分けがしたいです。
test CHANGED
File without changes

1

初心者アイコン追加

2019/05/24 04:23

投稿

Yuri0402
Yuri0402

スコア13

test CHANGED
File without changes
test CHANGED
@@ -14,10 +14,214 @@
14
14
 
15
15
 
16
16
 
17
+ ```sql
18
+
19
+ -- users テーブル作成
20
+
21
+ CREATE TABLE users (
22
+
23
+ id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
24
+
25
+ login_id VARCHAR(50) NOT NULL unique,
26
+
27
+ login_pass VARCHAR(255) NOT NULL,
28
+
29
+ name VARCHAR(50) NOT NULL,
30
+
31
+ type_id INT NOT NULL,
32
+
33
+ group_id INT NOT NULL,
34
+
35
+ created DATETIME NOT NULL
36
+
37
+ );
38
+
39
+ ```
40
+
41
+
42
+
43
+ ```sql
44
+
45
+
46
+
47
+ -- users テーブルサンプル追加 1
48
+
49
+ INSERT INTO mydb.users(login_id, login_pass, name, type_id, group_id, created)
50
+
51
+ VALUES('tarou','taroupass','山田太郎',1,1,'2019-05-02 11:12:00');
52
+
53
+
54
+
55
+ -- users テーブルサンプル追加 2
56
+
57
+ INSERT INTO mydb.users(login_id, login_pass, name, type_id, group_id, created)
58
+
59
+ VALUES('takasi','takasipass','田中隆',2,2,'2019-02-18 05:08:00');
60
+
61
+
62
+
63
+ -- users テーブルサンプル追加 3
64
+
65
+ INSERT INTO mydb.users(login_id, login_pass, name, type_id, group_id, created)
66
+
67
+ VALUES('yuuki','yuukipass','小鳥遊ゆうき',1,3,'2019-01-20 04:30:00');```
68
+
69
+ ```
70
+
71
+
72
+
73
+ ```java
74
+
75
+
76
+
77
+ package filter;
78
+
79
+
80
+
81
+ import java.io.IOException;
82
+
83
+
84
+
85
+ import javax.servlet.Filter;
86
+
87
+ import javax.servlet.FilterChain;
88
+
89
+ import javax.servlet.FilterConfig;
90
+
91
+ import javax.servlet.ServletException;
92
+
93
+ import javax.servlet.ServletRequest;
94
+
95
+ import javax.servlet.ServletResponse;
96
+
17
- ![イメージ説明](8776a0aa5568cc268ac81d3f52687ef7.png)
97
+ import javax.servlet.annotation.WebFilter;
98
+
99
+ import javax.servlet.http.HttpServletRequest;
100
+
101
+ import javax.servlet.http.HttpServletResponse;
102
+
103
+ import javax.servlet.http.HttpSession;
104
+
105
+
106
+
107
+ /**
108
+
109
+ * Servlet Filter implementation class AuthFilter
110
+
111
+ */
112
+
113
+ @WebFilter("/AuthFilter")
114
+
115
+ public class AuthFilter implements Filter {
116
+
117
+
118
+
119
+ /**
120
+
121
+ * Default constructor.
122
+
123
+ */
124
+
125
+ public AuthFilter() {
126
+
127
+ // TODO Auto-generated constructor stub
128
+
129
+ }
130
+
131
+
132
+
133
+ /**
134
+
135
+ * @see Filter#destroy()
136
+
137
+ */
138
+
139
+ public void destroy() {
140
+
141
+ // TODO Auto-generated method stub
142
+
143
+ }
144
+
145
+
146
+
147
+ /**
148
+
149
+ * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
150
+
151
+ */
152
+
153
+ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
154
+
155
+ throws IOException, ServletException {
156
+
157
+ // TODO Auto-generated method stub
158
+
159
+ // place your code here
160
+
161
+
162
+
163
+ HttpServletRequest req = (HttpServletRequest) request;
164
+
165
+ HttpServletResponse res = (HttpServletResponse) response;
166
+
167
+ HttpSession session = req.getSession();
168
+
169
+ String uri = req.getRequestURI();
170
+
171
+ if (!uri.endsWith("/login")) {
172
+
173
+ if (session.getAttribute("loginId") == null) {
174
+
175
+ res.sendRedirect("login");
176
+
177
+ return;
178
+
179
+ }
180
+
181
+ }
182
+
183
+
184
+
185
+ // pass the request along the filter chain
186
+
187
+ chain.doFilter(request, response);
188
+
189
+ }
190
+
191
+
192
+
193
+ /**
194
+
195
+ * @see Filter#init(FilterConfig)
196
+
197
+ */
198
+
199
+ public void init(FilterConfig fConfig) throws ServletException {
200
+
201
+ // TODO Auto-generated method stub
202
+
203
+ }
204
+
205
+
206
+
207
+ }
208
+
209
+
210
+
211
+ ```
18
212
 
19
213
 
20
214
 
21
215
  どのようなコードを書いたらわからないので、教えていただけますと幸いです。
22
216
 
23
217
  ほかに必要な情報がありましたら教えてください。
218
+
219
+
220
+
221
+
222
+
223
+ >追記
224
+
225
+ 現在、データベースのテーブル作成しました。
226
+
227
+ type_idカラムの値を条件にフィルターファイルでページの振り分けするところで止まっています。