最近の記事
- 4/22 - 思い出の紙時計
- 3/29 - さくらインターネットの VPS リニューアル
- 3/19 - SSHD への攻撃を分析してみた
- 3/9 - キーボードの過酷さ
- 3/8 - .NET のパフォーマンスについて
- 3/7 - phpMyAdmin への攻撃
- 3/1 - ミイラ取りがミイラになりかけた
- 2/22 - URL を知らなければ安全だと?
- 2/16 - 決意
- 1/30 - ルーターの UPnP 対応状況
Entering Passive Mode
主要な要素だけといいながら、3 回もかかっとるなぁ。
さて、あと少し。
・<welcome-page-list> 要素
Web アプリケーションに割り当てられている、
どの Servlet にも対応しない要求があった場合、
既定の Servlet によって処理され、
URL のパスに対応するファイルがそのまま公開される。
さて、続き続き。
・<context-param> 要素
<context-param> 要素を使うと、
この Web アプリケーションの ServletContext に、
初期化パラメータを引き渡すことができる。
<context-param>
<param-name>COPYRIGHT<param-name>
<param-value>Copyright (C) 1994-2007 hogehoge</param-value>
</context-param>
今日は、web.xml の中身について調べてみよう。
その内容は、Servlet 規格のバージョンによって少し異なる。
ここでは、最新の安定規格である 2.4 を使うことにしよう。
通常は、配備する予定の Servlet コンテナが準拠している
Servlet バージョン以下を自由に選ぶことになる。
例えば、Apache Tomcat の場合、
最新の v6 系 は Servlet 2.5、
v5 系は Servlet 2.4 に対応している。
なかなか Struts が出てこないが、
まだ少し Serlvet について調べることがある。
Servlet API については大体分かったので、
次は Web アプリケーションのディレクトリ構造を調べよう。
Servlet コンテナに Web アプリケーションを導入することを
「Deployment」(配置・配備)と呼ぶが、
Servlet 規格では、この作業を単純化するため、
Web アプリケーションのディレクトリ構造を定めている。
Servlet に限らないが、プログラムが使う永続的なデータは、
データベースやファイル等に格納する。
また、プログラムが扱うデータには一時的なものもある。
これは例えば画面のレイアウトや状態管理のために、
(変数などの)メモリを割り当てて格納しておくデータだ。
さて、Web アプリケーションの場合はどうなるか。
永続的なデータに関しては、上記同様に、
データベースやファイル等に格納すればいいのだが、
一時的なデータを格納するためには、
Servlet API で決められたルールに従わなければならない。
それは Servlet が Servlet コンテナの制御下にあるからだ。
今日は、Session について調べる。
ビジネスアプリケーションには、
状態管理は必要不可欠である。
例えば、利用者のユーザ認証が必要な場合は、
その利用者によるアクセスを識別しなければならず、
データの変更や登録等の一連の処理の場合、
最低限、編集⇒確認⇒完了の 3 ステップについて、
同じ利用者が操作していることを確認しなければならない。
今日は、Request と Response について調べる。
Web アプリケーションはリクエストを受け取ると、
ServletRequest と ServletResponse を生成する。
ServletRequest と ServletResponse は汎用的なもので、
Web ベースの場合は、このインタフェースを拡張した、
以下のインタフェースとなる。
・javax.servlet.http.HttpServletRequest
・javax.servlet.http.HttpServletResponse
最初に、ServletContext と Servlet について調べる。
・javax.servlet.ServletContext
・javax.servlet.http.HttpServlet
まずは、ServletContext だ。
ServletContext は、Web アプリケーションを表している。
Servlet コンテナは複数の Web アプリケーションを持て、
各 Web アプリケーションは、任意のパスに割り当てられる。
Servlet の持つ機能について考えるには、
Servlet コンテナが果たす役割を知る必要がある。
Servlet コンテナには色々な製品があるが、
オープンソース市場で広く使われている、
Apache Tomcat が有名どころである。
Tomcat をはじめとする HTTP 用の Servlet コンテナは、
HTTP サーバとして機能し、HTTP 通信を理解する力を持つ。
基本的には、Apache (Httpd) 等の Web サーバと同じだ。
昨日、思想と機能を理解することが大事であると述べたが、
思想というのはすぐには見えてこないため、
それを理解するのには時間がかかると思われる。
なので、先に Struts の機能を調べながら考えてみよう。
まず、Struts 1.xは、HTTP に特化した Servlet である。
Servlet であるということは、Struts 自身が、
HTTP リクエストを受けて処理するということだ。
言い換えると、開発者が Struts に制御を渡すのではなく、
Struts が開発者に制御を渡すという方法になるのである。