UniServer / UniPrint / UniHttpd


Strutsのプログラム開発手順


Struts機能

  1. 画面遷移の管理
  2. リクエストデータをオブジェクトに格納
  3. validateチェック、validatorチェック(validatorに関しては動作未確認)
  4. Strutsタグを使用してのJSPファイル作成
  5. コネクションプール機能(動作未確認)
  6. ファイルアップロード機能(動作未確認)
  7. ロギング機能(動作未確認)

Struts制限

  1. 日本語を使用する場合には、文字コードを統一する必要があります。
    1. 統一方法はStrutsの開発手順の「6、デプロイメントディスクリプタ(web.xml)の作成 」を参照してください。
  2. Strutsの制限ではありませんが、Strutsで作成したWEBアプリケーションを実行するのにTOMCATを使用するので、
    ファイル編集後の内容を反映させるためにTOMCATを一旦停止させ、起動する必要があります。

Strutsの開発手順をjavapdfプロジェクトを参考に説明します。
※javapdfプロジェクトはフォームに指定されたファイル名で、PDFファイルを作成します。

※各jarファイル、TLDファイル等は、jakarta-struts-X.X-XX.zip(X.X-XXはバージョン番号が入ります)に
 含まれているstruts-blank内のものを使用します。

※動作確認環境
 Win2000
 Struts-1.1-b2
 Tomcat4.1.6
 ant-1.5.1

  1. JSPファイルの作成
    1. index.jsp(実行開始画面)→ファイル名を入力して、PDFファイル生成アクションを実行する画面です。
       1:<%@ page contentType="text/html; charset=Shift_JIS" %>
       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:<html:html>
       6:<head>
       7:<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" >
       8:<title>実行開始画面</title>
       9:</head>
      10:<body>
      11:<center>
      12:<html:errors />
      13:<hr><p>
      14:<html:form action="/excelexe">
      15:<table border="1">
      16:  <tr>
      17:    <td>出力ファイル名</td>
      17:    <td><html:text property="fileName" size="40" value="tanto.pdf" /></td>
      18:  </tr>
      19:</table>
      20:<p>
      21:<hr>
      22:<html:submit property="submit" value="実行"/>
      23:<html:reset value="クリア"/>
      24:</html:form>
      25:<p><hr>
      26:</center>
      27:</body>
      28:</html:html>
    • 説明
      • 1行目→文字コードをShift_JISに指定します。
      • 2〜4行目→利用するStrutsのタグを宣言します。
      • 12行目→validateチェックでエラーの場合、エラーメッセージを表示します。
      • 14行目→フォームの実行ボタンが押された時に、アクションコンフィグレーションファイルに設定されているどのアクションを実行するか記述します。
      • 17行目→プロパティ値入力エリアを表示します。
      • 22行目→実行ボタンを表示します。
      • 23行目→リセットボタンを表示します。
    1. end.jsp(実行完了画面)→アクション実行後の画面で、生成されたPDFファイルのリンクを表示します。
       1:<%@ page contentType="text/html; charset=Shift_JIS" %>
       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:<html:html>
       6:<head>
       7:<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" >
       8:<title>実行完了画面</title>
       9:</head>
      10:<body>
      11:<center>
      12:<hr><p>
      13:正常に実行されました。
      14:<bean:define id="fileName" name="excelexeForm"
      15:property="fileName" type="java.lang.String"/>
      16:<html:link page="<%= fileName %>" target="_blank" >結果</html:link>
      17:<p><hr>
      18:</center>
      19:</body>
      20:</html:html>
    • 説明
      • 14〜15行目→アクションフォームBeanからファイル名を取得して変数を定義します。
      • 16行目→14行目で定義した変数をリンク先に設定をしてハイパーリンクを表示します。
  2. アクションフォームBeanの作成
    1. excelexeForm.java→ファイル名の設定、取得、validateチェックを行う。
       1:package javapdf;
       2:import javax.servlet.http.HttpServletRequest;
       3:import org.apache.struts.action.*;
       4:public class excelexeForm extends ActionForm {
       5:    private String fileName;   //ファイル名
       6:    public void setFileName(String fileName) {
       7:            this.fileName = fileName;
       8:    }
       9:    public String getFileName(){
      10:            return this.fileName;
      11:    }
      12:    //validateチェック
      13:    public ActionErrors validate(ActionMapping mapping,HttpServletRequest req) {
      14:
      15:            ActionErrors errors = new ActionErrors();
      16:            if((fileName == null) || (fileName.length() < 1)){
      17:                    errors.add("fileName", new ActionError("errors.fileName"));
      18:            }
      19:            return errors;
      20:    }
      21:}
    • 説明
      • 4行目→!org.apache.struts.action.ActionFormを継承します。
      • 5行目→ファイル名を宣言します。
      • 6〜8行目→ファイル名の設定をします。
      • 9〜11行目→ファイル名の取得をします。
      • 15行目→エラーコレクションオブジェクトを定義します。
      • 16行目→ファイル名の空チェックを行います。
      • 17行目→エラーコレクションオブジェクトにエラーを格納します。
  3. メッセージリソースファイルの作成(JSPに表示されるメッセージを記述します。)
    1. ApplicationResources.properties.Shift_JIS→validateチェックでエラーの場合にJSPに表示されるメッセージを定義します。
      (拡張子.Shift_JISはUnicodeエスケープをする時に削除されます。)
      1:errors.footer=</font>
      2:errors.header=<HR><font color="red">入力エラー<br>
      3:errors.fileName=出力ファイル名を入力してください!!<br>
    • 説明
      • 1行目→フッターを定義します。
      • 2行目→ヘッダーを定義します。
      • 3行目→エラーメッセージを定義します。errors.fileNameは、excelexeForm.javaの
        17行目のnew ActionError("errors.fileName")と同じ名前にします。
  4. アクションクラスの作成
    1. excelexeAction.java→アクションフォームBeanのファイル名で、PDFファイルを生成します。
       1:package javapdf;
       2:import java.io.*;
       3:import java.util.*;
       5:import javax.servlet.http.HttpServletRequest;
       6:import javax.servlet.http.HttpServletResponse;
       7:import org.apache.struts.action.*;
       8:import jp.co.utl.comn.*;
       9:import jp.co.utl.pdf.*;
      10:import jp.co.utl.pdf.font.*;
      11:import javax.servlet.*;
      12:public class excelexeAction extends Action {
      13:    public ActionForward perform(ActionMapping mapping,
      14:                            ActionForm form,
      15:    HttpServletRequest request,
      16:    HttpServletResponse response
      17:    ) throws java.io.IOException, javax.servlet.ServletException {
      18:            excelexeForm excelexeform = (excelexeForm)form;
      19:            //出力先のパス
      20:            String lpath = System.getProperty("user.dir") + "/webapps/javapdf/";
      21:            //PdfCreaterインスタンスの生成
      22:            PdfProducer pp = new PdfProducer();
      23:            //PDFドキュメント作成の開始
      24:            pp.beginDoc(lpath + excelexeform.getFileName());
      25:            //PDFのページをA4横に設定
      26:            pp.setPageWidth(842);
      27:            pp.setPageHeight(595);
      28:            int top = 560;
      29:            int left = 20;
      30:            int right = pp.getPageWidth() - 20;
      31:            //外枠線
      32:            pp.getCanvas().setLineWidth(1);
      33:            pp.getCanvas().drawLine(left,top,left,20);
      34:            pp.getCanvas().drawLine(right,top,right,20);
      35:            pp.getCanvas().drawLine(left,20,right,20);
      36:            pp.getCanvas().drawLine(left,top,right,top);
      37:            //中の部分の細線設定
      38:            pp.getCanvas().setLineWidth(0.25);
      39:            //項目名欄
      40:            pp.getCanvas().setFont("jp.co.utl.pdf.font.SansSerif", 40);
      41:            pp.getCanvas().drawLine(left + 400,20,left + 400,top);
      42:            pp.getCanvas().textOut(left + 5,top - 50,"担当者コード");
      43:            pp.getCanvas().textOut(left + 405,top - 50,"担当者名");
      44:            pp.getCanvas().drawLine(left,top - 60,right,top - 60);
      45:            pp.getCanvas().setFont("jp.co.utl.pdf.font.Serif", 40);
      46:            for(int i=1;i<=8;i++){
      47:                    pp.getCanvas().textOut(left + 5,top - ((i+1)*60 - 10),Integer.toString(i));
      48:                    pp.getCanvas().textOut(left + 405,top - ((i+1)*60 - 10),"田中");
      49:            }
      50:            //PDFドキュメント作成の終了
      51:            pp.endDoc();
      52:            //リンク用にファイルパスを設定する
      53:            excelexeform.setFileName("/" + excelexeform.getFileName());
      54:            return (mapping.findForward("success"));
      55:    }
      56:}
    • 説明
      • 12行目→org.apache.struts.action.Actionを継承します。
      • 18行目→フォームのプロパティを取得します。
      • 53行目→end.jspのリンク用にファイルパスを設定します。
      • 54行目→返り値として処理結果状態を返します。
      • 21〜51行目はPDF生成用のロジックなので説明は割愛します。
  5. アクションコンフィグレーションファイル(struts-config.xml)の作成
     1:<?xml version="1.0" encoding="ISO-8859-1" ?>
     2:<!DOCTYPE struts-config PUBLIC
     3:          "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
     4:          "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
     5:<struts-config>
     6:    <form-beans>
     7:     <form-bean      name="excelexeForm"
     8:                     type="javapdf.excelexeForm"/>
     9:    </form-beans>
    10:    <global-exceptions>
    11:    </global-exceptions>
    12:    <global-forwards>
    13:        <forward
    14:            name="welcome"
    15:            path="/Welcome.do"/>
    16:    </global-forwards>
    17:    <action-mappings>
    18:        <action
    19:            path="/Welcome"
    20:            type="org.apache.struts.actions.ForwardAction"
    21:            parameter="/pages/Welcome.jsp"/>
    22:    <action    path="/excelexe"
    23:               type="javapdf.excelexeAction"
    24:               name="excelexeForm"
    25:               scope="request"
    26:               input="/index.jsp"
    27:               validate="true">
    28:      <forward name="success" path="/end.jsp" />
    29:    </action>
    30:    </action-mappings>
    31:    <controller
    32:       processorClass="org.apache.struts.tiles.TilesRequestProcessor"/>
    33:    <message-resources parameter="ApplicationResources"/>
    34:  <plug-in className="org.apache.struts.tiles.TilesPlugin" >
    35:    <set-property property="definitions-config"
    36:                     value="/WEB-INF/tiles-defs.xml" />
    37:    <set-property property="definitions-debug" value="0" />
    38:    <set-property property="definitions-parser-details" value="0" />
    39:    <set-property property="definitions-parser-validate" value="true" />
    40:  </plug-in>
    41:  <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
    42:    <set-property
    43:        property="pathnames"
    44:        value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
    45:  </plug-in>
    46:</struts-config>
    • 説明(今回のjavapdfプロジェクト用に設定した箇所)
      • 7行目→Struts内での倫理名を定義します。
      • 8行目→アクションフォームBeanのクラス名を定義します。
      • 22行目→対応するURLパターンを定義します。index.jspの14行目

        html:form action="/excelexe">の/excelexeに対応します。

        • 23行目→実行するアクションクラスを定義します。
        • 24行目→使用するアクションフォームBeanの定義をします。
          7行目で定義したexcelexeFormに対応します。
          アクションフォームBeanを使用しない場合は定義しません。
        • 25行目→使用するアクションフォームBeanのスコープを定義します。
          アクションフォームBeanを使用しない場合は定義しません。
        • 26行目→validateチェック後エラーの場合の遷移先を定義します。
          validateチェックを行わない場合は定義しません。
        • 27行目→validateチェックの定義を行います。
          validateチェックを行わない場合はfalseにします。
        • 28行目→アクション実行後の遷移先を定義します。
          <forward name="success" path="/end.jsp" />.
          successがexcelexeAction.javaの54行目.
          return (mapping.findForward("success"))に対応します。.
          /end.jspは遷移先のファイル名です。
        • 33行目→メッセージリソースファイルの定義を行います。
        1. デプロイメントディスクリプタ(web.xml)の作成
           1:<?xml version="1.0" encoding="ISO-8859-1"?>
           2:<!DOCTYPE web-app
           3:  PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
           4:  "http://java.sun.com/dtd/web-app_2_3.dtd">
           5:<web-app>
           6:    <filter>
           7:            <filter-name>encodingFilter</filter-name>
           8:            <filter-class>javapdf.SetCharacterEncodingFilter</filter-class>
           9:        <init-param>
          10:          <param-name>encoding</param-name>
          11:          <param-value>Shift_JIS</param-value>
          12:        </init-param>
          13:    </filter>
          14:    <filter-mapping>
          15:            <filter-name>encodingFilter</filter-name>
          16:            <servlet-name>action</servlet-name>
          17:    </filter-mapping>
          18:  <!-- Standard Action Servlet Configuration (with debugging) -->
          19:  <servlet>
          20:    <servlet-name>action</servlet-name>
          21:    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
          22:    <init-param>
          23:      <param-name>config</param-name>
          24:      <param-value>/WEB-INF/struts-config.xml</param-value>
          25:    </init-param>
          26:    <init-param>
          27:      <param-name>debug</param-name>
          28:      <param-value>2</param-value>
          29:    </init-param>
          30:    <init-param>
          31:      <param-name>detail</param-name>
          32:      <param-value>2</param-value>
          33:    </init-param>
          34:    <load-on-startup>2</load-on-startup>
          35:  </servlet>
          36:  <!-- Standard Action Servlet Mapping -->
          37:  <servlet-mapping>
          38:    <servlet-name>action</servlet-name>
          39:    <url-pattern>*.do</url-pattern>
          40:  </servlet-mapping>
          41:  <!-- The Usual Welcome File List -->
          42:  <welcome-file-list>
          43:    <welcome-file>index.jsp</welcome-file>
          44:  </welcome-file-list>
          45:  <!-- Struts Tag Library Descriptors -->
          46:  <taglib>
          47:    <taglib-uri>/tags/struts-bean</taglib-uri>
          48:    <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
          49:  </taglib>
          50:  <taglib>
          51:    <taglib-uri>/tags/struts-html</taglib-uri>
          52:    <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
          53:  </taglib>
          54:  <taglib>
          55:    <taglib-uri>/tags/struts-logic</taglib-uri>
          56:    <taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
          57:  </taglib>
          58:  <taglib>
          59:    <taglib-uri>/tags/struts-nested</taglib-uri>
          60:    <taglib-location>/WEB-INF/struts-nested.tld</taglib-location>
          61:  </taglib>
          62:  <taglib>
          63:    <taglib-uri>/tags/struts-tiles</taglib-uri>
          64:    <taglib-location>/WEB-INF/struts-tiles.tld</taglib-location>
          65:  </taglib>
          66:</web-app>
          • 説明(今回のjavapdfプロジェクト用に設定した箇所)
            • 6〜17行目はStruts内の文字コードを全てShift_JISに統一する為の
              もので、別途SetCharacterEncodingFilter.javaを用意して、アクション
              フォームBean、アクションクラスと同じ場所に置いておく必要があリます。
            • SetCharacterEncodingFilter.javaは以下のコードをコピーして使用して下さい。
              /*
               *
               * ====================================================================
               *
               * The Apache Software License, Version 1.1
               *
               * Copyright (c) 1999-2001 The Apache Software Foundation.  All rights
               * reserved.
               *
               * Redistribution and use in source and binary forms, with or without
               * modification, are permitted provided that the following conditions
               * are met:
               *
               * 1. Redistributions of source code must retain the above copyright
               *    notice, this list of conditions and the following disclaimer.
               *
               * 2. Redistributions in binary form must reproduce the above copyright
               *    notice, this list of conditions and the following disclaimer in
               *    the documentation and/or other materials provided with the
               *    distribution.
               *
               * 3. The end-user documentation included with the redistribution, if
               *    any, must include the following acknowlegement:
               *       "This product includes software developed by the
               *        Apache Software Foundation (http://www.apache.org/)."
               *    Alternately, this acknowlegement may appear in the software itself,
               *    if and wherever such third-party acknowlegements normally appear.
               *
               * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
               *    Foundation" must not be used to endorse or promote products derived
               *    from this software without prior written permission. For written
               *    permission, please contact apache@apache.org.
               *
               * 5. Products derived from this software may not be called "Apache"
               *    nor may "Apache" appear in their names without prior written
               *    permission of the Apache Group.
               *
               * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
               * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
               * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
               * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
               * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
               * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
               * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
               * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
               * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
               * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
               * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
               * SUCH DAMAGE.
               * ====================================================================
               *
               * This software consists of voluntary contributions made by many
               * individuals on behalf of the Apache Software Foundation.  For more
               * information on the Apache Software Foundation, please see
               * <http://www.apache.org/>.
               *
               * [Additional notices, if required by prior licensing conditions]
               *
               */
              
              
              package javapdf;
              
              
              import java.io.IOException;
              import javax.servlet.Filter;
              import javax.servlet.FilterChain;
              import javax.servlet.FilterConfig;
              import javax.servlet.ServletException;
              import javax.servlet.ServletRequest;
              import javax.servlet.ServletResponse;
              import javax.servlet.UnavailableException;
              
              
              /**
               * <p>Example filter that sets the character encoding to be used in parsing the
               * incoming request, either unconditionally or only if the client did not
               * specify a character encoding.  Configuration of this filter is based on
               * the following initialization parameters:</p>
               * <ul>
               * <li><strong>encoding</strong> - The character encoding to be configured
               *     for this request, either conditionally or unconditionally based on
               *     the <code>ignore</code> initialization parameter.  This parameter
               *     is required, so there is no default.</li>
               * <li><strong>ignore</strong> - If set to "true", any character encoding
               *     specified by the client is ignored, and the value returned by the
               *     <code>selectEncoding()</code> method is set.  If set to "false,
               *     <code>selectEncoding()</code> is called <strong>only</strong> if the
               *     client has not already specified an encoding.  By default, this
               *     parameter is set to "true".</li>
               * </ul>
               *
               * <p>Although this filter can be used unchanged, it is also easy to
               * subclass it and make the <code>selectEncoding()</code> method more
               * intelligent about what encoding to choose, based on characteristics of
               * the incoming request (such as the values of the <code>Accept-Language</code>
               * and <code>User-Agent</code> headers, or a value stashed in the current
               * user's session.</p>
               *
               * @author Craig McClanahan
               * @version $Revision: 1.1.1.1 $ $Date: 2002/12/20 01:25:31 $
               */
              
              public class SetCharacterEncodingFilter implements Filter {
              
              
                  // ----------------------------------------------------- Instance Variables
              
              
                  /**
                   * The default character encoding to set for requests that pass through
                   * this filter.
                   */
                  protected String encoding = null;
              
              
                  /**
                   * The filter configuration object we are associated with.  If this value
                   * is null, this filter instance is not currently configured.
                   */
                  protected FilterConfig filterConfig = null;
              
              
                  /**
                   * Should a character encoding specified by the client be ignored?
                   */
                  protected boolean ignore = true;
              
              
                  // --------------------------------------------------------- Public Methods
              
              
                  /**
                   * Take this filter out of service.
                   */
                  public void destroy() {
              
                      this.encoding = null;
                      this.filterConfig = null;
              
                  }
              
              
                  /**
                   * Select and set (if specified) the character encoding to be used to
                   * interpret request parameters for this request.
                   *
                   * @param request The servlet request we are processing
                   * @param result The servlet response we are creating
                   * @param chain The filter chain we are processing
                   *
                   * @exception IOException if an input/output error occurs
                   * @exception ServletException if a servlet error occurs
                   */
                  public void doFilter(ServletRequest request, ServletResponse response,
                                       FilterChain chain)
                     throws IOException, ServletException {
              
                      // Conditionally select and set the character encoding to be used
                      if (ignore || (request.getCharacterEncoding() == null)) {
                          String encoding = selectEncoding(request);
                          if (encoding != null)
                              request.setCharacterEncoding(encoding);
                      }
              
                     // Pass control on to the next filter
                      chain.doFilter(request, response);
              
                  }
              
              
                  /**
                   * Place this filter into service.
                   *
                   * @param filterConfig The filter configuration object
                   */
                  public void init(FilterConfig filterConfig) throws ServletException {
              
                     this.filterConfig = filterConfig;
                      this.encoding = filterConfig.getInitParameter("encoding");
                      String value = filterConfig.getInitParameter("ignore");
                      if (value == null)
                          this.ignore = true;
                      else if (value.equalsIgnoreCase("true"))
                          this.ignore = true;
                      else if (value.equalsIgnoreCase("yes"))
                          this.ignore = true;
                      else
                          this.ignore = false;
              
                  }
              
              
                  // ------------------------------------------------------ Protected Methods
              
              
                  /**
                   * Select an appropriate character encoding to be used, based on the
                   * characteristics of the current request and/or filter initialization
                   * parameters.  If no character encoding should be set, return
                   * <code>null</code>.
                   * <p>
                   * The default implementation unconditionally returns the value configured
                   * by the <strong>encoding</strong> initialization parameter for this
                   * filter.
                   *
                   * @param request The servlet request we are processing
                   */
                  protected String selectEncoding(ServletRequest request) {
              
                      return (this.encoding);
              
                  }
              
              
              }
        2. javaファイルのコンパイル
          1. 以下のコードをコピーをしてbuild.xmlを作成します。
            <project name="JAVAPDF" default="all" basedir=".">
            
                   <property environment="env" />
                   <property name="tomcat.dist" value="${env.TOMCAT_HOME}" />
                   <property name="tomcat.webapps" value="${env.TOMCAT_HOME}/webapps" />
                   <target name="all" depends="init,compile"/>
            
                   <target name="init">
                   </target>
            
                   <target name="compile" depends="init">
            
                           <javac srcdir="WEB-INF/src/javapdf" destdir="WEB-INF/classes" encoding="SJIS">
                                   <classpath>
            
                                           <fileset dir="WEB-INF/lib">
                                                   <include name="*.jar"/>
                                           </fileset>
            
                                           <fileset dir="${tomcat.dist}/common/lib">
                                                   <include name="*.jar"/>
                                           </fileset>
            
                                   </classpath>
            
                           </javac>
            
                           <native2ascii encoding="Shift_JIS" src="WEB-INF/classes" dest="WEB-INF/classes"
                           includes="*.properties.Shift_JIS" ext="" />
                   </target>
                   
            </project>
          2. antの1.4.1を使用している場合は、Unicodeエスケープを行うために、
            http://jakarta.apache.org/builds/jakarta-ant/release/v1.4.1/bin/jakarta-ant-1.4.1-optional.jarからjakarta-ant-1.4.1-optional.jarをダウンロードして、Ant配下のlibディレクトリに入れておく必要があります。
          3. 8のディレクトリ構成にしてantを実行するとjavaファイルがコンパイルされクラスファイルが生成されます。
        3. ディレクトリ構成
                 %TOMCAT_HOME%\webapps\javapdf
                 ├build.xml
                 ├index.jsp
                 ├end.jsp
                 └WEB-INF
                   ├struts-bean.tld(struts-blank/WEB-INF内のものをコピー)
                   ├struts-config.xml
                   ├struts-html.tld(struts-blank/WEB-INF内のものをコピー)
                   ├struts-logic.tld(struts-blank/WEB-INF内のものをコピー)
                   ├struts-nested.tld(struts-blank/WEB-INF内のものをコピー)
                   ├struts-template.tld(struts-blank/WEB-INF内のものをコピー)
                   ├struts-tiles.tld(struts-blank/WEB-INF内のものをコピー)
                   ├tiles-defs.xml(struts-blank/WEB-INF内のものをコピー)
                   ├validation.xml(struts-blank/WEB-INF内のものをコピー)
                   ├validator.xml(struts-blank/WEB-INF内のものをコピー)
                   ├validatot-rules.xml(struts-blank/WEB-INF内のものをコピー)
                   ├web.xml
                   ├src
                   │└javapdf
                   │  ├excelexeAction.java
                   │  ├excelexeForm.java
                   │  └SetCharacterEncodingFilter.java
                   ├classes
                   │├ApplicationResources.properties(Unicodeエスケープ後生成)
                   │├ApplicationResources.properties.Shift_JIS
                   │└javapdf
                   │  ├excelexeAction.class(コンパイル後生成)
                   │  ├excelexeForm.class(コンパイル後生成)
                   │  └SetCharacterEncodingFilter.class(コンパイル後生成)
                   └lib
                     ├commons-beanutils.jar(struts-blank/WEB-INF/lib内のものをコピー)
                     ├commons-collections.jar(struts-blank/WEB-INF/lib内のものをコピー)
                     ├commons-dbcp.jar(struts-blank/WEB-INF/lib内のものをコピー)
                     ├commons-digester.jar(struts-blank/WEB-INF/lib内のものをコピー)
                     ├commons-fileupload.jar(struts-blank/WEB-INF/lib内のものをコピー)
                     ├commons-lang.jar(struts-blank/WEB-INF/lib内のものをコピー)
                     ├commons-logging.jar(struts-blank/WEB-INF/lib内のものをコピー)
                     ├commons-pool.jar(struts-blank/WEB-INF/lib内のものをコピー)
                     ├commons-resources.jar(struts-blank/WEB-INF/lib内のものをコピー)
                     ├commons-services.jar(struts-blank/WEB-INF/lib内のものをコピー)
                     ├commons-validator.jar(struts-blank/WEB-INF/lib内のものをコピー)
                     ├jakarta-oro.jar(struts-blank/WEB-INF/lib内のものをコピー)
                     ├struts.jar(struts-blank/WEB-INF/lib内のものをコピー)
                     └utlComn.jar(PDF出力パッケージの入ったUTL共通パッケージ)

