検査技師からエンジニア転職

アラサー臨床検査技師がエンジニアをめざすブログです。

プログラマカレッジ受講進捗報告③

研修内容についての記事はこれが最後になります。

自分のための記録の意味合いが強いので、読んでもあまり面白くない記事になっているかと思いますが、よければお付き合いください。

f:id:yuru_yutori:20190310151803p:plain


11.ログイン認証とフレームワーク演習

まず前半でログイン認証プログラムを作り、後半はフレームワーク演習を行いました。

ここで作るログイン認証の動きは、①フロント(JSP)でユーザーが「ログインID」、「パスワード」を入力し、「サーバーサイド(Java)」に送る。②送られた情報を「Actionクラス」が受け取り、「DAOクラス」を呼び出して「データベース」で検索処理を行う。③「検索結果」を「DTOクラス」へ渡す。④「DTOクラス」に格納された「検索結果」を「Actionクラス」が処理し、表示する「画面ファイル」をフロントへ送る。⑤送られてきた「画面ファイル」をフロントで表示する。です。

サーバーサイド(Java)で動作するActionクラス、DAOクラス、DTOクラスについてもう少し詳しく説明します。

Actionとは、JSPから送られてきた「ページ要求」に対して、一番最初に実行されるJava側のクラスファイルです。DB(データベース)に接続が必要な場合は、DAOを呼び出して処理を行います。

DAO(データアクセスオブジェクト)とは、Actionクラスから呼び出されて、DBとのやり取りを行います。DBから取得した情報は一旦「DTOクラス」に格納し、Actionクラスへ渡します。

DTO(データトランスファーオブジェクト)とは、DBから取得した情報を格納するためのクラスです。DTOに格納された情報をActionクラスが処理し、「表示画面」へ渡します。

 

このログイン認証機能ではStruts2フレームワークを使います。ですがStruts2フレームワークの機能についての説明は一切ないので、ひとまずはテキストを見るままに進め、よくわからないままにログイン認証機能を完成させました!

 

後半のフレームワーク演習では、Struts2を使ったプログラムをひたすら写経しました。その中でコレクションフレームワークのListを使ったので、その辺も振り返っていきたいと思います。

まずStruts2については全くわからなかったので、ネットで調べました。私なりに重要だと思ったことをまとめてみます。

Struts2とはWebアプリケーション開発フレームワークの1つで、MVCモデルに基づいて設計されています。Struts2においては、コントローラーのうち基本的なクラスはStruts2から提供されます。つまり、アプリケーション開発者はモデル、ビューのみを実装すればアプリケーションを実現することができます

ビューJSPで実装します。その場合、Struts2が提供するカスタムタグライブラリ(<s: property value=”xxx”>等)を通じてActionクラスから値を取得します。

モデルはsetter/getterメソッドを持つクラスとして実装します。Struts2では、モデルの規約に則ったクラスをActionクラスと呼びます。

 

Struts2を使うと、Actionクラスにフィールドとそれに対応するアクセサを置くことで、ユーザー入力値を勝手に画面に表示することができます。

なぜそうなるのか、はじめは全く分からなかったので、この動きを説明します。

JSPから入力され送信された値(リクエストパラメータ)は、一旦ValueStackという箱に保存されます。

Struts2がActionクラスのsetterを使って、ValueStackに保存されていた値をActionクラスのフィールドにセットします。

③Actionクラスにセットされたフィールドの値を、Actionクラスのgetterを経由してJSPで表示します。

つまりActionクラスのsetterは、ValueStackの値をActionクラスのフィールドにセットするために使われています。またActionクラスのgetterは、ActionクラスのフィールドをJSPに表示するために使われているのです。

 

また、コレクションフレームワークのListを使ったプログラムも写経しました。このListは「重複した要素を含むことができる、順序のつけられたコレクション」です。ここでは、

SQLのselect文を実行して、データベースからとってきた複数の情報をWhileで回して順にListへ入れる。

JSPの<s:iterator value=”xxList”>でListを回してList内の複数の情報を順に表示する。

という使い方をしました。

 

12.ECサイト初級

ここで作った機能は、①ログイン機能、②ユーザー登録機能、③商品購入機能、④購入履歴機能の4つです。

作る機能とページが増えたので、少し頭がごちゃごちゃしてしまいました。

ECサイトではSessionを使ったので、これについて説明したいと思います。

まずSessionとは、ページ間で変数の内容を維持するための仕組みです。クッキーはクライアント側(パソコン側)に様々な情報を保存させるのに対し、Sessionはサーバー側に様々な情報を保存させます。Sessionに保存された情報は、ブラウザを閉じるか使わずに30分経つまではそのまま保持されます。

また、SessionオブジェクトはMap型で保存されます。Mapとは、キーと要素をペアで対応づけたコレクションです。

 

値を保存するという点でValueStackとSessionは似ていますが、ここで両者の違いを説明します。

まずValueStackはStruts2でしか使えませんが、Sessionは通信をしていればいつでもだれでも使えます。また、ValueStackではファイルをまたいで中の値を使うことはできませんが、Sessionではファイルをまたいで使うことができます。

ValueStackとSessionではこの2点の違いがあります。と講師の方に教えてもらいました。

 

12.ECサイト中級

ECサイト中級では、初級の機能に3つの機能を追加しました。

1つ目はログイン判定機能です。一度ログインしているか否かで、遷移するページを変えるようにしました。これはSessionにidが入っているか否かで判定しました。

2つ目は購入履歴機能です。初級では1件しか履歴を表示できませんでしたが、中級では複数の履歴を表示できるようにしました。これはコレクションフレームワークのListを使って実装しました。

3つ目はログアウト機能です。これはSessionの中身をclearすることで実装しました。

 

以上でプログラマカレッジ夜間コースの研修内容はすべて終了になります。ですが希望者は引き続きこのECサイトに機能を追加していくことができます。

私はECサイト中級終了後に就活に入ったので、ひとまずここで終了しました。

 

研修を振り返ってみると、よく出たエラーは404エラーでした。これは「リクエストされたページが存在しない」というエラーですが、原因は大体設定ファイルのスペルミスやファイル名の大文字小文字のミスでした。なので正確にタイピングすることの重要性を実感しましたね・・・。

 

プログラマカレッジ夜間コースの研修について私が感じたことは以下3つです。

写経が多い

ほぼほぼ写経なので、自分で考えてコーディングする力はつかないと思います。ですが写経したコードの意味を調べることで、コードを読む力は多少つくと思います。

オリジナルテキストの説明は詳しくない

特にJavaに入ってからは、オブジェクト指向フレームワークについての詳しい説明はほぼありません。なので自分で調べながらやらないと、わからないコードをただ写すだけになってしまいます。

かなり家で進められる

ファイルを送ってもらえば家でも写経できるので、カレッジには週1回ほど通えば大丈夫です。家で進めてわからなかったところをカレッジの講師に質問すればいいと思います。

 

以上になります!

次回は就活についての記事を書きたいと思います。