読者です 読者をやめる 読者になる 読者になる

ゆとりずむ

東京で働く意識低い系ITコンサル(見習)。金融、時事、節約、会計等々のネタを呟きます。

MENU

JSPとTwitter APIのお勉強 - JSPとサーブレットの復習編

個人開発・勉強


今回、アプリケーションを作るにあたって、JSPサーブレットを使っていこうとおもいます。両方使うのは久しぶりなので、まずは復習から。

JSP/サーブレットってなんだっけ?

JSPは、サーバの受け付けた情報を元に、Javaの文法でHTMLを動的に生成することができる言語。有名な言語では、PerlPHPが近い。
CUIがキーボードから受け取った情報を文字で、GUIがマウスから受け取った情報を動作で返すように、JSPPerl,PHPブラウザから受け取った情報をHTMLで返す。ブラウザが出力できる範囲かつHTML(あとJavascriptとかブラウザでネイティブに動くもの)で表現できる範囲になるが、ユーザはブラウザさえあれば特別なアドオンは不要
JSP内にJavaの構文をガリガリ書いていくこともできるけれど、プログラム本体はJavaに記載しサーバに配置しておき、JSPJavaプログラムを起動するだけにすることも出来る。このJavaプログラムをサーブレットと言う。

最低限の出力編

つべこべ言っていても仕方がないので、とりあえずなんか書いてみる。

環境

今回使用する環境は以下のとおり

  • その他諸々はNetBeansインストール時のバージョン

Windowsでも、もう少し古いバージョンでもたぶん大丈夫。

プロジェクトの作成

開発はNetBeansを使っていく。NetBeansのメニューから以下のように選択しサンプル用データを作成する。

  1. ファイル -> 新規プロジェクト
  2. JavaWeb -> Webアプリケーション
  3. プロジェクト名を『SampleJSP』に指定し、後はデフォルト。
  4. サーバはGlassFish Server 3.1.2、Java EEJava EE 6 Webを選択。
  5. フレームワークはなにそれ美味しいのなのでチェックしない。


これで、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がアクセスするたびに作りなおされていることも分かると思う。