teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

追加

2019/05/24 05:46

投稿

Yuri0402
Yuri0402

スコア13

title CHANGED
File without changes
body CHANGED
@@ -111,4 +111,132 @@
111
111
 
112
112
  >追記
113
113
  現在、データベースのテーブル作成しました。
114
- type_idカラムの値を条件にフィルターファイルでページの振り分けするところで止まっています。
114
+ type_idカラムの値を条件にフィルターファイルでページの振り分けするところで止まっています。
115
+
116
+
117
+
118
+
119
+ >4.絞込検索のときにプリペアドステートメントを利用する:prepareStatementの使用
120
+ ⇒手順4でつまづいてます。
121
+ PreparedStatement st = con.PreparedStatement(sql);の一行がエラーになります。
122
+
123
+ ```java
124
+
125
+ package test04;
126
+
127
+ import java.sql.Connection;
128
+ import java.sql.DriverManager;
129
+ import java.sql.ResultSet;
130
+ import java.sql.SQLException;
131
+ import java.sql.Statement;
132
+
133
+ /**
134
+ * localhost上のデータベースと接続し、取得したデータをコンソール出力する。
135
+ */
136
+ public class UseJdbc {
137
+
138
+ public static void main(String args[]) throws Exception {
139
+
140
+ /*接続先サーバー名を"localhost"で与えることを示している*/
141
+ String servername = "localhost";
142
+
143
+ /*接続するデータベース名をsenngokuとしている*/
144
+ String databasename = "mydb";
145
+
146
+ /*データベースの接続に用いるユーザ名をrootユーザとしている*/
147
+ String user = "root";
148
+
149
+ /*データベースの接続に用いるユーザのパスワードを指定している*/
150
+ String password = "pass";
151
+
152
+ /*取り扱う文字コードをUTF-8文字としている*/
153
+ String serverencoding = "UTF-8";
154
+
155
+ /*データベースをあらわすURLを設定している*/
156
+ String url = "jdbc:mysql://localhost/" + databasename;
157
+
158
+ /*MySQLの場合、URLの形式は次のようになります。
159
+ jdbc:mysql://(サーバ名)/(データベース名)*/
160
+
161
+ /*↑データベースをあらわすURL(データベースURL)は、データベースに接続する場合に
162
+ 必要となる情報をセットした文字列である。
163
+ この文字列の構造は、"jdbc"、サブプロトコル、サブネームの3つの部分から構成される。*/
164
+
165
+ /*接続を表すConnectionオブジェクトを初期化*/
166
+ Connection con = null;
167
+
168
+ try {
169
+
170
+ /*クラスローダによりJDBCドライバを読み込んでいることを示している。
171
+ 引数は、データベースにアクセスするためのJDBCドライバのクラス名である。*/
172
+ Class.forName("com.mysql.jdbc.Driver").newInstance();
173
+
174
+ /*DriverManagerクラスのgetConnectionメソッドを使ってデータベースに接続する。*/
175
+ con = DriverManager.getConnection(url, user, password);
176
+
177
+ System.out.println("Connected....");
178
+
179
+ /*データベースの接続後に、sql文をデータベースに直接渡すのではなく、
180
+ sqlコンテナの役割を果たすオブジェクトに渡すためのStatementオブジェクトを作成する。*/
181
+ // Statement st = con.createStatement(sql);
182
+ PreparedStatement st = con.PreparedStatement();
183
+
184
+ /*SQL文を作成する*/
185
+ String sqlStr = "SELECT * FROM mydb.users where name = ?,?;";
186
+ st.setString(1, "山田太郎");
187
+
188
+ /*SQL文を実行した結果セットをResultSetオブジェクトに格納している*/
189
+ ResultSet result = st.executeQuery(sqlStr);
190
+
191
+ /*クエリ結果を1レコードずつ出力していく*/
192
+ while (result.next()) {
193
+ /*getString()メソッドは、引数に指定されたフィールド名(列)の値をStringとして取得する*/
194
+ // String str1 = result.getString("id");
195
+ String str2 = result.getString("login_id");
196
+ String str3 = result.getString("login_pass");
197
+ // String str4 = result.getString("name");
198
+ // String str5 = result.getString("type_id");
199
+ // String str6 = result.getString("grouo_id");
200
+ // String str7 = result.getString("created");
201
+ // System.out.println(str1 + ", " + str2 + ", " + str3 + "," + str4);
202
+ System.out.println(str2 + ", " + str3);
203
+ }
204
+
205
+ /*ResultSetオブジェクトを閉じる*/
206
+ result.close();
207
+
208
+ /*Statementオブジェクトを閉じる*/
209
+ st.close();
210
+
211
+ /*Connectionオブジェクトを閉じる*/
212
+ con.close();
213
+ } catch (SQLException e) {
214
+
215
+ /*エラーメッセージ出力*/
216
+ System.out.println("Connection Failed. : " + e.toString());
217
+
218
+ /*例外を投げちゃうぞ*/
219
+ throw new Exception();
220
+
221
+ } catch (ClassNotFoundException e) {
222
+
223
+ /*エラーメッセージ出力*/
224
+ System.out.println("ドライバを読み込めませんでした " + e);
225
+ } finally {
226
+ try {
227
+ if (con != null) {
228
+ con.close();
229
+ }
230
+ } catch (Exception e) {
231
+
232
+ /*エラーメッセージ出力*/
233
+ System.out.println("Exception2! :" + e.toString());
234
+
235
+ /*例外を投げちゃうぞ*/
236
+ throw new Exception();
237
+ }
238
+ }
239
+ }
240
+ }
241
+ コード
242
+ ```

