透2018/6/242019/9/3JavaBeansって何?JavaBeansの使い方を具体的に知りたいこんにちは!フリーランスの長野です。JavaBeansとは再利用可能なプログラムを実現するための仕様およびその仕様に沿ったクラスのことです。WEBアプリ開発の際に作成するJSPファイルから利用します。この記事では、そんなJavaBeansについて、以下の内容を解説していきます。そもそもJavaBeansとはJavaBean仕様のクラスを作成する方法JSPでJavaBeansを利用する方法Serializableを実装した永続化XMLEncoderとXMLDecoderで保存と復元など、JavaBeansの基礎の基礎から応用的な内容についても解説していきます。まとめJavaBeansとは?JavaBeansとは、Javaで書かれた再利用可能なソフトウェアコンポーネントまたはその技術仕様のことです。ソフトウエアコンポーネントとはクラスのことです。JavaBeansはWEBアプリでデータを操作する際によく使われます。操作するデータのことをプロパティと呼びます。JavaBeansは仕様ですので以下のような規則があります。JavaBeansの仕様クラスをpublicで指定するプロパティ(クラスのメンバ変数)はprivateで指定するpublic指定で引数なしのコンストラクタを定義するプロパティにアクセスするためのgetter、setterメソッドを用意するjava.io.Serializableインタフェースを実装する(必須ではない)パッケージ化するクラス名の最後は慣例的にBeanにするそれでは、このあとこの仕様に従ったクラスの作成について説明していきます。JavaBean仕様のクラスの作成それではJavaBean仕様のクラスの例をご紹介します。引数なしのコンストラクタをpublicで指定プロパティcode、nameのsetter、getterメソッドを定義するsetter、getterメソッドの命名には規則があるsetterメソッドの場合はメソッド名の最初をsetとし、そのあとにプロパティの頭文字を大文字にして続けるgetterメソッドも同様にメソッド名の最初をgetとし、そのあとにプロパティの頭文字を大文字にして続けるこのようにsetter、getterメソッドを使ってデータを扱うクラスを定義することで、以下のようなメリットがあります。読み書きの可否を制御できる上記の例ではsetter、getterメソッド両方を定義しましたのでプロパティは他のクラスから読み書きの両方が可能です。getterメソッドのみ定義した場合は読み込み可能で書き込みが不可とすることができます。メンバ変数のアクセス修飾子の指定では、読み書き両方不可か両方可能しか選択することができません。書き込み時の値の妥当性を検証できる例えばプロパティに入力する値の文字数などが決められている場合などは、妥当かどうか検証する処理をメソッドで定義することができます。メンバ変数自体では検証することができません。Pageの略でサーブレットと同じようにサーバー上で動作させるJavaのプログラムのことです。サーブレットではJavaのコードの中にHTMLのコードを記述します。これに対して、JSPではHTMLのコードの中にJavaのコードを記述します。WEBページ上で動的な処理が必要な個所をJavaのコードで記述することができます。サーブレットはJavaで記述されるので、JavaBeansクラスを呼び出す場合は普通のクラスを利用する方法と何も変わりません。JSPではHTMLで記述されますが、よく使用する処理をHTML同様にタグ形式で記述することができるアクションタグが用意されています。このアクションタグの中にJavaBean仕様で定義したクラスのプロパティを操作するタグも含まれています。JavaBeansのプロパティの値を取得<jsp:useBean>要素<jsp:useBean>要素はJSPでJavaBeansクラスをインスタンス化するのに使います。<jsp:useBean>要素の構文は以下のとおりです。指定可能な設定値は以下のとおりです。デフォルト値はpageです。現在のアプリケーション内のすべてのページ、アクセスしている全ユーザー間で有効<jsp:setProperty>要素<jsp:setProperty>要素はJavaBeansクラスのプロパティに値を設定するのに使います。<jsp:setProperty>要素の構文は、以下のとおりです。/>me属性では、JavaBeansクラスのオブジェクト名を指定<jsp:useBean>要素のid属性と対応する必要があるproperty属性では、JavaBeansクラス内の対応するプロパティ名を指定JavaBeansクラス内では対応するsetterメソッドが呼び出されるvalue属性はプロパティの値を固定値として設定したい場合に使うparam属性はリクエストパラメータから設定したい場合に使う<jsp:getProperty>要素<jsp:getProperty>要素はJavaBeansクラスのオブジェクトの指定されたプロパティ値を取得し、クライアント(ブラウザ)に返します。<jsp:getProperty>要素の構文は以下のとおりです。/>Serializableを実装した永続化JavaBeansの仕様の中で「java.io.Serializableインタフェースを実装する」とお伝えしました。Serializableとは、永続化可能ということです。先ほどJSPのアクティブタグのscope属性でお伝えしたように、データの保持期間・範囲は限定されています。JavaBeansクラスはjava.io.Serializableインタフェースを実装することで、インスタンス化したオブジェクトのデータをメモリ上からディスク上のファイルに保存、永続化させることができます。ちなみにSerializableを直列化可能と説明されている場合もあります。この場合はファイルにデータを保存する際に、1列のデータ列に変換して保存することを指して直列化可能と説明されています。オブジェクトのデータをファイルに保存するには、ObjectOutputStreamクラスのwriteObjectメソッドを使用します。writeObjectメソッドの引数にjava.io.Serializableインタフェースを実装したJavaBeansクラスのオブジェクトを指定し実行することで、バイナリファイルが生成されます。保存したファイルからオブジェクトのデータを復元することも可能です。オブジェクトのデータを復元することをデシリアライズといいますが、ObjectInputStreamクラスのreadObjectメソッドを使用します。サンプルコードで確認しましょう。JavaBeansクラスには先ほどのInfoBeanクラスを使います。「Sample.bin」というバイナリーファイルが作成されます。先ほどはjava.io.Serializableインタフェースを実装してオブジェクトのデータをシリアライズ、デシリアライズする方法を説明しました。Javaではこの他にもXMLEncoderクラスとXMLDecoderクラスを使ってオブジェクトのデータを書き出し保存、復元することができます。クラス名にXMLが付いていますので、XML形式で書き出します。XML形式ですから、バイナリデータに比べて後から内容を追加、変更することも簡単です。XMLEncoderクラスはJavaBeansクラスのオブジェクトのデータをXML形式に変換するためのクラスでjava.beansパッケージに含まれています。同じようにXMLDecoderはXML形式で保存されたファイルからデータを復元するためのクラスです。使い方をサンプルコードで確認しましょう。ここでもJavaBeansクラスには先ほどのInfoBeanクラスを使います。</object></java>まとめここではJavaBeansについて説明しました。JavaBeansはクラスのオブジェクトでデータを操作する際にクラスを定義するための仕様です。この仕様を活用すれば、オブジェクトのデータをJSPのアクティブタグで利用できます。データを永続化、復元することも可能です。使いこなすことができるように、この記事を何度も参考にして下さいね!TweetPocket無料でSEからWebエンジニアへ転職しませんか?侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、システムエンジニアという職業だけどコードが書けない事務作業が多くスキルがないため将来が不安スクールに通うと完全未経験者と同じスタートになるからレベルが合わないという、すでに知識があるSEならではのお悩みがあることに気づきました。弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。こちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。熊本在住のフリープログラマ兼ライターです。C/C++/C#、Java、Python、HTML/CSS、PHPを使ってプログラミングをしています。専門は画像処理で最近は機械学習、ディープラーニングにはまっています。幅広くやってきた経験を活かしてポイントをわかりやすくお伝えしようと思います。お問合せはこちらでも受け付けています。