Struts注意事項

  1. アクションフォームBeanのプロパティについて
    1. プロパティ名の先頭は小文字にします。
    2. セッター、ゲッター名はset、getの後に先頭を大文字にしたプロパティ名を加えます。
  2. メッセージリソースファイルはUnicodeエスケープをします。
  3. アクションクラスのファイル名は、****Action.java、アクションフォームBeanの名前は、****Form.javaにします。
  4. 画面遷移を管理するアクションコンフィグレーションファイル(struts-config.xml)に行った定義は、コンパイル時は
    チェックされず、WEBアプリケーション実行時にエラーが出力されるので慎重に作成する必要があります。

動的にリンク先を変更する方法

  1:<%@ page contentType="text/html; charset=Shift_JIS" %>
  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:<html:html>
  6:<head>
  7:<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" >
  8:<title>実行完了画面</title>
  9:</head>
 10:<body>
 11:<center>
 12:<hr><p>
 13:正常に実行されました。
 14:<bean:define id="writefilename" name="excelexeForm"
 15:property="writefilename" type="java.lang.String"/>
 16:<html:link page="<%= writefilename %>">結果</html:link>
 17:<p><hr>
 18:</center>
 19:</body>
 20:</html:html>
  • 説明
    • 14、15行目でexcelexeFomrのwritefilenameからリンク先のパスを取得して、変数名writefilenameに設定をします。
    • 16行目で設定したwritefilenameの値で、ハイパーリンクを定義します。

