« ServletでhelloWorld改(Tomcatの使い方) | トップページ | ◇夏とは言えど片田舎:知識と論理 »

JSPでhelloWorld改

JSPで単純なインタラクティブ画面を作成します。
ボタンを押すたびに「hello world」「This is JSP-test-1.」という文字列 を交互に出します。さらに補助的にクライアントからサーバ に送られた数値を表示しています

この画面のHTMLは次のものです。赤文字の部分はボタンを押すたびに変化します。

<html><head></head><body>
<form method='GET'action='http://localhost:8080/test/jsp/hello_JSP.jsp'>
<input type='hidden' name='C' value='7'>
<input type='submit' value='Click Me'>
</form>
<p>
Hello World. (6)
</p>
</body></html>
(このHTMLを出すJSP記述は後述します)

 Tomcatのインストール、起動

JSPはサーブレットと同じくTomcatが実現します。
TOMCATの基本的な設定はサーブレットに関する記事 ServletでhelloWorldにありますので参照してください。

 サーブレットとの違いとプログラムのおき場所

JSPはサーブレットと異なり、予めコンパイルすることはありません。
URLはjspソースをwebapps下のアドレスで直接指します。

ソースはwebappsの下であればどこにでも配置できますが、混乱の防止の ため、例えばtest\jspなどといったフォルダを作成し、そこに置くことに します。

   [インストール先]\  <-- C:\とかC:\Program Files\Apacheとか
      Tomcat 6.0\
          bin\
             tomcat6w.exe  <-- Tomcatの起動/停止を行います
          lib\
          logs\
          webapps\
             examples\
                 WEB-INF\
                    classes\
             実行.class群
                       プロパティファイル
             サブフォルダ群\
                          実行.class群
                    lib\
                    web.xml
             (新規開発)\       <-- 適当な名前で
                 jsp
                    JSPファイル.jsp <-- JSPプログラムを直接置く
                 WEB-INF\
                    classes\   <-- サーブレットはここに実行プログラムを置く
             実行.class群
                       プロパティファイル
             サブフォルダ群\
                          実行.class群
                    lib\
                    web.xml   
                 src\               
                    プログラム.java 
     work\

このような形で置かれたJSPプログラムファイルはURLで直接 指定されると、TOMCATが一旦コンパイルし、その結果が実際 に動き出すことになります。コンパイル結果はworkフォルダに 置かれますが利用者は特に意識する必要はありません。また、 コンパイルは最初の1回だけ行われ2回目以降のアクセスで は既にコンパイルされworkに置かれているプログラムが 利用されます。

 JSP記述

JSPはHTMLの中にJava記述を埋め込む形をとります。
<%と%>の間にJavaプログラム(論理ブロック)を書くことができます。 このプログラム中でout.println()関数で出力したものが HTML文字列となります。
変数のスコープは論理ブロックとは関連しません。
論理ブロックの中にHTMLブロックを置くことができます。ifなどの 処理による選択ができます。
<%=と%>の間に式を置けばその値がHTML文字列として採用 されます
(JSPの処理としてはブロックがネストするわけではなくHTML部から 論理部へ入ったり出たりするだけです)

<html><head></head><body>
<form method='GET'action='http://localhost:8080/test/jsp/hello_JSP.jsp'>
<%
   int c=0;
   try{c=Integer.parseInt(request.getParameter("C"));}
   catch(Exception e){}
   out.println("<input type='hidden' name='C' value='"
              +(c+1)+"'>"); // printで出すことも
%>
<input type='submit' value='Click Me'>
</form>
<p>
<%
   if( (c%2)==0 ){           // 論理ブロックは変数スコープではない
      %>Hello World. (<%=c%>)<%  // 論理の中にHTMLを置くこともできる
      }
   else{
      %>This is JSP-test-1. (<%=c%>)<%  // 変数をHTML文字列にする
      }
%>
</p>
</body></html>

このJSPファイルを

C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\test\jsp\hello_JSP.jsp
として置けば、URL
  http://localhost:8080/test/jsp/hello_JSP.jsp
でアクセスできます。

 HTMLからの呼び出し

次のHTML記述

<html><body>
<p>
<A HREF="http://localhost:8080/test/jsp/hello_JSP.jsp?C=0">call-JSP</A>
</p>
</body></html>
C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\test\hello_TCatJSP.htm
として置き、ブラウザでURL
http://localhost/test/hello_TCatJSP.htm
にアクセスすると、JSPをリンク経由で呼び出すことができます。

リンクをクリックすると、サーブレットが動き、画面が出ます。

ブラウザでJSPのURLに直接アクセスすることも可能です。

|

« ServletでhelloWorld改(Tomcatの使い方) | トップページ | ◇夏とは言えど片田舎:知識と論理 »

トラックバック


この記事へのトラックバック一覧です: JSPでhelloWorld改:

« ServletでhelloWorld改(Tomcatの使い方) | トップページ | ◇夏とは言えど片田舎:知識と論理 »