<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta http-equiv="Content-Script-Type" content="text/javascript" />
    <meta http-equiv="Content-Style-Type" content="text/css" />
    <title>HTTPリクエストの処理の流れ</title>
    <link rel="stylesheet" href="/css/style.css" type="text/css" media="all" />
    
    
  </head>
  <body>
    <div class="header">
      <div id="pane.left-header" class="pane left">
        <div id="org.seasar.kvasir.cms.toolbox.customPop-8" class="pop org.seasar.kvasir.cms.toolbox.customPop">
          <div class="body"><div class="wiki">
<ul>
<li><a href="/" class="pageNotFound">（サイトトップ）</a></li>
<li><a href="/download">ダウンロード</a></li>
<li><a href="/news/" class="pageNotFound">新着情報</a></li>
<li><a href="/doc/" class="pageNotFound">ドキュメント</a></li>
</ul>
</div>
</div>
        </div>
      </div>
      <div id="pane.right-header" class="pane right">
        <div id="org.seasar.kvasir.cms.toolbox.loginPop-1" class="pop org.seasar.kvasir.cms.toolbox.loginPop">
          <div class="body">
<form method="post" action="/plugins/toolbox/login.do/doc/plugin-dev/httpRequestProcessing">
    <div class="row">
      <span class="label">Name</span>
      <span class="textinput"><input type="text" name="name" size="12" value="" /></span>
    </div>
    <div class="row">
      <span class="label">Password</span>
      <span class="textinput"><input type="password" name="password" size="12" value="" /></span>
    </div>
    <div class="row">
      <span class="submit"><input type="submit" value="Login" /></span>
    </div>
</form>
</div>
        </div><div id="org.seasar.kvasir.cms.pop.loginUserPop-1" class="pop org.seasar.kvasir.cms.pop.loginUserPop">
          <div class="body"></div>
        </div>
      </div>
    </div>
    <div class="page-frame">
      <div id="pane.left-sidebar" class="pane sidebar-frame sidebar subcontent">
        <div id="org.seasar.kvasir.cms.toolbox.searchPop-1" class="pop org.seasar.kvasir.cms.toolbox.searchPop">
          <h2 class="title">Search</h2>
          <div class="body"><form class="simple" method="get" action="/plugins/toolbox/search.do">
  <input type="text" name="query" size="12" />
  <input type="submit" value="Go!" />
</form>
</div>
        </div><div id="org.seasar.kvasir.cms.toolbox.customPop-6" class="pop org.seasar.kvasir.cms.toolbox.customPop">
          <h2 class="title">リンク</h2>
          <div class="body"><div class="wiki">
<ul>
<li><a href="http://www.seasar.org/">The Seasar Project</a></li>
<li>関連プロダクト</li>
<ul>
<li><a href="http://www.skirnir.net/product/freyja/">Freyja</a></li>
<li><a href="http://www.skirnir.net/product/rst/">RST</a></li>
<li><a href="http://www.skirnir.net/product/xom/">xom</a></li>
<li><a href="http://ymir.sandbox.seasar.org/">Ymir</a></li>
<li><a href="http://cms.sandbox.seasar.org/">CMS Project</a></li>
</ul>
</ul>
</div>
</div>
        </div><div id="org.seasar.kvasir.cms.toolbox.customPop-5" class="pop org.seasar.kvasir.cms.toolbox.customPop">
          <h2 class="title">メニュー</h2>
          <div class="body"><div class="wiki">
<ul>
<li><a href="/" class="pageNotFound">（サイトトップ）</a></li>
<li><a href="/download">ダウンロード</a></li>
<li><a href="/news/" class="pageNotFound">新着情報</a></li>
<li><a href="/doc/user">サイト管理者マニュアル</a></li>
<ul>
<li><a href="/doc/user/install">はじめの一歩</a></li>
<li><a href="/doc/user/database">データベースの設定</a></li>
<li><a href="/doc/user/faq">FAQ</a></li>
</ul>
<li><a href="/doc/plugin-dev">プラグイン開発者マニュアル</a></li>
<ul>
<li><a href="/doc/plugin-dev/faq">FAQ</a></li>
</ul>
<li><a href="/doc/kvasir-dev">Kvasir/Sora開発者マニュアル</a></li>
<li><a href="/doc/ref">リファレンスマニュアル</a></li>
<li><a href="https://ml.seasar.org/mailman/listinfo/kvasir-user">メーリングリストに参加するには</a></li>
<li><a href="https://www.seasar.org/issues/browse/KVASIR">既知の不具合を閲覧する・不具合を報告する</a></li>
<li><a href="https://www.seasar.org/svn/sandbox/kvasir/">SVNリポジトリ</a></li>
<li><a href="http://svn.seasar.org/browse/?root=sandbox.kvasir">SVNリポジトリを閲覧</a></li>
<li><a href="/doc/environments">動作確認状況</a></li>
</ul>
</div>
</div>
        </div><div id="org.seasar.kvasir.cms.toolbox.customPop-3" class="pop org.seasar.kvasir.cms.toolbox.customPop">
          <h2 class="title">協力者募集！</h2>
          <div class="body"><div class="wiki">
