Struts の html 、bean 、logic タグライブラリーの簡単な使用
技術情報 TOP へ

本ページでの使用環境
OS:Windows XP SP 2
Java:JDK 5.0 UPDATE 8
Tomcat:5.0.28
ここでは、JDK 5.0 UPDATE 8 、Tocmat 5.0.28 、Eclipse 3.1.1 及び Eclipse に Tomcat プラグインがインストールされていること及び、 Struts が使用できる環境が既に作成されていることを前提として説明いたします。 これらのインストール及び環境作成については下記のページを参照ください。

JDK のインストール -Windows 編-

Eclipce 3.1.1 のインストール -Windows 編 -
* ここでは C:/eclipse に Eclipse をインストールした前提とします。

Tomcat 5.0.* 系のインストール -Windows 編 ( exe , zip ファイル ) -
* ここでは zip ファイルを使用して C:/jakarta-tomcat-5.0.28 に Tomcat をインストールした前提とします。
TOMCAT_HOME は、C:/jakarta-tomcat-5.0.28 です。 ( zip ファイルを使用してインストールした場合も本ページの手順で作成可能です。 )

Eclipse 3.1.1 の Tomcat プラグイン導入

Struts を使用した簡単な Web アプリケーションの作成
Struts の環境作成については上記のページを参照ください。ここではコンテキストパスは「 strutsapp 」とします。




Struts には便利なタグライブラリーが用意されています。ここでは、その代表的な一部を使用してみます。

このページでは以下のタグライブラリーを使用します。以下に簡単な説明を記述します。

html タグライブラリーより
htmlHTML の html 要素タグ <html> を生成します。
formHTML の form 要素タグ <form> を生成します。
textHTML の input 要素タグ <input type="text" > を生成します。
password HTML の input 要素タグ <input type="password" > を生成します。
radio HTML の input 要素タグ <input type="radio" > を生成します。
multibox HTML の input 要素タグ <input type="text" > を生成します。
buttonHTML の input 要素タグ <input type="button" > を生成します。
submitHTML の input 要素タグ <input type="submit" > を生成します。
selectHTML の input 要素タグ <input type="select" > を生成します。
optionsCollectionHTML の option 要素タグ <option> を生成します。
imageHTML の image 要素タグ <image> を生成します。

bean タグライブラリーより
write指定された bean のプロパティの値を出力します。

logic タグライブラリーより
empty指定された bean のプロパティの値が空白もしくは null であるかを判別し、 空白もしくは null であれば empty 要素で囲まれた処理を実行します。
notEmpty指定された bean のプロパティの値が空白もしくは null であるかを判別し、 空白もしくは null でなければ notEmpty 要素で囲まれた処理を実行します。
iterate指定された bean のプロパティの値 ( 配列もしくはコレクションであること) の要素数の繰返して iterate 要素で囲まれた処理を実行します。

このページでは、主なタグライブラリーの一部だけを紹介していますが、上記以外にも多数のタグライブラリーが 用意されており、また、それぞれ属性 ( 必須の属性を含む ) を設定することで様々な HTML 出力や bean の値での 制御や表示が可能です。詳細は以下のページを参照ください。

・Page Construction Tags
http://struts.apache.org/1.2.9/userGuide/struts-html.html
・Struts Bean Tags
http://struts.apache.org/1.2.9/userGuide/struts-bean.html
・Struts Logic Tags
http://struts.apache.org/1.2.9/userGuide/struts-logic.html





( 1 ) 初期画面の作成


ファイル名:start.jsp
<%@ page contentType="text/html;charset=Shift_JIS" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>

<html:html>
  <head>
    <title>Start JSP</title>
  </head>
  <body>
    <h4>Start JSP</h4>
    <html:form action="/StartAction">          
      <html:submit property="submit" value="Start" />
    </html:form>
  </body>
</html:html>	



( 2 ) 入力画面の作成

アプリケーションのルートディレクトリに適当な小さめの画像「img/sample.JPG」を用意してください。

