質問編集履歴
6
修正しました。
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
Javaで
|
1
|
+
Javaでの不具合となります。
|
test
CHANGED
@@ -73,11 +73,6 @@
|
|
73
73
|
return Comment;
|
74
74
|
}
|
75
75
|
}
|
76
|
-
```
|
77
|
-
```Controller
|
78
|
-
package controller;
|
79
|
-
|
80
|
-
|
81
76
|
### 試したこと
|
82
77
|
|
83
78
|
IDとPWが違います。と表示されてしまいます。
|
5
不要な部分は削除しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -16,13 +16,9 @@
|
|
16
16
|
### 発生している問題・エラーメッセージ
|
17
17
|
|
18
18
|
データベースに入っている人のid・パスワードで入力しても反応なし。
|
19
|
-
ログイン時間をUPDATEする機能があり、それは反映されている模様
|
20
|
-
すなわち反映してから, その後データを取りにいけていないのではないか
|
21
19
|
|
22
20
|
### 該当のソースコード
|
23
21
|
|
24
|
-
```EmployeeBea
|
25
|
-
package bean;
|
26
22
|
|
27
23
|
/**
|
28
24
|
* ・社員情報データ(モデル)
|
@@ -81,274 +77,9 @@
|
|
81
77
|
```Controller
|
82
78
|
package controller;
|
83
79
|
|
84
|
-
/**
|
85
|
-
* 社員情報管理コントローラー
|
86
|
-
*
|
87
|
-
*/
|
88
80
|
|
89
|
-
import java.io.IOException;
|
90
|
-
|
91
|
-
import javax.servlet.RequestDispatcher;
|
92
|
-
import javax.servlet.ServletContext;
|
93
|
-
import javax.servlet.ServletException;
|
94
|
-
import javax.servlet.http.HttpServlet;
|
95
|
-
import javax.servlet.http.HttpServletRequest;
|
96
|
-
import javax.servlet.http.HttpServletResponse;
|
97
|
-
|
98
|
-
import bean.EmployeeBean;
|
99
|
-
import service.EmployeeService;
|
100
|
-
|
101
|
-
public class EmployeeController extends HttpServlet {
|
102
|
-
public void doPost(HttpServletRequest request, HttpServletResponse response)
|
103
|
-
throws ServletException, IOException {
|
104
|
-
|
105
|
-
try {
|
106
|
-
String id = request.getParameter("id");
|
107
|
-
String password = request.getParameter("pass");
|
108
|
-
|
109
|
-
EmployeeService emps = new EmployeeService();
|
110
|
-
|
111
|
-
EmployeeBean rtnDate = emps.search(id, password);
|
112
|
-
request.setAttribute("EmployeeBean", rtnDate);
|
113
|
-
|
114
|
-
} catch (Exception e) {
|
115
|
-
e.printStackTrace();
|
116
|
-
} finally {
|
117
|
-
ServletContext context = this.getServletContext();
|
118
|
-
RequestDispatcher dispatcher = context.getRequestDispatcher("/index.jsp");
|
119
|
-
dispatcher.forward(request, response);
|
120
|
-
}
|
121
|
-
}
|
122
|
-
}
|
123
|
-
|
124
|
-
```
|
125
|
-
```EmployeeService
|
126
|
-
package service;
|
127
|
-
|
128
|
-
import java.sql.Connection;
|
129
|
-
import java.sql.DriverManager;
|
130
|
-
import java.sql.PreparedStatement;
|
131
|
-
import java.sql.ResultSet;
|
132
|
-
import java.sql.SQLException;
|
133
|
-
import java.sql.Statement;
|
134
|
-
import java.text.SimpleDateFormat;
|
135
|
-
import java.util.Calendar;
|
136
|
-
|
137
|
-
import bean.EmployeeBean;
|
138
|
-
|
139
|
-
/**
|
140
|
-
* ・社員情報検索サービス
|
141
|
-
*
|
142
|
-
*/
|
143
|
-
|
144
|
-
public class EmployeeService {
|
145
|
-
|
146
|
-
/** ドライバーのクラス名 */
|
147
|
-
private static final String POSTGRES_DRIVER = "org.postgresql.Driver";
|
148
|
-
/**
|
149
|
-
|
150
|
-
private static final String JDBC_CONNECTION = "jdbc:postgresql://localhost:5432/Employee";
|
151
|
-
/** ・ユーザー名 */
|
152
|
-
private static final String USER = "postgres";
|
153
|
-
/** ・パスワード */
|
154
|
-
private static final String PASS = "postgres";
|
155
|
-
/** ・タイムフォーマット */
|
156
|
-
private static final String TIME_FORMAT = "yyyy/MM/dd HH:mm:ss";
|
157
|
-
|
158
|
-
/** ・SQL UPDATE文 */
|
159
|
-
private static final String SQL_UPDATE = "UPDATE employee_table SET login_time = ? WHERE id = ?";
|
160
|
-
|
161
|
-
/** ・SQL SELECT文 */
|
162
|
-
private static final String SQL_SELECT = "SELECT * FROM employee_table WHERE id = '?' AND password = '?'" ;
|
163
|
-
|
164
|
-
EmployeeBean employeeData = null;
|
165
|
-
|
166
|
-
// 送信されたIDとPassWordを元に社員情報を検索するためのメソッド
|
167
|
-
public EmployeeBean search(String id, String password) {
|
168
|
-
|
169
|
-
Connection connection = null;
|
170
|
-
Statement statement = null;
|
171
|
-
ResultSet resultSet = null;
|
172
|
-
PreparedStatement preparedStatement = null;
|
173
|
-
|
174
|
-
try {
|
175
|
-
// データベースに接続
|
176
|
-
Class.forName(POSTGRES_DRIVER);
|
177
|
-
connection = DriverManager.getConnection(JDBC_CONNECTION, USER, PASS);
|
178
|
-
statement = connection.createStatement();
|
179
|
-
|
180
|
-
// 処理が流れた時間をフォーマットに合わせて生成
|
181
|
-
Calendar cal = Calendar.getInstance();
|
182
|
-
SimpleDateFormat sdFormat = new SimpleDateFormat(TIME_FORMAT);
|
183
|
-
|
184
|
-
// PreparedStatementで使用するため、String型に変換
|
185
|
-
String login_time = sdFormat.format(cal.getTime());
|
186
|
-
|
187
|
-
/*
|
188
|
-
* 任意のユーザーのログインタイムを更新できるように、プリペアドステートメントを記述。
|
189
|
-
*/
|
190
|
-
|
191
|
-
// preparedStatementに実行したいSQLを格納
|
192
|
-
preparedStatement = connection.prepareStatement(SQL_UPDATE);
|
193
|
-
|
194
|
-
preparedStatement.setString(1, login_time);
|
195
|
-
preparedStatement.setString(2, id);
|
196
|
-
|
197
|
-
preparedStatement.executeUpdate();
|
198
|
-
/*
|
199
|
-
* UPDATEが成功したものを即座に表示
|
200
|
-
* 任意のユーザーを検索できるように、プリペアドステートメントを記述。
|
201
|
-
*/
|
202
|
-
preparedStatement = connection.prepareStatement(SQL_SELECT);
|
203
|
-
|
204
|
-
preparedStatement.setString(1,id);
|
205
|
-
preparedStatement.setString(2,password);
|
206
|
-
|
207
|
-
// SQLを実行。実行した結果をresultSetに格納。
|
208
|
-
resultSet = preparedStatement.executeQuery();
|
209
|
-
|
210
|
-
while (resultSet.next()) {
|
211
|
-
|
212
|
-
String tmpName = resultSet.getString("name");
|
213
|
-
String tmpComment = resultSet.getString("comment");
|
214
|
-
String tmpLoginTime = resultSet.getString("login_time");
|
215
|
-
|
216
|
-
employeeData = new EmployeeBean();
|
217
|
-
employeeData.setName(tmpName);
|
218
|
-
employeeData.setComment(tmpComment);
|
219
|
-
employeeData.setLogin_Time(tmpLoginTime);
|
220
|
-
}
|
221
|
-
|
222
|
-
// forName()で例外発生
|
223
|
-
} catch (ClassNotFoundException e) {
|
224
|
-
e.printStackTrace();
|
225
|
-
|
226
|
-
// getConnection()、createStatement()、executeQuery()で例外発生
|
227
|
-
} catch (SQLException e) {
|
228
|
-
e.printStackTrace();
|
229
|
-
|
230
|
-
} finally {
|
231
|
-
try {
|
232
|
-
|
233
|
-
if (resultSet != null) {
|
234
|
-
resultSet.close();
|
235
|
-
}
|
236
|
-
if (statement != null) {
|
237
|
-
statement.close();
|
238
|
-
}
|
239
|
-
if (connection != null) {
|
240
|
-
connection.close();
|
241
|
-
}
|
242
|
-
|
243
|
-
} catch (SQLException e) {
|
244
|
-
e.printStackTrace();
|
245
|
-
}
|
246
|
-
}
|
247
|
-
return employeeData;
|
248
|
-
}
|
249
|
-
}
|
250
|
-
```
|
251
|
-
```index.jsp
|
252
|
-
<%@ page language="java" contentType="text/html; charset=UTF-8"
|
253
|
-
pageEncoding="UTF-8"%>
|
254
|
-
<%@ page import="bean.EmployeeBean"%>
|
255
|
-
|
256
|
-
<%
|
257
|
-
EmployeeBean employeeBean = (EmployeeBean) request.getAttribute("EmployeeBean");
|
258
|
-
%>
|
259
|
-
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
260
|
-
<html>
|
261
|
-
<head>
|
262
|
-
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
263
|
-
<title>検索結果</title>
|
264
|
-
</head>
|
265
|
-
<body>
|
266
|
-
<div align="center">
|
267
|
-
<!-- 検索が成功した場合の表示 -->
|
268
|
-
<%
|
269
|
-
if (employeeBean != null) {
|
270
|
-
%>
|
271
|
-
<table border="1">
|
272
|
-
<tr>
|
273
|
-
<th>社員名</th>
|
274
|
-
<td><%=employeeBean.getName()%></td>
|
275
|
-
</tr>
|
276
|
-
<tr>
|
277
|
-
<th>コメント</th>
|
278
|
-
<td><%=employeeBean.getComment()%></td>
|
279
|
-
</tr>
|
280
|
-
<tr>
|
281
|
-
<th>ログインタイム</th>
|
282
|
-
<td><%=employeeBean.getLogin_Time()%></td>
|
283
|
-
</tr>
|
284
|
-
</table>
|
285
|
-
|
286
|
-
<!--それ以外の表示(エラーの場合)-->
|
287
|
-
<% } else { %>
|
288
|
-
<th>IDもしくはパスワードが違います。</th>
|
289
|
-
<% } %>
|
290
|
-
</div>
|
291
|
-
</body>
|
292
|
-
</html>
|
293
|
-
```
|
294
|
-
```index.html
|
295
|
-
<!DOCTYPE html>
|
296
|
-
<html>
|
297
|
-
<head>
|
298
|
-
<meta charset="UTF-8">
|
299
|
-
<title>社員情報システム</title>
|
300
|
-
<link rel="stylesheet" type="text/css" href="./css/index.css">
|
301
|
-
</head>
|
302
|
-
<body>
|
303
|
-
<form action="/SC3-A/search" method="post">
|
304
|
-
<div class="wrapper">
|
305
|
-
<div class="header">
|
306
|
-
<div class="inner">社員情報システム</div>
|
307
|
-
</div>
|
308
|
-
<ul>
|
309
|
-
<!-- ID入力欄 -->
|
310
|
-
<li class="id">
|
311
|
-
<label for="id">ID</label>
|
312
|
-
<input type="text" name="id" value="" size="20">
|
313
|
-
</li>
|
314
|
-
<!--パスワード記入-->
|
315
|
-
<li class="pass" >
|
316
|
-
<label for="password">pass</label>
|
317
|
-
<input type="text" name="pass" value="" size="20" style="-webkit-text-security:disc;">
|
318
|
-
</li>
|
319
|
-
<!-- 検索ボタン -->
|
320
|
-
<li>
|
321
|
-
<input id="button" type="submit" name="button" value="検索">
|
322
|
-
</li>
|
323
|
-
</ul>
|
324
|
-
<div class="footer">
|
325
|
-
<div class="inner">hogehoge.inc</div>
|
326
|
-
</div>
|
327
|
-
</div>
|
328
|
-
</form>
|
329
|
-
</body>
|
330
|
-
</html>
|
331
|
-
```
|
332
|
-
```web.xml
|
333
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
334
|
-
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
|
335
|
-
<display-name>SC3-A</display-name>
|
336
|
-
<servlet>
|
337
|
-
<servlet-name>search</servlet-name>
|
338
|
-
<servlet-class>controller.EmployeeController</servlet-class>
|
339
|
-
</servlet>
|
340
|
-
<servlet-mapping>
|
341
|
-
<servlet-name>search</servlet-name>
|
342
|
-
<url-pattern>/search</url-pattern>
|
343
|
-
</servlet-mapping>
|
344
|
-
<welcome-file-list>
|
345
|
-
<welcome-file>index.html</welcome-file>
|
346
|
-
</welcome-file-list>
|
347
|
-
</web-app>
|
348
|
-
```
|
349
81
|
### 試したこと
|
350
82
|
|
351
|
-
DBにはidが09090とパスワードadminが入っています。そこで入力画面に左記を入力したところ,
|
352
83
|
IDとPWが違います。と表示されてしまいます。
|
353
84
|
|
354
85
|
### 補足情報(FW/ツールのバージョンなど)
|
4
web.xmlを追加しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -328,8 +328,23 @@
|
|
328
328
|
</form>
|
329
329
|
</body>
|
330
330
|
</html>
|
331
|
-
|
332
|
-
|
331
|
+
```
|
332
|
+
```web.xml
|
333
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
334
|
+
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
|
335
|
+
<display-name>SC3-A</display-name>
|
336
|
+
<servlet>
|
337
|
+
<servlet-name>search</servlet-name>
|
338
|
+
<servlet-class>controller.EmployeeController</servlet-class>
|
339
|
+
</servlet>
|
340
|
+
<servlet-mapping>
|
341
|
+
<servlet-name>search</servlet-name>
|
342
|
+
<url-pattern>/search</url-pattern>
|
343
|
+
</servlet-mapping>
|
344
|
+
<welcome-file-list>
|
345
|
+
<welcome-file>index.html</welcome-file>
|
346
|
+
</welcome-file-list>
|
347
|
+
</web-app>
|
333
348
|
```
|
334
349
|
### 試したこと
|
335
350
|
|
3
プログラムを少し修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -108,8 +108,8 @@
|
|
108
108
|
|
109
109
|
EmployeeService emps = new EmployeeService();
|
110
110
|
|
111
|
-
EmployeeBean
|
111
|
+
EmployeeBean rtnDate = emps.search(id, password);
|
112
|
-
request.setAttribute("EmployeeBean",
|
112
|
+
request.setAttribute("EmployeeBean", rtnDate);
|
113
113
|
|
114
114
|
} catch (Exception e) {
|
115
115
|
e.printStackTrace();
|
2
プログラムを少し修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -151,7 +151,7 @@
|
|
151
151
|
/** ・ユーザー名 */
|
152
152
|
private static final String USER = "postgres";
|
153
153
|
/** ・パスワード */
|
154
|
-
private static final String PASS = "
|
154
|
+
private static final String PASS = "postgres";
|
155
155
|
/** ・タイムフォーマット */
|
156
156
|
private static final String TIME_FORMAT = "yyyy/MM/dd HH:mm:ss";
|
157
157
|
|
1
どういう出力をしたか
test
CHANGED
File without changes
|
test
CHANGED
@@ -333,7 +333,8 @@
|
|
333
333
|
```
|
334
334
|
### 試したこと
|
335
335
|
|
336
|
+
DBにはidが09090とパスワードadminが入っています。そこで入力画面に左記を入力したところ,
|
336
|
-
|
337
|
+
IDとPWが違います。と表示されてしまいます。
|
337
338
|
|
338
339
|
### 補足情報(FW/ツールのバージョンなど)
|
339
340
|
|