WEBアプリケーション開発入門

Webアプリケーション開発入門
Introduction to Web Application Development
大岩研究会
今野隆平
2002年5月9日
本日の目標
Webアプリケーションを作る!
Webアプリケーションとは


Webブラウザからサーバ上のサービスを受けられる(第1回目のサブゼミより)
Webアプリの例として前回とりあげられたものは・・・


掲示板、検索エンジンなど
質問① 掲示板はWebアプリと言えるか?
動的なページ ≠ Webアプリ
Webアプリは人を幸せにするコンセプトを持っている!

質問② ログインはどうでしょう?

それだけでは単なる動的なページ

例:ログイン後に履修登録が行えるからログインを含めてWeb履修システ
ムはWebアプリと言える

上の例を使えば、ログイン画面、ログイン認証プログラム、授業選択画面、
などWeb履修登録に関係するファイルを全てまとめてWebアプリととらえる
サーバサイドJava技術はWebアプリを作るためにある!

CGIとサーバサイドJavaでWebアプリを2つ作ってみた・・・何が違うだろう?
/public_html
loginA.html
loginB.html 数多くのファイルが関連するWebアプリの扱いが大変!
Webアプリという概念がない
/cgi
CGIは動的なページを作るにとどまる技術
loginA.cgi
2個目を作ると・・・
loginB.cgi
例


CGIの場合、どのファイルがどのWebアプリに関連しているのがわかりにくい
サーバサイドJavaでWebアプリを作る場合、1つのディレクトリに関連するファイ
ルをすべて設置する。そしてそのディレクトリを1つのソフトウェアのように扱う
WebアプリAに関する
WebアプリBに関する
HTMLファイル
例
/WebアプリB Webアプリを一つのディレクトリで管理する仕組みがある
サーブレット実行ファイル
Webアプリという概念がある
画像ファイル
2個目を作ると・・・
サーバサイドJavaはWebアプリを作るための技術
などをまとめて管理する
などまとめて管理する
/WebアプリA
サーブレットとは




サーバ側で動作するJavaのプログラム
クライアント(ブラウザなど)からHTTPリクエストがくると実行される
HTTPリクエストを受け取り何らかの処理をしてHTTPレスポンスで結果を返す
単独では動作せず、サーブレットを実行できる環境が必要
普通のJavaプログラムの実行
main(){
_________
_________
_________
}
java HOGE
実行
Servletプログラムの実行
doGet(){
_________
_________
________
}
アプリケーションサーバ

サーブレットはアプリケーションサーバが実行する
HTTPリクエスト
実行
アプリケーションサーバとは





別名をWebアプリケーションサーバと言う
WebサーバをWebアプリケーションのために拡張したもの
HTTPで通信する
サーブレットなどのサーバサイドJavaの実行環境を実装している
Webアプリを管理するために便利な機能を持つ



