質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

7585閲覧

javaの問題が分からないので教えてください。

chiharu_java

総合スコア3

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2020/07/18 02:24

編集2020/07/19 23:55

Javaの問題が分からないので教えてください。

EmployeeController①〜④
EmployeeService②〜⑧
SQLのカラム名は
・id
・password
・name
・comment
・login_time

EmploBean

1public class EmployeeBean { 2 private String Id; 3 private String PassWord; 4 private String Name; 5 private String Comment; 6 private String Login_Time; 7 public void setId(String Id) { 8 this.Id = Id; 9 } 10 public String Id() { 11 return Id; 12 } 13 public void setPassWord(String PassWord) { 14 this.PassWord = PassWord; 15 } 16 public String getPassWord() { 17 return PassWord; 18 } 19 public void setName(String Name) { 20 this.Name = Name; 21 } 22 public String getName() { 23 return Name; 24 } 25 public void setLogin_Time(String Login_Time) { 26 this.Login_Time = Login_Time; 27 } 28 public String getLogin_Time() { 29 return Login_Time; 30 } 31 public void setComment(String Comment) { 32 this.Comment = Comment; 33 } 34 public String getComment() { 35 return Comment; 36 } 37}

EmployeeController

1public class EmployeeController extends HttpServlet { 2 public void doPost(HttpServletRequest request, HttpServletResponse response) 3 throws ServletException, IOException { 4 try { 5 // 問① index.htmlから送信されたIDとPassWordの値を取得できるように修正してください。 6 String id = request.getParameter("id"); 7 String password = request.getParameter("pass"); 8 /* 9 * IDとPassWordと元に、社員情報を検索する関数の呼び出し、結果をJSPに渡す処理 10 * ※ EmployeeBeanとEmployeeServiceをimportするのを忘れないでください。 11 */ 12 // 問② EmployeeServiceクラスをインスタンス化してください。 13 EmployeeService emps = new EmployeeService(); 14 // 問③ EmployeeBeanに、EmployeeServiceよりsearch関数を呼び出し、返り値を格納してください。 15 emps.search("postgres", "otikuyj"); 16 // 問④ [null]に適切な引数をセットしてください。 17 request.setAttribute("EmployeeBean", id); 18 } catch (Exception e) { 19 e.printStackTrace(); 20 } finally { 21 ServletContext context = this.getServletContext(); 22 RequestDispatcher dispatcher = context.getRequestDispatcher("/index.jsp"); 23 dispatcher.forward(request, response); 24 } 25 } 26}

EmployeeService

1public class EmployeeService { 2 // 問① 接続情報を記述してください 3 /** ドライバーのクラス名 */ 4 private static final String POSTGRES_DRIVER = "org.postgresql.Driver"; 5 /** 6 * ・JDMC接続先情報 7 * ポート番号(5432, 5433など)は個人で異なる可能性があります。 8 * 念の為、pgAdminにて対象のpostgreSQLバージョンよりメニューを開き、[プロパティ] -> [接続] を確認してください 9 */ 10 private static final String JDBC_CONNECTION = "jdbc:postgresql://localhost:5432/Employee_db"; 11 /** ・ユーザー名 */ 12 private static final String USER = "postgres"; 13 /** ・パスワード */ 14 private static final String PASS = "otikuyj"; 15 /** ・タイムフォーマット */ 16 private static final String TIME_FORMAT = "yyyy/MM/dd HH:mm:ss"; 17 // 問② 入力されたIDを条件にログイン時間を更新するUPDATE文 18 /** ・SQL UPDATE文 */ 19 private static final String SQL_UPDATE = "update employee_table set '?' = to_char(current_timestamp, 'yyyy/MM/dd HH24:MI:SS') where id = '?'"; 20 // 問③ 入力されたIDとPassWordを条件と合致するデータを検索するSELECT文 21 /** ・SQL SELECT文 */ 22 private static final String SQL_SELECT = "select * from employee_table where id = '?' AND password = '?'"; 23 EmployeeBean employeeData = null; 24 // 送信されたIDとPassWordを元に社員情報を検索するためのメソッド 25 public EmployeeBean search(String id, String password) { 26 Connection connection = null; 27 Statement statement = null; 28 ResultSet resultSet = null; 29 PreparedStatement preparedStatement = null; 30 try { 31 // データベースに接続 32 Class.forName(POSTGRES_DRIVER); 33 connection = DriverManager.getConnection(JDBC_CONNECTION, USER, PASS); 34 statement = connection.createStatement(); 35 // 処理が流れた時間をフォーマットに合わせて生成 36 Calendar cal = Calendar.getInstance(); 37 SimpleDateFormat sdFormat = new SimpleDateFormat(TIME_FORMAT); 38 // PreparedStatementで使用するため、String型に変換 39 String login_time = sdFormat.format(cal.getTime()); 40 /* 41 * 任意のユーザーのログインタイムを更新できるように、プリペアドステートメントを記述。 42 */ 43 // preparedStatementに実行したいSQLを格納 44 preparedStatement = connection.prepareStatement(SQL_UPDATE); 45 // 問④ preparedStatementを使って、第一引数に現在時刻を、第二引数にIDをセットしてください。 46 preparedStatement.setString(1, login_time); 47 preparedStatement.setString(2, id); 48 // 問⑤ UPDATEを実行する文を記述してください。 49 preparedStatement.executeUpdate(SQL); 50 /* 51 * UPDATEが成功したものを即座に表示 52 * 任意のユーザーを検索できるように、プリペアドステートメントを記述。 53 */ 54 preparedStatement = connection.prepareStatement(SQL_SELECT); 55 // 問⑥ preparedStatementを使って、第一引数にIDを、第二引数にPASSWORDをセットしてください。 56 preparedStatement.setString(1, id); 57 preparedStatement.setString(2, password); 58 // SQLを実行。実行した結果をresultSetに格納。 59 resultSet = preparedStatement.executeQuery(); 60 while (resultSet.next()) { 61 // 問⑦ tmpName,tmpComment,tmpLoginTimeに適当なデータを格納してください。 62 String tmpName = resultSet.getString("name"); 63 String tmpComment = resultSet.getString("comment"); 64 String tmpLoginTime = resultSet.getString("login_time"); 65 // 問⑧ EmployeeBeanに⑦で取得したデータを格納してください。 66 employeeData = new EmployeeBean(); 67 employeeData.setName("tmpNam"); 68 employeeData.setComment("tmpComment"); 69 employeeData.setLogin_Time("tmpLoginTime"); 70 } 71 // forName()で例外発生 72 } catch (ClassNotFoundException e) { 73 e.printStackTrace(); 74 // getConnection()、createStatement()、executeQuery()で例外発生 75 } catch (SQLException e) { 76 e.printStackTrace(); 77 } finally { 78 try { 79 if (resultSet != null) { 80 resultSet.close(); 81 } 82 if (statement != null) { 83 statement.close(); 84 } 85 if (connection != null) { 86 connection.close(); 87 } 88 } catch (SQLException e) { 89 e.printStackTrace(); 90 } 91 } 92 return employeeData; 93 } 94}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/07/18 02:30

問題はわかるのですがある程度回答も記載されているように見えますが、、、 今記載されているものを修正するのですか? それとも答え合わせをするのですか? 質問の本筋が分かりませんでした、、、
cateye

2020/07/18 02:30

何かの課題でしょうか? →https://teratail.com/help/avoid-asking
m.ts10806

2020/07/18 03:32

「意図的に内容が抹消された質問」 https://teratail.com/help/delete-policy 編集履歴から確認できるとはいえ、「自分だけ解決すればそれでいい」というスタンスの人はプログラミングに向きません。 運営にも通報しました。いずれ、運営から元に戻されるでしょう。
guest

回答2

0

ベストアンサー

// 問③ EmployeeBeanに、EmployeeServiceよりsearch関数を呼び出し、返り値を格納してください。

emps.search(id, password);

EmployeeBean rtnData = emps.search("postgres", "otikuyj");

// 問④ [null]に適切な引数をセットしてください。

request.setAttribute("EmployeeBean", id);

request.setAttribute("EmployeeBean", rtnData);

// 問⑤ UPDATEを実行する文を記述してください。

preparedStatement.executeUpdate(SQL);

preparedStatement.executeUpdate();

// 問⑧ EmployeeBeanに⑦で取得したデータを格納してください。

employeeData = new EmployeeBean(); employeeData.setName("tmpNam"); employeeData.setComment("tmpComment"); employeeData.setLogin_Time("tmpLoginTime"); employeeData = new EmployeeBean(); employeeData.setName(tmpNam); employeeData.setComment(tmpComment); employeeData.setLogin_Time(tmpLoginTime);

こんなところでしょうか

投稿2020/07/18 02:42

編集2020/07/18 02:43
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

chiharu_java

2020/07/18 03:39

ありがとうございます!
退会済みユーザー

退会済みユーザー

2020/07/18 04:51

解決してよかったです。 質問が編集されておりますが、残しておくようにした方がいいですよ。 質問者様のみが問題を解決するのではなく、同様の疑問を抱いた技術者の問題解決に繋がるかもしれないからです。
guest

0

急に失礼致します。
この質問の内容で1つ教えていただきたいことがございます。
// 問③ EmployeeBeanに、EmployeeServiceよりsearch関数を呼び出し、返り値を格納してください。
emps.search(id, password);

EmployeeBean rtnData = emps.search("postgres", "otikuyj");

上記の問に対しての答えですが、なぜ『EmployeeBean』になるのかわかりません。

教えていただけると幸いです。
宜しくお願い致します。

投稿2021/04/16 08:21

tsubannn

総合スコア6

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

K_3578

2021/04/20 01:17

これ、誰に言ってるんだろう?質問者になら多分反応しないし、 誰でも良いなら新規質問建てたらいいと思うが
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問