【 雛形によるアプリケーションテスト 】

1. Control、View、Model の配置
2. リダイレクト先の配置
3. control.jsp
4. view.jsp
5. modelget.jsp
6. modelpost.jsp

アプリケーションディレクトリの作成
  • d:\tomcat に pg001 というディレクトリを作成し、以下の3つのファイルを
    作成します

  • control.jsp
  • view.jsp
  • model.jsp

  • このページでは、商品コードを入力して pg002 へリダイレクトするという
    処理を行います





  • 商品コード
    Keys Values





  • control.jsp
  • <%@ page
    	language="java"
    	contentType="text/html;charset=shift_jis" %>
    <jsp:useBean id="my" scope="session" class="lightbox.webapp" />
    <%
    // *********************************************************
    // 内部データ用初期処理
    // *********************************************************
    	my.setApplication( application, "pg001" );
    	my.createShiftjisRequest( request );
    %>
     
    <%
    // *********************************************************
    // 画面コントロール
    // *********************************************************
     
    	pageContext.forward("model.jsp");
     
    %>
    


  • view.jsp
  • <%@ page
    	contentType="text/html;charset=shift_jis" %>
    <jsp:useBean id="my" scope="session" class="lightbox.webapp" />
     
     
    <%
    // *********************************************************
    // 画面の固定処理
    // *********************************************************
     
    %>
     
    <%-- ************************************************** --%>
     
    <HTML>
    <BODY>
     
    <FORM method=post>
    商品コード <INPUT type=text name=Gcode value="<%= my.get("Gcode") %>">
    <INPUT type=submit name=send value="コード選択">
    <INPUT type=submit name=send value="再表示"><br>
    </FORM>
     
    </BODY>
    </HTML>
     
    <%-- ************************************************** --%>
    


  • model.jsp
  • <%@ page
    	language="java"
    	contentType="text/html;charset=shift_jis" %>
    <jsp:useBean id="my" scope="session" class="lightbox.webapp" />
     
    <%
    // *********************************************************
    // この画面での処理
    // *********************************************************
    	if ( my.get( "send" ).equals( "コード選択" ) ) {
    		response.sendRedirect( "../pg002/control.jsp" );
    		return;
    	}
    	if ( my.get( "send" ).equals( "再表示" ) ) {
    		my.clear();
    		response.sendRedirect( "control.jsp" );
    		return;
    	}
     
    %>
     
    <%-- ************************************************** --%>
    <jsp:include page="view.jsp" flush="true" />
    <jsp:getProperty name="my" property="debug" />
    

    アプリケーションディレクトリの作成
  • d:\tomcat に pg002 というディレクトリを作成し、以下の4つのファイルを
    作成します

  • control.jsp
  • view.jsp
  • modelget.jsp
  • modelpost.jsp

  • このページでは、商品の登録と削除を行います


  • コントローラ
  • アプリケーションの基本的な定義を行い、画面移動をコントロールします


  • <%@ page
    	language="java"
    	contentType="text/html;charset=shift_jis" %>
    <jsp:useBean id="my" scope="session" class="lightbox.webapp" />
    <%
    // *********************************************************
    // 内部データ用初期処理
    // *********************************************************
    	my.setApplication( application, "pg002" );
    	my.createShiftjisRequest( request );
    %>
    <jsp:setProperty name="my" property="driverName"       value="sun.jdbc.odbc.JdbcOdbcDriver" />
    <jsp:setProperty name="my" property="connectionUrl"    value="jdbc:odbc:SysMySQL" />
    <jsp:setProperty name="my" property="connectionDbname" value="lightbox" />
    <jsp:setProperty name="my" property="connectionUser"   value="root" />
    <jsp:setProperty name="my" property="connectionPass"   value="" />
     
     
    <%
    // *********************************************************
    // 画面コントロール
    // *********************************************************
     
    	if ( request.getMethod().equals( "GET" ) ) {
    		pageContext.forward("modelget.jsp");
    		return;
    	}
    	if ( request.getMethod().equals( "POST" ) ) {
    		pageContext.forward("modelpost.jsp");
    		return;
    	}
     
    %>
    


    ビュー
  • modelget.jsp と modelpost.jsp で使用される共通の画面です

  • データの埋め込みを目的とするスクリプトレット以外は、基本的に HTML
    記述します


  • <%@ page
    	contentType="text/html;charset=shift_jis" %>
    <jsp:useBean id="my" scope="session" class="lightbox.webapp" />
     
     
    <%
    // *********************************************************
    // 画面の固定処理
    // *********************************************************
     
    %>
     
    <%-- ************************************************** --%>
     
    <HTML>
    <BODY>
     
    <FORM method=post>
    商品コード 
    <INPUT
    	type=text
    	name=Gcode
    	value="<%= my.get("Gcode") %>"
    	<%= my.get("商品コード使用") %>
    ><br>
    <HR size=1 color=black>
    商品名
    <INPUT 
    	type=text
    	name=Gname
    	value="<%= my.get("Gname") %>" 
    	<%= my.get("商品名使用") %>
    ><br>
    単価
    <INPUT
    	type=text
    	name=Gtanka
    	value="<%= my.get("Gtanka") %>" 
    	<%= my.get("単価使用") %>
    ><br><br>
    <INPUT type=submit name=send value="<%= my.get("更新モード") %>"><br>
    <INPUT type=submit name=send value="キャンセル"><br>
    </FORM>
     
    <TEXTAREA cols=80 rows=10>
    <%= my.get("ERROR_MESSAGE") %>
    </TEXTAREA>
    </BODY>
    </HTML>
     
    <%-- ************************************************** --%>
    


    初期画面用モデル
  • 画面が forward では無く、リクエストで呼び出された時の画面設定を行います

  • pg001 でセットされた 商品コードを my.getAppData("pg001_Gcode") で取得
    しています

  • その商品コードでテーブルを読み、存在する場合は削除モードの画面を構成し、
    存在しない場合は登録モードの画面を構成しています


  • <%@ page
    	language="java"
    	import="java.sql.*"
    	contentType="text/html;charset=shift_jis" %>
    <jsp:useBean id="my" scope="session" class="lightbox.webapp" />
     
    <%
    // *********************************************************
    // この画面での処理
    // *********************************************************
    	my.put( "Gcode", my.getAppData("pg001_Gcode") );
    	my.put( "商品コード使用", "readonly style='background-color:silver'" );
     
     
    	if ( !my.Connect() ) {
    		my.log( my.get( "ERROR_CONNECT" ) );
    		my.put( "ERROR_MESSAGE", "接続エラーです : " 
    				+ my.get("ERROR_CONNECT") );
    	}
    	else {
    		String Query = "select * from 商品マスタ";
    		Query = Query + " where コード = '" + my.get("Gcode") + "'";
    		ResultSet rset = my.Query( Query );
     
    		if ( rset != null ) {
    			if ( rset.next() ) {
    				my.put( "Gname", rset.getString("商品名") );
    				my.put( "Gtanka", rset.getString("単価") );
    				my.put(
    					"商品名使用",
    					"readonly style='background-color:silver'"
    				);
    				my.put(
    					"単価使用",
    					"readonly style='background-color:silver'"
    				);
    				my.put( "更新モード", "削除" );
    			}
    			else {
    				my.put( "Gname", "" );
    				my.put( "Gtanka", "" );
    				my.put( "更新モード", "登録" );
    			}
    		}
    		else {
    			my.put( "Gcode", "" );
    			my.put( "Gname", "" );
    			my.put( "Gtanka", "" );
     
    			String Message = "データベースのエラーです : " + my.get("ERROR_SQL");
    			my.put( "ERROR_MESSAGE", Message );
    		}
     
    		my.DisConnect();
    	}
     
    %>
     
    <H2>Get Input</H2>
    <%-- ************************************************** --%>
    <jsp:include page="view.jsp" flush="true" />
    <jsp:getProperty name="my" property="debug" />
    


    更新処理用モデル
  • 画面から POST された場合の処理を行ないます

  • 更新モード (ボタンの value) によって、必要な更新を行います


  • <%@ page
    	language="java"
    	contentType="text/html;charset=shift_jis" %>
    <jsp:useBean id="my" scope="session" class="lightbox.webapp" />
     
    <%
    // *********************************************************
    // この画面での処理
    // *********************************************************
    	if ( my.get( "send" ).equals( "キャンセル" ) ) {
    		my.clear();
    		response.sendRedirect( "../pg001/control.jsp" );
    		return;
    	}
     
    	if ( my.get( "send" ).equals( "登録" ) ) {
     
    		if ( !my.Connect() ) {
    			my.log( my.get( "ERROR_CONNECT" ) );
    			my.put( "ERROR_MESSAGE", "接続エラーです : "
    					+ my.get("ERROR_CONNECT") );
    		}
    		else {
    			String Query = "insert into 商品マスタ (コード,商品名,単価)";
    			Query = Query + " values('" + my.get("Gcode") + "'";
    			Query = Query + ",'" + my.get("Gname") + "'";
    			if ( my.get("Gtanka").equals( "" ) ) {
    				Query = Query + ",0)";
    			}
    			else {
    				Query = Query + "," + my.get("Gtanka") +")";
    			}
    			if ( my.Execute( Query ) ) {
    				my.clear();
    				response.sendRedirect( "../pg001/control.jsp" );
    				return;
    			}
    			else {
    				my.put( "Gcode", "" );
    				my.put( "Gname", "" );
    				my.put( "Gtanka", "" );
     
    				String Message = "データベースのエラーです : "
    									+ my.get("ERROR_SQL");
    				my.put( "ERROR_MESSAGE", Message );
    			}
     
    			my.DisConnect();
    		}
     
    	}
     
    	if ( my.get( "send" ).equals( "削除" ) ) {
     
    		if ( !my.Connect() ) {
    			my.log( my.get( "ERROR_CONNECT" ) );
    			my.put( "ERROR_MESSAGE", "接続エラーです : "
    					+ my.get("ERROR_CONNECT") );
    		}
    		else {
    			String Query = "delete from 商品マスタ";
    			Query = Query + " where コード = '" + my.get("Gcode") + "'";
    			if ( my.Execute( Query ) ) {
    				my.clear();
    				response.sendRedirect( "../pg001/control.jsp" );
    				return;
    			}
    			else {
    				my.put( "Gcode", "" );
    				my.put( "Gname", "" );
    				my.put( "Gtanka", "" );
     
    				String Message = "データベースのエラーです : "
    									+ my.get("ERROR_SQL");
    				my.put( "ERROR_MESSAGE", Message );
    			}
     
    			my.DisConnect();
    		}
     
    	}
     
    %>
     
    <H2>Post Input</H2>
    <%-- ************************************************** --%>
    <jsp:include page="view.jsp" flush="true" />
    <jsp:getProperty name="my" property="debug" />