各Webアプリを一つのディレクトリで管理する
各Webアプリごとに決まりごとを設定できるなど・・・
アプリケーションサーバ
Tomcat
Tomcatはアプリケーションサーバの一つである
サーブレットコンテナ
クライアントとWebアプリが
HTTPリクエスト/レスポンスを利用して
対話するときの仲介役になる
Webサーバ
サーブレット
クライアントとサーブレットがHTTPリクエスト/レスポンスを利用して
対話するのを見る(復習)
それでは前回作ったサーブレットをGETリクエストで起動してみよう
①Tomcatを起動する
②DOSプロンプトを開く
③C:>telnet localhost 8080 と打って改行
④GET /examples/servlet/SampleServlet HTTP/1.1 と打って改行2回
手順
するとこんなHTTPレスポンスがサーブレットから帰ってくる
HTTP/1.1 200 OK
Content-Type: text/html
Date: Wed, 08 May 2002 07:32:58 GMT
Server: Apache Tomcat/4.0.1-b1 (HTTP/1.1 Connector)
Connection: close
<html>
<body>
<h1>Hello Sample Servlet World!</h1>
</body>
</html>
ホストとの接続が切断されました。
クライアントからのリクエストに対して
サーブレットが処理した結果を
送信してきたのが分かりましたか?
今行われたことをプログラミングの面から見てみる
doGet(HttpServletRequest req, HttpServletResponse res){
res.setContentType(“text/html”);
GET /examples/servlet/SampleServlet
Content-Type: text/html
PrintWriter
out = res.getWriter();
HTTP/1.1
Accept: image/gif, image/x-xbitmap,
out.println(“<html>”);
image/jpeg, image/pjpeg,
out.println(“<body>”);
application/vnd.
ms-powerpoint,
out.println(“<h1>Sample
Servlet World</h1>”);
application/vnd.ms-excel,
application/msword, */*
out.println(“</body>”);
Accept-Language: ja
Accept-Encoding: gzip, deflate
out.println(“</html>”);
User-Agent: Mozilla/4.0
}
(compatible; MSIE 6.0;
Windows NT 5.0)
Host: localhost:10000
Connection: Keep-Alive
リクエスト・メッセージ

Date: Wed, 08 May 2002 07:32:58
GMT
Server: Apache Tomcat/4.0.1-b1
(HTTP/1.1 Connector)
Connection: close
<html>
<body>
<h1>Hello Sample Servlet World!</h1>
</body>
</html>
レスポンス・メッセージ
クライアントに処理結果を反映させたレスポンスを送る
Webアプリケーションを作る
以下の手順でWebアプリケーションを作ります。
①Webアプリ用のディレクトリの準備
②WEB-INFディレクトリを作る
③web.xmlファイルを作る
④プログラム書く
⑤プログラムをコンパイルする
⑥クラスファイルを配置する
したの3つは実習課題です。とりあえず、上の3つを順を追ってみていきましょう。
Webアプリケーションには以下の決まりごとがある

Webアプリケーションのファイル構成
/Webアプリ名/WEB-INF/classes
/WEB-INF/lib
/WEB-INF /web.xml
/index.html
/top.gif

Webアプリケーションの呼び出し方法 (web.xmlで指定可)


サーブレットの呼び出し

http://ホスト名:ポート番号/webアプリ名/servlet/クラス名
例:http://localhost:8080/examples/servlet/SampleServlet
HTMLファイルの呼び出し

http://ホスト名:ポート番号/webアプリ名/index.html
Webアプリの宣言




TOMCAT_HOME/webapps/直下に新しいディレクトリを作る
TOMCAT_HOME/webapps/Webアプリ名
このディレクトリがルートになる
http://localhost:8080/Webアプリ名/からこのWebアプリ
にアクセスする
TOMCAT_HOME/
webapps
Webアプリ名
WEB-INFディレクトリを作る


TOMCAT_HOME/webapps/Webアプリ名以下にWEB-INFディレクトリを作成
する
その中にコンパイルしたくラスを配置するclassesディレクトリを作る


クラスファイルを格納するディレクトリ。Web アプリケーションを実行する際にはここ
がクラスパスに自動的に設定される。作成したサーブレットはここに置く必要がある。
そしてさらにjarファイルを収めるためのlibディレクトリを作る

WEBアプリケーションで使う beansなどのjar形式のアーカイブをここに格納する。
実行時には自動的にクラスパスに設定される。ここは今は気にしないように。
Webアプリ名
WEB-INF
classes
lib
WEB_INF/web.xmlファイルを作る



ディレクトリの準備ができたので、このWEBアプリケーションの設定ファイルで
あるweb.xml をWEB-INF以下に作成する。
web.xmlを使うとWebアプリごとに決まりごとを設定できる!
具体的には以下のようなものが設定できる
①サーブレットの初期化パラメータ
②セッションコンフィグレーション
③サーブレット/JSPの定義
④サーブレット/JSPのマッピング
⑤MIMEタイプのマッピング
⑥ウェルカムファイルリスト
⑦エラーページ
⑧セキュリティー
基本ファイル構成の出来上がり
Webアプリ名
WEB-INF
classes
lib
web.xml

今回設定するのはサーブレットの定義とマッピングです。ここではとりあえず、
骨組みだけ書いて置いて置きましょう。
では実習課題


日付を表示するサーブレットを作ってさっきのやり方で簡単なWeb
アプリを作る
自分のWebアプリにトップページを加えてください。上で作った
サーブレットをリンクで呼び出せるようにしてください。HTMLファイ
ルの置き場所に気をつけてください。