学習27日目:一応、カリキュラム終わった。

今日の学習時間。

  • Day:27
  • Today:10h
  • Total:177h

学習内容について。

日報情報の管理機能を作成。

Reportモデルを作成。

カラム名用途データ型
idリソース内での連番数値型
employee_id日報を登録した社員の社員番号文字列型
report_dateいつの日報かを示す日付日付型
title日報のタイトル文字列型
content日報の内容テキスト型
created_at登録日時日時型
updated_at更新日時日時型
Reportに設定するプロパティ
  • java.sql.Date
    • 年月日のみを管理
  • java.sql.Timestamp
    • 年月日の他に時分秒(ミリ秒)まで情報を管理
  • @Lobアノテーション
    • テキストエリアの指定を行う
      • 改行もデータベースに保存される(何もしなければテキストボックスの扱いと同じ)
1対多と多対多
  • ひとりの従業員は毎日日報を作成するので複数の日報を持っている
    • しかし、1枚の日報から見たら作成者はたった1人
    • 1対多の関係
  • 互いに複数のデータを持つことが考えられる場合
    • 多対多の関係
  • 外部キー(外部キー制約)
    • 例:テーブルAとテーブルBがある
    • テーブルBに、テーブルAのidを保持するカラムを追加
    • 1対多で用いられることが多い
  • 中間テーブル
    • 例:テーブルAとテーブルBがある
    • テーブルAのidとテーブルBのidのみを持つ新しいテーブルを作成
    • 多対多で用いられることが多い

バリデーションを作成。

Tomcatを再起動してログインページからログインしてトップページにアクセス。それだけでMySQLにreportsテーブルが作成されている(下記)。

mysql> use daily_report_system;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

mysql> SELECT * FROM reports;
Empty set (0.00 sec)
ここまでをGitにコミット
$ git add .

$ git commit -m "Add Report class"
[master 276bf7e] Add Report class
 3 files changed, 146 insertions(+)
 create mode 100644 src/models/Report.java
 create mode 100644 src/models/validators/ReportValidator.java

Reportのindexを作成。

アクションサーブレット名URLマッピングHTTPメソッド
indexReportsIndexServlet/reports/indexGET
newReportsNewServlet/reports/newGET
createReportsCreateServlet/reports/createPOST
showReportsShowServlet/reports/showGET
editReportsEditServlet/reports/editGET
updateReportsUpdateServlet/reports/updatePOST
Reportの情報を管理するアクション

勝手に日報を削除されると困るからReportに関してdestroyは作成しない。

ここまでをgitにコミット
$ git add .

$ git commit -m "Add Report index"
[master 2ae6246] Add Report index
 4 files changed, 136 insertions(+), 1 deletion(-)
 create mode 100644 WebContent/WEB-INF/views/reports/index.jsp
 create mode 100644 src/controllers/reports/ReportsIndexServlet.java

Reportのnewを作成。

  • 37-39行目
    • 事前に本日の日付を取得して格納
    • 今日の日報を新規で登録する際、すでに今日の日付が入力欄に入っていた方が利用者にとって便利
ここまでをGitにコミット
$ git add .

$ git commit -m "Add Report new"
[master e4b86af] Add Report new
 3 files changed, 88 insertions(+)
 create mode 100644 WebContent/WEB-INF/views/reports/_form.jsp
 create mode 100644 WebContent/WEB-INF/views/reports/new.jsp
 create mode 100644 src/controllers/reports/ReportsNewServlet.java

Reportのcreateを作成。

  • 50行目
    • 日付欄をわざと未入力にした場合、当日の日付を入れる処理
    • バリデーションで入力値チェックをする形でもOK
  • 51行目
    • Stringで受け取った日付をDate型へ変換する処理
ここまでをGitにコミット
$ git add .

$ git commit -m "Add Report create"
[master b49f3be] Add Report create
 1 file changed, 84 insertions(+)
 create mode 100644 src/controllers/reports/ReportsCreateServlet.java

Reportのshowを作成。

  • 41行目
    • 日報の作成者以外の人が該当の日報を編集できない処理
    • 違う人の日報の場合はeditへのリンクを出さない
  • 改行には<br /><pre>を使う
    • <pre>を使うと中の文字列の表示が小さい文字になるのでCSSで装飾の調整を行う(下記)
ここまでをGitに登録
$ git add .

$ git commit -m "Add Report show"
[master d14dfdc] Add Report show
 3 files changed, 109 insertions(+)
 create mode 100644 WebContent/WEB-INF/views/reports/show.jsp
 create mode 100644 src/controllers/reports/ReportsShowServlet.java

Reportのeditを作成。

ここまでをGitにコミット
$ git add .

$ git commit -m "Add Report edit"
[master eedf2fa] Add Report edit
 2 files changed, 76 insertions(+)
 create mode 100644 WebContent/WEB-INF/views/reports/edit.jsp
 create mode 100644 src/controllers/reports/ReportsEditServlet.java

Reportのupdateを作成。

ここまでをGitにコミット
$ git add .

$ git commit -m "Add Report update"
[master 67b783a] Add Report update
 1 file changed, 74 insertions(+)
 create mode 100644 src/controllers/reports/ReportsUpdateServlet.java

トップページに自分の日報一覧を表示。

  • @NamedQueryを2つ追加(上記)
    • getMyAllReports
    • getMyReportsCount
ここまでをGitにコミット
$ git add .

$ git commit -m "Modify top page"
[master 9d35e3a] Modify top page
 4 files changed, 82 insertions(+), 2 deletions(-)
GitHubにプッシュ
$ git remote add origin https://github.com/kikikeiten/daily_report_system.git

$ git push -u origin master
Enumerating objects: 234, done.
Counting objects: 100% (234/234), done.
Delta compression using up to 8 threads
Compressing objects: 100% (204/204), done.
Writing objects: 100% (234/234), 32.52 KiB | 1.91 MiB/s, done.
Total 234 (delta 92), reused 0 (delta 0)
remote: Resolving deltas: 100% (92/92), done.
To https://github.com/kikikeiten/daily_report_system.git
 * [new branch]      master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.

一応完成。あとは下記の機能を実装する予定(ちょっと難しそう?)。

実装予定
  • 社員同士のフォロー機能・フォローした社員の日報を一覧表示する機能
  • 課長や部長などの権限追加・および部下の日報を承認する機能
  • 日報にリアクション(いいね)する機能
  • 顧客管理の機能・日報の内容に「商談状況」を追加する
  • 出勤と退勤時間を日報の項目として追加

今日の反省と明日の目標。

今日でとりあえずカリキュラムは終わりました。目標の1ヶ月以内に終われてよかったです。サーブレットでアプリを作ってはみたけど、あんまり関数とか使ってないので、今後取り入れていきたいと思います。

さて、ポートフォリオを作るにあたってJavaだけではダメなので他の言語も学んでいく予定です。大まかな理解にはProgateというサービスが良さそうなのでいくつかピックアップしてやってみます。具体的にはHTML&CSS、JavaScript、jQuery、Sass、Reactです。それをしながら、ポートフォリオの構成を固めていきます。

閉じる