スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

基礎からのサーブレット/JSP(8日目)

基礎からのサーブレット/JSP 改訂版 (プログラマの種シリーズ)基礎からのサーブレット/JSP 改訂版 (プログラマの種シリーズ)
(2007/03/01)
宮本 信二

商品詳細を見る


CHAPTER8 初めてのJSP

何だか突然CHAPTERのページ数が増えたので覚えておくべきだろうなと思うところだけ
まとめて書くことにする。

JSPの式

<%= 1 + 1 %>

この部分には「2」が表示される。Javaの文の末尾の「;」がつかないことに注意。

JSPは実はサーブレット
JSPは最初にアクセスがあった際に、
サーブレットのjavaファイルへ変換

サーブレットのjavaファイルをコンパイル。classファイルを作成

classファイルへアクセス
という処理が行われる。2回目以降は直接classファイルへアクセスするようで
javaファイルへの変換、コンパイルは行われない。

中間ファイルの場所
JSPのソースファイルから変換されたjavaファイル、classファイル(中間ファイル)は
Tomcatのデフォルトで{コンテキストのディレクトリ}/work/Catalina/localhost/entryに保存される。
JSPの挙動がおかしくなったらworkよりしたのファイル、フォルダをすべて削除してみるといいかも。

JSPを変更した場合
サーブレットを変更した場合はコンテキストをリロードする必要があったが、JSPに関しては
その必要はない。ソースを書き換えたら、Tomcat側がjspファイルと変換後のファイルのタイムスタンプを
比較し、JSPのソースが新しい場合、再び変換→コンパイルという作業を行ってくれる。


スクリプトレット
以下の<% ~ %>で括られている部分をスクリプトレットと呼ぶ

<HTML>
<HEAD>
<TITLE>Scriptlet</TITLE>
</HEAD>
<BODY>
<H2>JSP Scriptlet</H2>
<%
int count = 0;
for( int i=0;i<10;i++){
  count+=1;
}
%>

count = <%=count%>
</BODY>
</HTML>



出力用の変数out
JSPでは何も宣言せず、いきなり使用できるoutという暗黙のオブジェクトがある
利用できるメソッドはprintln(...)とprint(...)標準出力ではなく、
ブラウザのレスポンスへ出力を行ってくれる。

<HTML>
<HEAD>
<TITLE>Scriptlet</TITLE>
</HEAD>
<BODY>
<H2>JSP Scriptlet</H2>
<%
int count = 0;
for( int i=0;i<10;i++){
  count+=1;
}
out.println("count=" + count);
%>
</BODY>
</HTML>

out変数は・・・
・JspWriterというクラスのインスタンス。
・print系メソッドの引数にはString,Object,intなどの各プリミティブが指定可能。

JSPのコメント
こんな感じで書きます。

<%-- JSP Comment --%>



コンテンツタイプの指定
こんな感じで行います。

<%@page contentType="text/html; charset=UTF-8" %>
<HTML>
<HEAD>
<TITLE>contentTypeの指定</TITLE>
</HEAD>
<BODY>
<H2>コンテンツタイプの指定</H2>
1たす1は
<%= 1 + 1 %>
</BODY>
</HTML>

<%@ ~ %>で記述されているタグはディレクティブと呼ばれ、JSPの各種設定を行う。
基本的な書式は以下。

<%@<ディレクティブ名> <属性>=<値> %>


import宣言
以下のように記述を行い、外部のクラスを呼び出すことができる。

<%@page contentType="text/html; charset=UTF-8" %>
<%@page import="java.util.Date" %>
<HTML>
<HEAD>
<TITLE>now</TITLE>
</HEAD>
<BODY>
現在時間は <BR>
<%= new Date() %>
</BODY>
</HTML>



複数クラスをimportするときは以下のように指定できる

<%@page import="java.util.Date" %>
<%@page import="java.io.PrintWriter" %>

または
<%@page import="java.util.Date,java.io.PrintWriter" %>



練習問題
こんな感じでいけたけど

<%@page contentType="text/html; charset=UTF-8" %>
<%@page import="foo.Menjan" %>
<% Menjan menjan = new Menjan(); %>
<HTML>
<HEAD>
<TITLE>AI面雀</TITLE>
</HEAD>
<BODY>
<H2><%=menjan.getWord()%></H2>
</BODY>
</HTML>

解答例はimportも代入もいらなかった。importの行を消して
H2タグの中身を以下に書き換えることでも問題ないらしい。なるほどねー。

<%=new foo.Menjan().getWord()%>



チャプターのページ数とかが跳ね上がったので
いよいよ本格的になってきたんだろうか。
いずれにしてもここからが知りたい事山盛りのはずなので
気合を入れて行きたい。
スポンサーサイト

コメントの投稿

非公開コメント

プロフィール

ラム君(モヒカンVer)

Author:ラム君(モヒカンVer)
都内でプログラマのようなものをやっています。
まだまだ初心者ですがよろしくお願いします。

最新記事
最新コメント
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。