ウィリアムのいたずらの開発日記

ウィリアムのいたずらが、コンピューター関係について、思ったことを好き勝手に書いているブログです。

TomcatからStrutsの流れを確認する

2009-02-10 15:37:27 | Weblog

(1)ユーザーがブラウザから、Strutsのプログラム
   *.doを起動するように指令する

(html:formタグでは、名前に*.doを指定していないが、
 実際には、*.doがつく)

    ↓

(2)Tomcatが、HTTPで/*.doを起動するように受け取る。

    ↓

(3)そうすると、Tomcatは、パスから、そのサーブレット関係の
   web.xmlをみる

(4)strutsのweb.xmlは、以下のようになっている。
<?xml version="1.0" encoding="ISO-8859-1"?>
  <!DOCTYPE web-app PUBLIC
	"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
	"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
  <display-name>Struts Blank Application</display-name>
  <!-- Standard Action Servlet Configuration -->
  <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
 </servlet>
  <!-- Standard Action Servlet Mapping -->
  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
  <!-- The Usual Welcome File List -->
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>


つまり、*.doのurl-patternのものは、org.apache.struts.action.ActionServletを起動しろとなっている。
このorg.apache.struts.action.ActionServletは、struts.jarにあるので、そこで起動する。

    ↓


(4)org.apache.struts.action.ActionServletは、struts-config.xmlの内容にもとづいて、起動するActionを決定する。

(4-1).まず、struts-config.xmlの、 action-mappingsタグ中の
   <action path=・・・
  のpathと、起動するURLが一致したら、
  そこに記述されている、typeのクラスをActionとして起動する。

(4-2).その際、入力値を引数として渡したい。
 そのために、actionタグのnameをみる。
 nameで指定された名前をFormBeanから探す。

(4-3).見つかったら、そのタグのtypeに書かれているのが、値のクラスなので、
 そのクラスを生成して、入力値をそのクラスへセットする

(4-4)ActionServletは、(4-1)で見つかったクラスを起動する。
     引数Formの値は、(4-3)のオブジェクト

(4-5)ActionServletは、(4-4)の結果を受け取る。そうしたら、その結果と
     struts-config.xmlのactionタグ中のforwardで設定されているpathを起動する。
     pathが、*.doなら、(4-1)に戻る。
     pathが*.jspなら、(5)へ

       ↓

(5)JSPを起動する。
   このとき、JSPが既に読み込まれていたら、(6)へ

(5-1)読み込まれていない時、JSPからサーブレットへ変換する
  (jasperが変換する)
   まず、JSPのソースコードをサーブレットに変換する。
   このソースコードは、

   Tomcatホームwork/Standalone/localhost/アプレット名

   の下に”なんとか_jsp.java”でできる。

(5-2)コンパイルされてサーブレットになる。出来たクラスは
 
   Tomcatホームwork/Standalone/localhost/アプレット名

   の下に”なんとか_jsp.class”でできる。

       ↓

(6)Tomcatが、(5)で作った(前に作って既にある場合含む)
   JSPを起動し、その結果を受け取る

       ↓

(7)Tomcatは、受け取った結果にヘッダを付けて、呼び出しもとの
   ユーザーに返す。


ジャンル:
ウェブログ
この記事についてブログを書く
この記事をはてなブックマークに追加
« 振り込め詐欺は、キャリアと... | トップ | どこに駐車したか忘れた人対... »
最近の画像もっと見る

あわせて読む