今回、アプリケーションを作るにあたって、JSPとサーブレットを使っていこうとおもいます。両方使うのは久しぶりなので、まずは復習から。
JSP/サーブレットってなんだっけ?
JSPは、サーバの受け付けた情報を元に、Javaの文法でHTMLを動的に生成することができる言語。有名な言語では、PerlやPHPが近い。
CUIがキーボードから受け取った情報を文字で、GUIがマウスから受け取った情報を動作で返すように、JSPやPerl,PHPはブラウザから受け取った情報をHTMLで返す。ブラウザが出力できる範囲かつHTML(あとJavascriptとかブラウザでネイティブに動くもの)で表現できる範囲になるが、ユーザはブラウザさえあれば特別なアドオンは不要。
JSP内にJavaの構文をガリガリ書いていくこともできるけれど、プログラム本体はJavaに記載しサーバに配置しておき、JSPはJavaプログラムを起動するだけにすることも出来る。このJavaプログラムをサーブレットと言う。
最低限の出力編
つべこべ言っていても仕方がないので、とりあえずなんか書いてみる。
プロジェクトの作成
開発はNetBeansを使っていく。NetBeansのメニューから以下のように選択しサンプル用データを作成する。
- ファイル -> 新規プロジェクト
- JavaWeb -> Webアプリケーション
- プロジェクト名を『SampleJSP』に指定し、後はデフォルト。
- サーバはGlassFish Server 3.1.2、Java EEはJava EE 6 Webを選択。
- フレームワークはなにそれ美味しいのなのでチェックしない。
これで、Sample用JSPが作成される。あとは動作テストとして、左端のプロジェクトウィンドウ内に SampleJSP -> Webページ -> index.jsp が作成されているはずなので、そいつを右クリックしてファイルを実行すると、ブラウザが立ち上がってHelloWorldと表示がされるはず。もしここで上手くいかないとすると、Serverが立ち上がっていない、8080ポートで既になんか起動しているなどのケースが考えられる。
最低限のJSP編
このままでは、単純にHTMLを書いた上で、出力しているのでJSPを使う意味は全くない。なので、最低限javaっぽく何かを書いてみる事にする。作るものは、『ページを表示するたびにHelloWorldのサイズをランダムに変える』というもの。
ということで、このように書いてみた。
<%-- Document : index Created on : 2013/05/14, 8:46:40 Author : Jun --%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <span style="font-size:<% out.print((int)(Math.random()*50)); %>pt">文字サイズ変更テスト </span> </body> </html>
まず、確認にはなるが
<span style="font-size:Xpt> hogehoge </span>
で、hogehogeの文字サイズをXptにすることが出来る。よって、このXをランダムに出力することが出来れば、文字サイズをランダムに出来る。
jspでは、<% %>内を、javaの命令として評価する。よって、xの部分をMath.Randomで0-1の範囲でデータを生成し、その50倍としている。あとは、表示したページのソースコードを確認すれば、乱数によって生成されていることが分かる。
また、更新するたびにサイズが変わることから、このHTMLがアクセスするたびに作りなおされていることも分かると思う。