ファイル名:second.jsp
<%@ page contentType="text/html;charset=Shift_JIS" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<html:html>
  <head>
    <title>Second JSP</title>    
  </head>  
  <body>
    <h4>Second JSP</h4>       
    <br>
    <html:form action="/StartAction2">   
      <table border="1" >    	
         <tr>
           <td>ID</td>
           <td>
             <html:text name="startForm" property="userId" size="10" maxlength="10" />
           </td>
         </tr>
         <tr>
           <td>Password</td>
           <td>
             <html:password name="startForm" property="userPass" size="10" maxlength="10" />
           </td>
         </tr>
         <tr>
          <td>radio</td>
          <td>
            <html:radio name="startForm" property="userType" value="1" styleId="Type1" />
            <label for="Type1">Type 1</label>
            <html:radio name="startForm" property="userType" value="2" styleId="Type2" />
            <label for="Type2">Type 2</label>
            <html:radio name="startForm" property="userType" value="3" styleId="Type3" />
            <label for="Type3">Type 3</label>
           </td>
         </tr>    
         <tr>
          <td>checkbox</td>
            <td>
            <html:multibox name="startForm" property="userCheck" value="1" styleId="NO1" />
            <label for="NO1">No.1</label>
            <html:multibox name="startForm" property="userCheck" value="2" styleId="NO2" />   
            <label for="NO2">No.2</label> 	
            <html:multibox name="startForm" property="userCheck" value="3" styleId="NO3" />   
            <label for="NO3">No.3</label> 		
           </td>
         </tr>
         <tr>
          <td>select</td>
          <td>
            <html:select name="startForm"  property="selectValue" >
              <html:optionsCollection  name="startForm" property="selectLabel" 
                value="value" label="label" />
            </html:select>
           </td>
         </tr>    	
         <tr>
          <td>image</td>
          <td>
            <html:image page="/img/sample.JPG" property="imgbutton" />
           </td>
         </tr>
         <tr>
          <td>button</td>
          <td>
            <html:button property="button" value="Button" onclick="alert('onClick');" />
           </td>
         </tr>    		
         <tr>
          <td>submit</td>
          <td>
            <html:submit property="submit" value="Submit" />
           </td>
         </tr>  
       </table>
     </html:form>  
  </body>
</html:html>



( 3 ) 結果画面の作成


ファイル名:end.jsp
<%@ page contentType="text/html;charset=Shift_JIS" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<html:html>
  <head>
    <title>End JSP</title>    
  </head>  
  <body>
    <h4>End JSP</h4>       
    <br>
    <html:form action="/StartAction2">   
       <table border="1" >    	
         <tr>
    	  <td>text</td>
    	   <td>
             <logic:notEmpty name="startForm" property="userId" scope="request">
                <bean:write name="startForm" property="userId" />
             </logic:notEmpty>
             <logic:empty name="startForm" property="userId" scope="request">
                not input value !
             </logic:empty>	
           </td>
          </tr>
          <tr>
    	   <td>password</td>
    	   <td>
             <logic:notEmpty name="startForm" property="userPass" scope="request">
                <bean:write name="startForm" property="userPass" />
             </logic:notEmpty>
             <logic:empty name="startForm" property="userPass" scope="request">
                not input value !
             </logic:empty>	
    	   </td>
         </tr>
         <tr>
    	   <td>radio</td>
    	    <td>
             <logic:notEmpty name="startForm" property="userType" scope="request">
                <bean:write name="startForm" property="userType" />
             </logic:notEmpty>
    	   </td>
         </tr>    
         <tr>
    	   <td>checkbox</td>
    	   <td>
             <logic:notEmpty name="startForm" property="userCheck" scope="request">
               <logic:iterate id="elements" name="startForm"  property="userCheck" scope="request" >
                [<bean:write name="elements" />]
               </logic:iterate>
             </logic:notEmpty>
             <logic:empty name="startForm" property="userCheck" scope="request">
                not input value !
             </logic:empty>	
    	   </td>
         </tr>
         <tr>
    	   <td>select</td>
    	   <td>
    	     <bean:write name="startForm" property="selectValue" />    
    	   </td>  
         </tr>   
    	</table>
     </html:form>   
  </body>
</html:html>



( 5 ) ActionForm の作成


ファイル名 ( jp.wm package ):StartForm.java
package jp.wm;

import java.util.List;

import org.apache.struts.validator.ValidatorForm;

public class StartForm extends ValidatorForm{
	
	/**
	* text userId に対応するプロパティ
	*/
	private String userId = null;
	
	/**
	* password userPass に対応するプロパティ
	*/
	private String userPass = null;
	
	/**
	* radio の選択値に対応するプロパティ
	* ここでは初期値を 1 とします。
	* null を設定すれば初期値が無い状態になります。
	*/
	private String userType = "1";
	
	/**
	* checkbox の選択値に対応するプロパティ ( 配列 )
	*/
	private String[] userCheck = null;	
	
	/**
	* セレクトリストの選択値に対応するプロパティ
	*/
	private String selectValue = null;
	
	/*
	 * 列数設定 セレクトリストにセットするリストに対応するプロパティ
	 */
	private List selectLabel = null;	
	
	public StartForm(){
		super();
		System.out.println("StartForm");
	}

	public List getSelectLabel() {
		return selectLabel;
	}

	public void setSelectLabel(List selectLabel) {
		this.selectLabel = selectLabel;
	}

	public String getUserId() {
		return userId;
	}