<p>プラグイン作成、サイトテンプレート（HTML、CSS）作成、ドキュメント作成など、開発に協力して頂ける方を募集しています！</p>
<p>協力して下さる方は<a href="https://ml.seasar.org/mailman/listinfo/kvasir-user">kvasir-userメーリングリスト</a>にご連絡下さい。大勢の方のご協力をお待ちしています。</p>
</div>
</div>
        </div>
      </div>
      <div id="pane.main" class="main pane">
      
        <div id="org.seasar.kvasir.cms.toolbox.breadcrumbsPop-1" class="pop org.seasar.kvasir.cms.toolbox.breadcrumbsPop">
          
          <div class="body"><ul>
  <li class="first"><a href="/">(TOP)</a></li><li><a href="/doc">ドキュメント</a></li><li><a href="/doc/plugin-dev">プラグイン開発者マニュアル</a></li><li>HTTPリクエストの処理の流れ</li>
</ul>
</div>
        </div><div id="org.seasar.kvasir.cms.pop.contentPop-1" class="pop org.seasar.kvasir.cms.pop.contentPop">
          <h2 class="title">HTTPリクエストの処理の流れ</h2>
          <div class="body">
<ul class="information">
  
  <li>2010-05-27 18:33 更新</li>
</ul>
<div class="content"><div class="wiki">
<p>Kvasir/SoraではHTTPリクエストはまずKvasirFilter（org.seasar.kvasir.webapp.servlet.KvasirFilter）によってフィルタ処理され、次にKvasirServlet（org.seasar.kvasir.webapp.servlet.KvasirServlet）によって処理されます。</p>
<p>KvasirFilterはorg.seasar.kvasir.base.webappプラグインのrequestFilter拡張ポイントにプラグインされたRequestFilterをフェーズ順に呼び出します。同一フェーズに複数のRequestFilterがプラグインされている場合は<em>後からプラグインされたものが先に</em>呼び出されます。</p>
<p>RequestFilterのフェーズには以下のものがあります。</p>
<dl>
<dt>initializationフェーズ</dt><dd>初期化フェーズです。</dd>
<dt>authenticationフェーズ</dt><dd>認証を行なうフェーズです。</dd>
<dt>permissionフェーズ</dt><dd>認可、権限チェックを行なうフェーズです。</dd>
<dt>filteringフェーズ（デフォルト）</dt><dd>一般的なフィルタ処理を行なうフェーズです。</dd>
<dt>elseフェーズ</dt><dd>上記のどのフェーズにもあてはまらない処理を行なうフェーズです。</dd>
</dl>
<p>KvasirServletはorg.seasar.kvasir.base.webappプラグインのrequestProcessor拡張ポイントにプラグインされたRequestProcessorをフェーズ順に呼び出します。同一フェーズに複数のRequestProcessorがプラグインされている場合は<em>後からプラグインされたものが先に</em>呼び出されます。</p>
<p>RequestServletのフェーズには以下のものがあります。</p>
<dl>
<dt>initializationフェーズ</dt><dd>初期化フェーズです。</dd>
<dt>controllerフェーズ</dt><dd>リクエストのディスパッチを行なうフェーズです。</dd>
<dt>logicフェーズ</dt><dd>リクエストに関するビジネスロジックの実行を行なうフェーズです。</dd>
<dt>presentationフェーズ（デフォルト）</dt><dd>リクエストの処理結果のレンダリング処理を行なうフェーズです。</dd>
<dt>elseフェーズ</dt><dd>上記のどのフェーズにもあてはまらない処理を行なうフェーズです。</dd>
</dl>
<p>Kvasir/Sora CMSにおいて具体的に呼び出されるFilter/Processorは以下のとおりです。基本的に上から下に順に呼び出されていきます。</p>
<ul>
<li>org.seasar.kvasir.webapp.servlet.KvasirFilter → 各RequestFilter</li>
<ol>
<li>initializationフェーズ</li>
<ul>
<li>[R] multibyteRequestFilter (org.seasar.kvasir.base.webapp.multibyte)</li>
</ul>
<li>authenticationフェーズ</li>
<li>permissionフェーズ</li>
<li>filteringフェーズ（デフォルト）</li>
<ul>
<li>[R, F, I] pageRequestFilter (org.seasar.kvasir.cms) → 各PageFilter</li>
<ol>
<li>initializationフェーズ</li>
<ul>
<li>[R] [Ymir] setCharacterEncodingPageFilter (org.seasar.kvasir.cms.ymir)</li>
<li>[R] [Ymir] multipartRequestPageFilter (org.seasar.kvasir.cms.ymir)</li>
</ul>
<li>authenticationフェーズ</li>
<ul>
<li>[R] actorBindingPageFilter (org.seasar.kvasir.cms)</li>
</ul>
<li>permissionフェーズ</li>
<ul>
<li>[R] concealPageFilter (org.seasar.kvasir.cms)</li>
<li>[R] permissionPageFilter (org.seasar.kvasir.cms)</li>
</ul>
<li>filteringフェーズ（デフォルト）</li>
<ul>
<li>[R, I] [Ymir] ymirPageFilter (org.seasar.kvasir.cms.ymir)</li>
</ul>
<li>elseフェーズ</li>
</ol>
</ul>
<li>elseフェーズ</li>
</ol>
</ul>
<ul>
<li>org.seasar.kvasir.webapp.servlet.KvasirServlet → 各RequestProcessor</li>
<ol>
<li>initializationフェーズ</li>
<li>controllerフェーズ</li>
<ul>
<li>staticContentProcessor (org.seasar.kvasir.base.webapp)</li>
</ul>
<li>logicフェーズ（デフォルト）</li>
<ul>
<li>pageRequestProcessor (org.seasar.kvasir.cms) → 各PageProcessor</li>
<ol>
<li>initializationフェーズ</li>
<li>controllerフェーズ</li>
<ul>
<li>standardPageProcessor (org.seasar.kvasir.cms)</li>
</ul>
<li>logicフェーズ（デフォルト）</li>
<ul>
<li>javaPageProcessor (org.seasar.kvasir.cms.java)</li>
</ul>
<li>presentationフェーズ</li>
<ul>
<li>[Ymir] resourcePageProcessor (org.seasar.kvasir.cms.ymir)</li>
<li>[Ymir] zptPageProcessor (org.seasar.kvasir.cms.ymir)</li>
<li>[templateType=zpt] zptPageProcessor (org.seasar.kvymir.cms.zpt)</li>
</ul>
<li>elseフェーズ</li>
<ul>
<li>noEntryPageProcessor (org.seasar.kvasir.cms)</li>
</ul>
</ol>
</ul>
<li>presentationフェーズ</li>
<li>elseフェーズ</li>
</ol>
</ul>
<p>[R]、[F]、[I] はそれぞれリクエストディスパッチ、フォワードディスパッチ、インクルードディスパッチの時に呼び出されることを表わします。</p>
<p>[templateType=zpt] はテンプレートタイプがZPTである場合に呼び出されることを表わします。</p>
<p>[Ymir] はYmirアプリケーションの配下のパスへのリクエストの時に呼び出されることを表わします。</p>
</div>
</div>
</div>
        </div><div id="org.seasar.kvasir.cms.toolbox.menuPop-2" class="pop org.seasar.kvasir.cms.toolbox.menuPop">
          
          <div class="body">
<div class="document-list" style="margin-top:4ex">
  
</div>
</div>
        </div>
      
    </div>
    </div>
    <div class="footer-delimiter"></div>
    <div id="pane.footer" class="pane footer">
      <div id="org.seasar.kvasir.cms.pop.poweredByPop-1" class="pop org.seasar.kvasir.cms.pop.poweredByPop">
        <div class="body">Powered by Kvasir/Sora</div>
      </div>
    </div>
  </body>
</html>
