JavaEE 7 超入門 8クリックでEE7Webアプリ?起動確認とか
なにが「超入門」かというとおいらにとって超入門。
まずはJavEE7なアプリを起動させることを今回の目標にする。
サンプルは過去の例を見ても大げさすぎて、でかすぎて把握しにくいので無視で。
適当にフィーリングで行き当たりばったりでいい。JavaEEとはそういう感じのゆるい誰でもお気楽極楽に触れるものですよ。肩ひじ張るようなものではない。
しかし、「NetBeansタグ」すげー久々だのう。
インストール
ダブルクリックでインストーラ起動。適当に押していけばOK。Glassfish 4もついてくるのでチェックを外さないように。
別途ダウンロードする必要もないのでインストーラ版がおすすめ。ダウンロードもIDE上で完成するので別にいいけど。
とにかくすぐに確認ができるのでNetBeansを常用はするつもりはないけどどんなものか知りたい人はこちらで。
起動
インストールしたアイコンをダブルクリックで立ち上げよう。
起動時に旧バージョンのNetBeansがあると設定を引き継ぐが、その場合、Glassfish4が追加されていないため、お手軽に試したい場合は設定を引き継がないほうがいいかも。
たぶんNetBeans 7.3.1のバグ。速攻でバグを踏むのもお約束。
プロジェクト作成
プロジェクトを作成する。
ウィザードが立ち上がったら以下の順序でクリック。
- 「カテゴリ」に「Java Web」
- 「プロジェクト」に「Webアプリケーション」
- 「次」ボタン
Glassfish 4 とJavaEE 7が設定されているのを確認して 「次」をクリック。
フレームワークは特別何も設定しないでよい。あとでも設定できるため。「終了」をクリック。
これでプロジェクトの新規作成はおわり。
EE7なの?
たしかにログはGlassfishが立ち上がっていることはわかるが、表示しているのがHTMLでぜんぜんEE7って感じがしない。
実はGlassfish 3とかTomcatじゃないの?といわれても仕方がないレベル。
というわけで、index.htmlを消して以下のようにJSPを書いてみる。
うん、ちゃんとラムダ式も補完きくね。
ちなみに「
<body> 合計=<c:out value="${[4,3,1,2].stream().sum()}" /> </body>
ブラウザのリロード。JSPの変更程度はもちろん再デプロイは必要ない。
JavaEE 7ではJavaSE 8より一足お先にラムダがかけるw
ここでネタに走ってStrutsでラムダを書く・・・とおもったけど、みんなやってると思うのでやめておく。
プロジェクトを右クリックして「プロパティ」を選んで、フレームワーク>追加>Strutsとやるとライブラリも設定ファイルも全部初期設定してくれるんで、やりたい人はそこから始めるとよいだろう。
いまいち定数を合計しても面白くないのでBeansを作ってそれをアクセスしてみるか。
package bean; public class HogeArray { private int[] array = {2,1,4,3,5}; public int[] getArray() { return array; } }
とつくっておいて
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@page contentType="text/html" pageEncoding="UTF-8"%> <jsp:useBean id="hoge" scope="page" class="bean.HogeArray"/> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> 合計=<c:out value="${hoge.array.stream().sum()}" /> </body> </html>
これでJavaコードから配列をもらってEL側で合計されているのがわかる。
もちろんソートもできる。
<body> 合計=<c:out value="${hoge.array.stream().sum()}" /> <hr> <c:forEach items="${hoge.array.stream().sorted().iterator()}" var="row"> <div><c:out value="${row}"/></div> </c:forEach> </body>
ラムダの例。フィルタで奇数のものだけ処理してる。
<body> 合計=<c:out value="${hoge.array.stream().filter((num)->num%2==1).sum()}" /> <hr> <c:forEach items="${hoge.array.stream().filter((num)->num%2==1).sorted().iterator()}" var="row"> <div><c:out value="${row}"/></div> </c:forEach> </body>
まずはいろいろと遊んでみるといいかもですね。