	public void setUserId(String userId) {
		this.userId = userId;
	}

	public String getUserPass() {
		return userPass;
	}

	public void setUserPass(String userPass) {
		this.userPass = userPass;
	}

	public String getUserType() {
		return userType;
	}

	public void setUserType(String userType) {
		this.userType = userType;
	}

	public String getSelectValue() {
		return selectValue;
	}

	public void setSelectValue(String selectValue) {
		this.selectValue = selectValue;
	}

	public String[] getUserCheck() {
		return userCheck;
	}

	public void setUserCheck(String[] userCheck) {
		this.userCheck = userCheck;
	}
	
}



( 6 ) Action クラスの作成 1


ファイル名 ( jp.wm package ):StartAction.java
package jp.wm;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.util.LabelValueBean;

public class StartAction extends Action {	

	 public ActionForward execute (ActionMapping map, ActionForm frm, 
			  	HttpServletRequest request, HttpServletResponse response) {	 

		 System.out.println("StartAction");

		 /* Form オブジェクトを受け取ります */
		 StartForm startForm = (StartForm)frm;		
		 
		 /* セレクトリスト用に ArrayList を生成します。*/
	 	 ArrayList list = new ArrayList();
		 
		 /* セレクトリスト用の値を LabelValueBean を使用して設定します。*/
		 for(int i =0; i < 10; i ++){
		   list.add( new LabelValueBean("value" + String.valueOf(i + 1), 
		     String.valueOf(i + 1)) );
		 }

		 startForm.setSelectLabel(list);
		 
		 /* Form オブジェクトをリクエストに格納します。 */
		 request.setAttribute("stratForm",startForm);		 
		 
		 /* map.findForward メソッドに success を設定します。 */
		 return map.findForward("success");
	 }
}



( 7 ) Action クラスの作成 2


ファイル名 ( jp.wm package ):StartAction2.java
package jp.wm;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class StartAction2 extends Action {	

	 public ActionForward execute (ActionMapping map, ActionForm frm, 
			  	HttpServletRequest request, HttpServletResponse response) {	 

		 System.out.println("StartAction2");

		 /* Form オブジェクトを受け取ります */
		 StartForm startForm = (StartForm)frm;	

		 /* それぞれの値を System.out.println で出力 */
		 System.out.println( "text "  + startForm.getUserId());
		 System.out.println( "password "  + startForm.getUserPass());
		 System.out.println( "radio "  + startForm.getUserType());

		 /* チェックされたの値を System.out.println で出力 */
		 if(startForm.getUserCheck() != null){
		    for(int i = 0; i < startForm.getUserCheck().length;i++){
		       if(startForm.getUserCheck() != null){
		          System.out.println( "Check "  + startForm.getUserCheck()[i]);
		       }
		    }
		 }

		 /* セレクトリストで選択されたの値を System.out.println で出力 */
		 System.out.println( "select "  + startForm.getSelectValue());	 
		 
		 /* Form オブジェクトをリクエストに格納します。 */
		 request.setAttribute("stratForm",startForm);		 
		 
		 /* map.findForward メソッドに success を設定します。 */
		 return map.findForward("success");
	 }
}



( 8 ) struts-config.xmlの修正


ファイル名:struts-config.xml
<form-beans> の直下に下記を追記します。
<form-bean name="startForm" type="jp.wm.StartForm" /> 

<action-mappings> の直下に下記を追記します。
	    <action path="/StartAction" type="jp.wm.StartAction"
	     name="startForm" scope="request" >
	         <forward name="success" path="/second.jsp" />
	    </action>     
	    <action path="/StartAction2" type="jp.wm.StartAction2"
	     name="startForm" scope="request" >
	         <forward name="success" path="/end.jsp" />
	    </action>    

	



( 9 ) ビルドと実行。

上記で作成したプログラムをビルドして、Tomcat を起動します。
* エラー等のないことを確認してください。

Tomcat が起動したら、下記のアドレスにブラウザでアクセスします。
<
http://localhost:8080/strutsapp/start.jsp >

以下の画面が表示されますので「Start」ボタンをクリックします。


次の画面でさきほどタグライブラリーで設定したHTMLが表示されます。

値を入力して「Submit」ボタンもしくは「画像ボタン」をクリックします。

* この時点では、日本語の送信に対応していません。ここでは動作確認のみをおこないますので、英数字を入力します。

日本語の対応については以下のページを参照してください。

Web アプリケーションの POST 送信 日本語入力対応 - Struts 編 -


以下の画面が表示され、さきほどの画面で入力した値が反映されていると思います。


技術情報 TOP へ


Google
WWW を検索 whitemark.co.jp を検索

Copyright © 2006 by WhiteMark, All rights Reserved. Last Modified: 2006/05