リストに積まれたオブジェクトを繰り返し表示する方法

 1:<table>
 2:<logic:iterate id="project" name="projectList" indexId="index">
 3:    <tr>
 4:            <td>
 5:                    <bean:write name="project" property="projectcode"/>
 6:            </td>
 7:            <td>
 8:                    <bean:write name="project" property="systemname"/>
 9:            </td>
10:            <td>
11:                    <bean:write name="project" property="title"/>
12:            </td>
13:            <td>
14:                    <bean:write name="project" property="maker"/>
15:            </td>
16:            <td>
17:                    <bean:write name="project" property="date"/>
18:            </td>
19:    </tr>
20:</logic:iterate>
21:</table>
  • 説明
    • 2行目でprojectListに積まれているprojectオブジェクトがNULLになるまで処理を繰り返す定義をします。
    • 3〜19行目でprojectオブジェクトのプロパティ名の値を取得して、テーブルに表示するよう定義します。

でパラメータを複数渡す方法

1:<bean:define id="param" name="koumoku" property="paramid" type="java.util.HashMap"/>
2:<html:link page="/koumokudel.do" name="param">
  • 説明
    • 1行目でkoumokuオブジェクトにある複数のパラメータを設定したハッシュマップ型の
      paramidを取得して、変数名paramで定義します。
    • 2行目で定義した変数paramをパラメータとします。

WEBアプリケーション起動時に開くページをindex.jsp以外に変更する方法

  • web.xmlの以下の赤字の部分を変更します。(デフォルト設定ではindex.jspになっています。)

    • <welcome-file>start.jsp</welcome-file>.
      </welcome-file-list>

リストボックスのselected(初期値)の設定方法

1:<html:select property="groupname" value="管理者">
2:<html:options name="groupnameOptions" />
3:</html:select>
  • 説明
    • 1行目のvalue="管理者"の管理者がリストボックスの初期値にあたります。

Strutsタグ一覧

開発Tips

 

Copyright © UTL Co.,Ltd. All Rights Reserved. [UTL]