<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    胡祥春開發專欄

    基于Java EE & WebService的日文軟件開發
    隨筆 - 1, 文章 - 24, 評論 - 7, 引用 - 0

     

    3.Strutsの処理の流れ

     では、Strutsを使ったアプリケーションの処理の流れを見ていきたいと思います。Strutsを用いたWebアプリケーションは主にActionServlet、フォームBean、アクションクラスの3つで構成されます。また、処理の制御を行う設定ファイルがあり、それがstruts-config.xmlです。以下はこれらの関係を図にしたものです。

    數據加載中……

    第1回:Struts入門編

     
    最近ではStrutsフレームワークを用いたWebアプリケーション開発が非常に注目されています。この記事ではWebアプリケーションを作成したことがある方を対象に、Strutsフレームワークの基本的な仕組みからStrutsを用いたWebアプリケーションの開発の流れまでを紹介します。

    流郷俊彥
    株式會社アイティーブースト
    2004/6/14
     

    【 目次 】
    1.はじめに
    2.フレームワークとは
    3.Strutsの処理の流れ
    4.Strutsアプリケーションの作成
    5.入力用JSPの準備
    6.フォームBeanの定義
    7.アクションクラスの定義
    8.struts-config.xmlの設定
    9.出力用JSPの定義
    10.まとめ
    【実行環境】
    OS WindowsXP
    JDK JDK1.4.2
    WebコンテナTomcat5.0.24
    Struts Struts1.1

    1.はじめに

     Strutsを用いたWebアプリケーション開発というのは現在では至るところで行われています。Java関連の書籍を見るといたるところで「Struts」という言葉を目にすることからStrutsが今世の中で非常に注目されていることがわかります。StrutsはJakartaプロジェクトで開発されたMVCアーキテクチャのController部分を提供してくれるフレームワークです。Strutsを使用して開発を行うことにより、開発効率が向上することや用意されたアクションタグを用いることにより、JSP內でスクリプトを使わずに動的なページを生成することもできます。また、アプリケーションの作成の手順が統一化されるので、機能変更や機能追加なども容易に行えるようになります。これらの理由からもStrutsが注目されているということがわかります。本記事では「Strutsって何?」という方を対象にフレームワークという言葉からStrutsの概要について紹介いたします。


    會員登録のメリット! ▼Java や Linux を體系的に學びましょう!▼
    Stack*のアイティーブーストが、
    新學習方式のカリキュラムを開発しました!
    9500円から(*1)、Java や Linux を體系的に學べます!!
    (*1 テキスト代のみの稅別料金です)



    2.フレームワークとは

     StrutsMVCアーキテクチャのController部分を提供してくれるフレームワークです。そもそもフレームワークとは何なのでしょうか?フレームワークは同種類のアプリケーションにおいて共通している部分を抜き出し、その共通部分を提供してくれるものです。つまり、フレームワークを使ってアプリケーションを開発するということは、アプリケーションの土臺となる部分にフレームワークが提供する機能を利用し、アプリケーション固有のプログラム(部品)のみを作成するということです。


    図中の番號は以下のようなことを行っています。
    (1) ~.doという形式のリクエストがActionServletに対して送られます。
    (2) ActionServletはstruts-config.xmlを參照し、~.doの「~」の部分に対応するフォームBean、アクションクラスを決定します。
    (3) リクエストパラメータを対応するフォームBeanにセットします。また必要であれば入力値のチェックも行います。
    (4) アクションクラスのexecute( )メソッドが呼び出されます。この中でリクエスト毎に固有の処理が実行されます。
    (5) 再度struts-config.xmlを參照し、適切な出力用Viewへ移動します。

     Webアプリケーションで処理の流れとしてよくある、単一のコントローラでリクエストを受け取り、専用のコントローラに処理を振り分ける、パラメータの値をModelにセットする、処理した結果に応じた適切なViewにフォワードするといったWebアプリケーションとしての基本的な処理を行ってくれるのがStrutsです。つまり、Strutsでは要所要所で具體的な処理の內容を定義するだけでWebアプリケーションが作成できます。
     以降では簡単なアプリケーションを作成しこれらの流れを抑えていきましょう。


    會員登録のメリット! ▼Java や Linux を體系的に學びましょう!▼
    Stack*のアイティーブーストが、
    新學習方式のカリキュラムを開発しました!
    9500円から(*1)、Java や Linux を體系的に學べます??!
    (*1 テキスト代のみの稅別料金です)



    4.Strutsアプリケーションの作成

     http://jakarta.apache.org/からStruts1.1をダウンロードします。ダウンロードしたファイルを展開すると中にjakarta-struts-1.1\webapps\struts-blank.warというファイルがあります。このファイルはzip形式で圧縮されたファイルなので拡張子を.zipに変更することで解凍することができます(JARコマンドを使用すれば拡張子を変更する必要はありません)。
     このwarファイルはStrutsを用いたWebアプリケーションのテンプレートになっています。解凍すると、Strutsアプリケーションを作成するために必要なJARファイルや設定ファイルなどが既に適切な位置に配置されています。あとは、この中にクラスやJSPを配置していけばStrutsアプリケーションが作成できます。
     今回はこの中に簡単なユーザ認証を行うアプリケーションを作成していきます。
     なお、今回作成するサンプルプログラムの階層は以下のようになります。


     

    5.入力用JSPの準備

     まず、入力用のJSPから見ていきます。これは以下のようなJSPになります。

    【loginForm.jsp】
     1:  <%@ page contentType="text/html; charset=Windows-31J" %>
     2:  <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
     3:  <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
     4:  <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
     5: 
     6:  <html:html>
     7:    <head><title>ログイン畫面</title>
     8:    <body>
     9:      <html:form action="/login">
    10:      <table border="0">
    11:        <tr>
    12:          <td>名前</td><td><html:text property="name" /></td>
    13:        </tr>
    14:        <tr>
    15:          <td>パスワード</td><td><html:password property="password" /></td>
    16:        </tr>
    17:        <tr>
    18:          <td colspan="2"><html:submit value="ログイン" /></td>
    19:        </tr>
    20:      </table>
    21:      </html:form>
    22:    </body>
    23:  </html:html>

     2行目から4行目がStrutsのタグライブラリを使用するためのtaglibディレクティブです。StrutsではHTMLの出力や條件分岐?繰り返し処理などのロジック処理の多くをアクションタグを用いて実行することができます。
     今回出てきたStrutsの主なアクションタグをまとめると、簡単にまとめると以下のようになります。

    タグ
    意味
    <html:html>
    HTMLの<html>タグに対応します。
    <html:form>
    HTMLの<form>タグになります。method屬性は省略しても自動的にPOSTで送られます。
    <html:text>
    HTMLの<input type="text">に対応します。property屬性が<input>タグのname屬性に対応します。
    <html:password>
    HTMLの<input type="password">に対応します。property屬性が<input>タグのname屬性に対応します。
    <html:submit>
    HTMLの<input type="submit">に対応します。

     これらは、後述のフォームBeanにセットされている値をデフォルト値としてくれたり、自動的にフォーカスを移動したりといった機能があります。


    會員登録のメリット! ▼Java や Linux を體系的に學びましょう!▼
    Stack*のアイティーブーストが、
    新學習方式のカリキュラムを開発しました!
    9500円から(*1)、Java や Linux を體系的に學べます??!
    (*1 テキスト代のみの稅別料金です)



    6.フォームBeanの定義

     フォームBeanはリクエストパラメータの値を格納するためのクラスになります。フォームBeanはActionFormクラスを継承したクラスでなければならず、フォームから送られてくる値を受け取るために同名のプロパティを定義しなければなりません。今回であれば、loginForm.jspから nameとpasswordという2つのパラメータが送られてくるので、それをプロパティとして定義します。具體的には以下のようになります。

    【LoginForm.java】
     1:  package jp.co.itboost.struts;
     2: 
     3:  import org.apache.struts.action.ActionForm;
     4:  import org.apache.struts.action.ActionMapping;
     5: 
     6:  public class LoginForm extends ActionForm {
     7:    private String name;
     8:    private String password;
     9: 
    //nameプロパティ 開始
    10:    public String getName() {
    11:      return name;
    12:    }
    13: 
    14:    public void setName(String name) {
    15:      this.name = name;
    16:    }
    17: 
    18:    public String getPassword() {
    19:      return password;
    20:    }
    //nameプロパティ 終了
    //passwordプロパティ 開始

    21: 
    22:    public void setPassword(String password) {
    23:      this.password = password;
    24:    }
    //passwordプロパティ 終了
    25:  }

     6行目でクラス定義の際、ActionFormを継承しています。
     10行目から16行目がnameプロパティの定義です。
     18行目から24行目がpasswordプロパティの定義です。
     このようなクラスを定義すると、リクエストパラメータとして送られてきたnameとpasswordの値がそれぞれnameプロパティ、passwordプロパティにセットされます。

    7.アクションクラスの定義

     アクションクラスはリクエストパラメータがフォームBeanにセットされたあと実行されるクラスです。アクションクラスの定義はActionクラスを継承し、execute( )メソッドを定義することにより行えます。execute( )メソッドは戻り値にActionForwardオブジェクトを返しますが、これはstruts-config.xmlで定義した移動先にフォワードすることを意味します。
     今回のログイン処理を行うアクションクラスであれば、以下のようになります。

    【LoginAction.java】
     1:  package jp.co.itboost.struts;
     2: 
     3:  import org.apache.struts.action.Action;
     4:  import org.apache.struts.action.ActionForm;
     5:  import org.apache.struts.action.ActionForward;
     6:  import org.apache.struts.action.ActionMapping;
     7:  import javax.servlet.http.*;
     8: 
     9:  public class LoginAction extends Action {
    10:    public ActionForward execute(ActionMapping mapping, ActionForm form,
    11:                                HttpServletRequest request, HttpServletResponse response) {
    12:      LoginForm loginForm = (LoginForm)form;
    13: 
    14:      // ログイン認証
    15:      if ("user".equals( loginForm.getName() ) && "itboost".equals( loginForm.getPassword() )) {
    16:        // ログイン成功
    17:        return mapping.findForward("success");
    18:      } else {
    19:        // ログイン失敗
    20:        return mapping.findForward("error");
    21:      }
    22:    }
    23:  }

     9行目でActionクラスを継承しています。
     12行目は引數のActionFormオブジェクトをLoginForm型にキャストしています。今回はフォームBeanにLoginFormクラスが使われるように設定されているため、LoginForm型にキャストします。
     17行目は15行目のif文の條件式がtrueになる場合、つまり、ログインが成功した場合に戻り値としてActionForwardオブジェクトを返している部分です。引數のActionMappingオブジェクトのfindForward( )メソッドを呼び出すことで、ActionForwardオブジェクトを作成することができます。引數に文字列を指定していますが、これはフォワード先を識別するための情報です。実際の移動先はstruts-config.xml(後述)で指定します。
     20行目も同様にログインに失敗した場合は「error」という名前の移動先にフォワードします。 

    8.struts-config.xmlの設定

     ここまでで、フォームBeanとアクションクラスの定義を見てきました。struts-config.xmlはあるリクエストに対して、どのフォームBeanとどのアクションクラスを使うのか、また、最終的にどこにフォワードするのかという処理の流れを定義する設定ファイルです。WEB-INFの中にstruts-config.xmlがあります。大きく分けると以下のような定義になります。

    【struts-config.xml】
     1:  <struts-config>
     2:          :
    <!-- フォームBeanの登録 開始 -->
     3:    <form-beans>
     4:      <form-bean name="loginForm" type="jp.co.itboost.struts.LoginForm" />
     5:    </form-beans>
    <!-- フォームBeanの登録 終了 -->
     6:          :
    <!-- アクションクラスの登録 開始 -->
     7:    <action-mappings>
     8:      <action path="/login" type="jp.co.itboost.struts.LoginAction" name="loginForm">
     9:        <forward name="success" path="/jsp/loginSuccess.jsp" />
    10:        <forward name="error" path="/jsp/loginForm.jsp" />
    11:      </action>
    12:    </action-mappings>
    <!-- アクションクラスの登録 終了 -->
    13:          :
    14:  </struts-config>

     struts-config.xmlには他にもいろいろと定義しますが、ここでは特に重要な<form-beans>タグと<action-mappings>タグの內容について紹介します。
     まず、4行目ではloginFormという名前でjp.co.itboost.struts.LoginFormクラスを登録しています。
     <form-beans>タグの中で<form-bean>タグを使いStrutsで使用するフォームBeanを登録します。<form-bean>タグの屬性の意味は以下のようになります。

    屬性
    意味
    name
    フォームBeanの名前(自由に指定してよい)
    type
    登録するフォームBeanのクラス(FQCNで指定)

     次に<action-mappings>タグの中で<action>タグを使いパスとフォームBean?アクションクラスの対応付けを行います。
     8行目から11行目の<action>タグで/loginというパスに対してjp.co.itboost.struts.LoginActionクラスをアクションクラスとして利用し、4行目で登録したloginFormという名前のフォームBeanにパラメータの値をセットします。
     また、ここでは使用していませんが、scope屬性でフォームBeanをどのスコープに保存するかを指定することもできます。scope屬性を指定しない場合、デフォルトでsessionスコープが指定されます。
     <action>タグで使用する屬性の意味は以下のようになります。

    屬性
    意味
    path
    リクエスト時のパスの名前(「~.do」の「~」の部分)
    type
    実行するアクションクラスのクラス名(FQCNで指定)
    name
    使用するフォームBeanの名前
    scope
    フォームBeanを保存するスコープ(application,session,request,pageのいずれか)

     9行目で<forward>タグを使用して「success」という名前に対して「/loginSuccess.jsp」というJSPへのパスを登録しています。これは、アクションクラスの戻り値を返している部分のfindForward( )メソッドの引數に対応します。
     つまり、

          return mapping.findForward("success");

    のようにした場合、/jsp/loginSuccess.jspへ、

          return mapping.findForward("error");

    のようにした場合は/jsp/loginForm.jspへフォワードされます。
    <forward>タグで使用する屬性は以下のような意味になります。

    屬性
    意味
    name
    フォワード先の名前(findForward( )メソッドの引數で指定する値)
    path
    実際のフォワード先へのパス


    會員登録のメリット! ▼Java や Linux を體系的に學びましょう!▼
    Stack*のアイティーブーストが、
    新學習方式のカリキュラムを開発しました!
    9500円から(*1)、Java や Linux を體系的に學べます??!
    (*1 テキスト代のみの稅別料金です)



    9.出力用JSPの定義

     では、最後に出力用のJSPを作成してみます。入力用JSPと同様にStrutsのアクションタグを使用しますが、ここでは、新たに<bean:write>というタグが出てきます。これは、<jsp: getProperty>と似た動きをします。<bean:write>タグはスコープ內のオブジェクトもしくはオブジェクトのプロパティを出力します。スコープ內のオブジェクトのプロパティを出力するアクションタグに<jsp:getProperty>タグがありますが、 <jsp:getProperty>タグとの違いは「<」や「>」といったHTMLにおける特殊な記號を自動的にエスケープ (「&lt;」や「&gt;」など)してくれるところです。ログイン成功時の畫面を出力するJSPは以下のようになります。

    【loginSuccess.jsp】
    1:  <%@ page contentType="text/html; charset=Windows-31J" %>
    2:  <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
    3:  <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
    4:  <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
    5: 
    6:  <html:html>
    7:    <head><title>ログイン成功畫面</title>
    8:    <body>
    9:      <bean:write name="loginForm" property="name" />さん、ようこそ
    10:    </body>
    11:  </html:html>

     9行目が<bean:write>タグを使用し、loginFormのnameプロパティを出力している部分です。loginFormは今回使用したフォームBeanですが、struts-config.xmlの部分でも説明したとおり、フォームBeanは何らかのスコープに保存されます。今回はstruts-config.xml ではどのスコープも指定していないので、sessionスコープに保存されているloginFormという名前のフォームBeanが対象となります。 property屬性でnameという値を指定しているので、loginFormのnameプロパティが出力されます。

    10.まとめ

     今回はStrutsを用いたWebアプリケーションの簡単な作り方を見てきました。
     今回見てきましたフォームBeanの定義、アクションクラスの定義、struts-config.xmlの編集、Viewの作成の組み合わせで最低限の開発は行うことができます。しかし、Strutsには他にもフォームBeanでの入力値の検証やさらに便利なアクションタグなどさまざまな便利な機能があります。これらを次回以降の記事で紹介していきたいと思います。

    posted on 2005-11-07 16:35 上海灘拾貝 閱讀(1802) 評論(0)  編輯  收藏 所屬分類: Struts相關

    主站蜘蛛池模板: 视频免费1区二区三区| 亚洲av无码不卡私人影院| 亚洲国产成人爱av在线播放| 久久精品国产精品亚洲蜜月| 国产精品无码亚洲精品2021| 台湾一级毛片永久免费| 亚洲综合婷婷久久| 久久免费99精品国产自在现线 | 亚洲国产综合精品| 在线观看免费无码专区| 亚洲日韩激情无码一区| 成人a毛片免费视频观看| 亚洲国产专区一区| 一级毛片免费毛片毛片| 国产亚洲精品线观看动态图| 青青青视频免费观看| 亚洲精品视频免费观看| 九九热久久免费视频| 亚洲午夜久久久久久久久久| a毛片在线还看免费网站| 亚洲AV无码久久精品色欲| 免费观看一区二区三区| 日韩精品亚洲人成在线观看| 30岁的女人韩剧免费观看| 亚洲国产成人99精品激情在线| 野花高清在线电影观看免费视频| 久久精品国产亚洲av麻豆图片| 毛片免费vip会员在线看| 特级毛片aaaa级毛片免费| 亚洲日韩乱码中文无码蜜桃臀网站| 免费久久人人爽人人爽av | 精品一卡2卡三卡4卡免费视频| 一区二区三区亚洲| 免费无码不卡视频在线观看| 精品女同一区二区三区免费播放| 亚洲中文字幕无码一区| 国产高清免费视频| 中文字幕在线免费观看视频| 亚洲中文字幕人成乱码| 国产自偷亚洲精品页65页| 男人的好看免费观看在线视频|