【 雛形によるアプリケーションテスト 】
アプリケーションディレクトリの作成 |
d:\tomcat に pg001 というディレクトリを作成し、以下の3つのファイルを 作成します control.jsp view.jsp model.jsp このページでは、商品コードを入力して pg002 へリダイレクトするという 処理を行います
|
商品コード
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" />
|