ジャバビーンズ、ジャヴァビーンズ画面表示に使用する「部品」クラスの仕様。Javaにおいて最も分かりにくい仕様のひとつ。画面表示に使用するクラスを、「部品」として再利用できるようにするため決められた「仕様」が「JavaBeans」である。Bean」もしくは単に「Bean」「ビーン」と呼ぶ。「画面表示」とは広義のGUIを指し、ウィンドウアプリケーションからWebアプリケーションまで含む。画面表示をする必要はなく、「画面表示のための部品となるクラス」であればなんでも当てはまる。実際、現在最も使用頻度の高いJavaBeansの使用方法は、Webアプリケーションでの利用である。Beanクラスに格納し、HttpServletRequestインターフェイスかHttpSessionインターフェイスのsetAttribute()メソッドで名前を付けてセットすることで、JSP側で<jsp:useBean>JSPタグでそのまま変数として使用することができる。Beanクラスは「データクラス」としての利用であり、画面表示を直接行っているわけではない。このような利用方法もJavaBeansに当てはまる。Beanクラスは「プロパティ」を持つ。プロパティとは「フィールドとgetter/setterの組み合わせ」のことである。このgetter/setterのメソッド名は、必ず「フィールド名の頭文字を大文字にし、その前にget/setを付けたもの」とする必要がある。フィールド名が「valueData」であれば、getterは「getValueData()」、setterは「setValueData()」というメソッド名となる。このプロパティの命名規則は非常に重要である。それは、リフレクションによって「プロパティ名」を指定することで「getter/setterを呼び出す」という処理を行うことが多いためである。そのため、プロパティ名を元にgetter/setterを作らないと、適切なメソッドが呼び出せなくなってしまう。Beanクラスである」とさえ言われるほどである。Beanクラスは「直列化可能」である必要がある。Beanクラスは、プロパティに格納した情報を保存できる必要があるため、Serializableインターフェイスの実装クラスとする必要がある。これは絶対必要な条件ではない。実際、通常のサーブレットとJSPで使用する場合には直列化可能である必要はない。システムによっては必要不可欠であるため、Serializableインターフェイスの実装クラスとしておいた方が安全だろう。JavaBeansは、そもそも、WindowsにおけるOCXやActiveXのような「画面のコンポーネント」に対抗する仕様として作られている。そのため、仕様書等にはGUIでの利用を前提に書かれているものが多い。Javaの主な使用目的がWebアプリケーションとなっている現在では、GUIコンポーネントとしての利用はあまり行われていない。現在は「単なるデータクラス」として使われる事もあり、これが「JavaBeansとはなんなのか」という点を分かりにくくしている。Beanクラスの一般的な定義となっている。細かい仕様にこだわるときりがなく、また、非常に便利でよく利用するもののため、深く考えずに利用するのがいいだろう。%><%--pageEncodingには、このファイルを保存した時の文字コードを指定してください。Windowsであれば"Windows-31J"を指定すればいいでしょう。Beanを取得します。idでは、HttpServletRequestインターフェイスかHttpSessionインターフェイスのsetAttribute()メソッドの第1引数で渡した文字列を指定します。classで、第2引数で渡したクラスを指定します。scopeでスコープをセットします。HttpServletRequestを使用した場合にはrequest、HttpSessionを使用した場合はsessionを指定します。<jsp:useBean>のidで指定した名前が、そのまま変数名となります。この変数名で、サーブレット側でセットしたデータにアクセスできます。このサンプルプログラムは「サーブレット」の項目に書かれている準備を行ってから使用してください。サーブレットのテスト。リクエストとしてHTTPメソッドのGETが渡されるとこのメソッドが呼ばれます。Content-Typeをセット。Beanクラスを作成し、JSPで使えるようにセットします。サーブレットコンテキストを取得します。リクエストディスパッチャーを取得します。指定したJSPへと転送します。Beanは、JSPで使用する関係でパッケージに入れる必要があります。ここではbeanパッケージに入れます。Beanは直列化可能にする必要があります。実際には必要ない場合も多いですが。