2

タイトル変更

2019/05/24 05:46

投稿

Yuri0402
Yuri0402

スコア13

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

1

初心者アイコン追加

2019/05/24 04:23

投稿

Yuri0402
Yuri0402

スコア13

title CHANGED
File without changes
body CHANGED
@@ -6,7 +6,109 @@
6
6
 
7
7
  ![イメージ説明](9ad7425708e2be2800db372159a295ef.png)
8
8
 
9
+ ```sql
10
+ -- users テーブル作成
11
+ CREATE TABLE users (
9
- ![イメージ説明](8776a0aa5568cc268ac81d3f52687ef7.png)
12
+ id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
13
+ login_id VARCHAR(50) NOT NULL unique,
14
+ login_pass VARCHAR(255) NOT NULL,
15
+ name VARCHAR(50) NOT NULL,
16
+ type_id INT NOT NULL,
17
+ group_id INT NOT NULL,
18
+ created DATETIME NOT NULL
19
+ );
20
+ ```
10
21
 
22
+ ```sql
23
+
24
+ -- users テーブルサンプル追加 1
25
+ INSERT INTO mydb.users(login_id, login_pass, name, type_id, group_id, created)
26
+ VALUES('tarou','taroupass','山田太郎',1,1,'2019-05-02 11:12:00');
27
+
28
+ -- users テーブルサンプル追加 2
29
+ INSERT INTO mydb.users(login_id, login_pass, name, type_id, group_id, created)
30
+ VALUES('takasi','takasipass','田中隆',2,2,'2019-02-18 05:08:00');
31
+
32
+ -- users テーブルサンプル追加 3
33
+ INSERT INTO mydb.users(login_id, login_pass, name, type_id, group_id, created)
34
+ VALUES('yuuki','yuukipass','小鳥遊ゆうき',1,3,'2019-01-20 04:30:00');```
35
+ ```
36
+
37
+ ```java
38
+
39
+ package filter;
40
+
41
+ import java.io.IOException;
42
+
43
+ import javax.servlet.Filter;
44
+ import javax.servlet.FilterChain;
45
+ import javax.servlet.FilterConfig;
46
+ import javax.servlet.ServletException;
47
+ import javax.servlet.ServletRequest;
48
+ import javax.servlet.ServletResponse;
49
+ import javax.servlet.annotation.WebFilter;
50
+ import javax.servlet.http.HttpServletRequest;
51
+ import javax.servlet.http.HttpServletResponse;
52
+ import javax.servlet.http.HttpSession;
53
+
54
+ /**
55
+ * Servlet Filter implementation class AuthFilter
56
+ */
57
+ @WebFilter("/AuthFilter")
58
+ public class AuthFilter implements Filter {
59
+
60
+ /**
61
+ * Default constructor.
62
+ */
63
+ public AuthFilter() {
64
+ // TODO Auto-generated constructor stub
65
+ }
66
+
67
+ /**
68
+ * @see Filter#destroy()
69
+ */
70
+ public void destroy() {
71
+ // TODO Auto-generated method stub
72
+ }
73
+
74
+ /**
75
+ * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
76
+ */
77
+ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
78
+ throws IOException, ServletException {
79
+ // TODO Auto-generated method stub
80
+ // place your code here
81
+
82
+ HttpServletRequest req = (HttpServletRequest) request;
83
+ HttpServletResponse res = (HttpServletResponse) response;
84
+ HttpSession session = req.getSession();
85
+ String uri = req.getRequestURI();
86
+ if (!uri.endsWith("/login")) {
87
+ if (session.getAttribute("loginId") == null) {
88
+ res.sendRedirect("login");
89
+ return;
90
+ }
91
+ }
92
+
93
+ // pass the request along the filter chain
94
+ chain.doFilter(request, response);
95
+ }
96
+
97
+ /**
98
+ * @see Filter#init(FilterConfig)
99
+ */
100
+ public void init(FilterConfig fConfig) throws ServletException {
101
+ // TODO Auto-generated method stub
102
+ }
103
+
104
+ }
105
+
106
+ ```
107
+
11
108
  どのようなコードを書いたらわからないので、教えていただけますと幸いです。
12
- ほかに必要な情報がありましたら教えてください。
109
+ ほかに必要な情報がありましたら教えてください。
110
+
111
+
112
+ >追記
113
+ 現在、データベースのテーブル作成しました。
114
+ type_idカラムの値を条件にフィルターファイルでページの振り分けするところで止まっています。