いくつものJava

「わかりやすいJava・わかりやすいJavaEE」シリーズの中に書いていないこと

NetBeansとWildFlyを使ってJavaEE7(2)

NetBeans8.0 nighty (+ WildFlyプラグイン)+ WildFly8.0.0 Final

なぜEclipseじゃなのかという疑問を持つ方もいるかもしれません。わたしもずっとEclipseのユーザーでしたが、JavaEEの世界に限ってはNetBeansの方がうんと多くのことをやってくれます。特にコード補完はよくできています。設定ファイルの自動生成もツボにはまった働きをしてくれます。さらにMavenを使うのでもNetBeansの方が簡単でした。あまりにもあっけないので「Mavenを使っている気がしないくらい」です。

簡単なウェブシステムの作成

さて、 前回、WildFlyを正常に起動できるところまでやりました。
今回はプロジェクトを作ってプログラムを書きます。

手順1 WildFlyUTF-8を使うように設定ファイルに書いておく

これは情報を探せず困っていたのですが、lbtc_xxxさんにjboss-web.xmlファイルに書けばよいと教えていただきました。

①sample01プロジェクトをマウスの右ボタンでクリックする
②[新規]→[その他]と選択して[新規ファイル]ダイアログを開く
③[カテゴリ]欄で[XML]、[ファイル・タイプ]欄で[XMLドキュメント]を選び[次>]を押す
f:id:tkxlab:20140227225714j:plain
④[New XMLドキュメント]ダイアログが開くので[ファイル名]にjboss-webと入力する
⑤[フォルダ]欄にweb¥WEB-INFと入力する(参照ボタンを押してWEB-INFを選択してもよい)
⑥[次>]を押す
f:id:tkxlab:20140227225734j:plain
⑦[ドキュメントタイプを選択]が表示されるので、[正しい形式のドキュメント]を選択して
 [終了]を押す
f:id:tkxlab:20140227225807j:plain
jboss-web.xmlファイルができるので次のように内容を編集して保存する

<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
   <default-encoding>UTF-8</default-encoding>
</jboss-web>
手順2 webプロジェクトを作る

プロジェクトはウェブプロジェクトを選択して、フレームワークJSFを指定します。

①[プロジェクト]タブをクリックして、プロジェクト表示に切り替える
②メニューから、[ファイル]→[新規プロジェクト]と選択する
③[新規プロジェクト]ダイアログが開く(下図)
④左側の[カテゴリ]欄で[Java web]を選択する
⑤右側の[プロジェクト]で[Webアプリケーション]を選択する
⑥最後に[次>]をクリックする
f:id:tkxlab:20140224133625j:plain
⑦プロジェクト名(ここではsample01)を入れて[次>]ボタンを押す
f:id:tkxlab:20140224134017j:plain
⑧確認して[次>]を押す
f:id:tkxlab:20140224134017j:plain
⑨[JavaServer Faces] にチェックを入れて[終了]を押す
f:id:tkxlab:20140224134044j:plain
以上でsample01プロジェクトが作成され、仮のindex.xhtmlも作成されています。

手順3 バッキングビーンを作る

バッキングビーンはJSFページと連携するJavaプログラムです。管理ビーンということもありますが、それはいろいろなJavaEEのサブシステムが管理するJavaオブジェクト一般を指すのでバッキングビーンと言う方がいいようですね。

①手順1で作成したプロジェクト[sample01]をマウスの右ボタンでクリックする
②[新規]→[Javaクラス]と選択して[New Java クラス]ダイアログを表示する
f:id:tkxlab:20140227215350j:plain
③クラス名にMeiboBean、パッケージ名にbeansと入力して[終了]ボタンを押す
f:id:tkxlab:20140227215358j:plain
④以下のコードを入力する
番号と氏名を入力するJSFページ(index.xhtml)に対応するバッキングビーンです。フィールド変数にnumberとnameがあります。またnextメソッドはページナビゲーションを行うメソッドでoutput.xhtmlを表示します。あとはゲッターとセッターです。

package beans;
import java.io.Serializable;
import javax.enterprise.context.RequestScoped;
import javax.inject.Named;
@Named
@RequestScoped
public class MeiboBean implements Serializable {
    private Integer number;
    private String  name;
    public  String    next(){
         System.out.println("★number="+this.number+"/ name="+this.name);
         return "output.xhtml";
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getNumber() {
        return number;
    }
    public void setNumber(Integer number) {
        this.number = number;
    }
}
手順4 1枚目のJSFページを作る

    自動作成されたindex.xhtmlを次のように書き換えます。
    番号と氏名を入力する画面です。次のような画面になります。
f:id:tkxlab:20140227215415j:plain

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://xmlns.jcp.org/jsf/html">
    <h:head>
        <title>Sample02</title>
    </h:head>
    <h:body>
        <h2>名簿データの作成</h2>
        <h:form>
            番号:<h:inputText value="#{meiboBean.number}" /><br/>
            氏名:<h:inputText value="#{meiboBean.name}" /><br/>
            <h:commandButton value="送信"  action="#{meiboBean.next()}"/>
        </h:form>
    </h:body>
</html>
手順5 2枚目のJSFページを作成する

    入力結果の確認画面としてoutput.xhtmlを作成します。
    次のような画面です。
f:id:tkxlab:20140227215437j:plain
①sample01プロジェクトをマウスの右ボタンでクリックする
②[新規]→[その他]と選択して[新規ファイル]ダイアログを開く
③[カテゴリ]欄で[web]、[ファイル・タイプ]欄で[JSFページ]を選ぶ
f:id:tkxlab:20140227220535j:plain
④[New JSF]ダイアログが開くので[ファイル名]にoutputと入力する
⑤[終了]を押す
f:id:tkxlab:20140227220549j:plain
⑥output.xhtmlができるので、以下のように編集する 

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://xmlns.jcp.org/jsf/html">
    <h:head>
        <title>Sample02</title>
    </h:head>
    <h:body>
        <h2>名簿データの確認</h2>
        <h:form>
            番号:<h:outputText value="#{meiboBean.number}"/><br/>
            氏名:<h:outputText value="#{meiboBean.name}"/><br/>
            <h:link value="[戻る]" outcome="index"/>
        </h:form>
    </h:body>
</html>

動作確認

動かしてみるだけですから、簡単に手順を書いておきます。

①sample01プロジェクトをマウスの右ボタンでクリックし、[実行]を選ぶ
②ブラウザが起動してindex.xhtmlが表示される
③番号(整数)と氏名(漢字)を入力して[送信]を押す
④output.xhtmlが表示されて、入力したデータが正しく表示されることを確認する
⑤サーバーログを見て、そこにも番号と氏名が表示されていることを確認する
⑥[戻る]を押す
⑦空欄になったindex.xhtmlが表示されることを確認する

その他のこと

JPAを使ったブログラムも動くはずです。
mysqlをインストールして、WildFlyJDBCドライバを登録し、データソースを作成するところまではうまくいきました。次回はそのサンプルを報告します。