質問編集履歴

6

修正しました。

2023/05/29 02:34

投稿

退会済みユーザー
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

不要な部分は削除しました。

2023/05/29 02:32

投稿

退会済みユーザー
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を追加しました。

2023/05/29 00:33

投稿

退会済みユーザー
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

プログラムを少し修正

2023/05/29 00:16

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -108,8 +108,8 @@
108
108
 
109
109
  EmployeeService emps = new EmployeeService();
110
110
 
111
- EmployeeBean kensaku = emps.search(id, password);
111
+ EmployeeBean rtnDate = emps.search(id, password);
112
- request.setAttribute("EmployeeBean", kensaku);
112
+ request.setAttribute("EmployeeBean", rtnDate);
113
113
 
114
114
  } catch (Exception e) {
115
115
  e.printStackTrace();

2

プログラムを少し修正

2023/05/29 00:13

投稿

退会済みユーザー
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 = "m0218r97";
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

どういう出力をしたか

2023/05/29 00:06

投稿

退会済みユーザー
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