例 #2: HTML のフォームを使用してユーザーが接続先ホストを指定できるようにする

管理者は、指定変更値を算出するのではなく、HTML のフォームを使用して値を指定することもできます。以下の例は、ホスト名の記入用の簡単なフォームを表示するものです。このフォームは、フォーム内に指定されたホスト名を使用して 3270 ディスプレイ・セッションのホスト名を指定変更する JSP プログラムへ post を実行します。

この例は、JSP を使用して作成されています。デプロイメント・ウィザードが、 「3270 ディスプレイ」および「5250 ディスプレイ」と呼ばれる 2 つのセッションを含む HTML ファイルを作成するために使用されました。Z and I Emulator for Web 1.0 では、いくつかの HTML が JavaScript を使用して生成され、HTML パラメーターは JavaScript の配列内で指定されるか、または JavaScript の document.write ステートメントを使用して指定されることに注意してください。

フォームを使用する場合、フォーム・データはプログラムへの複数の要求を通じて保持される必要があります。これは、構成サーバー・ベース・モデルのページを使用している場合、Z and I Emulator for Web HTML ファイルが、Java を検出するために、およびブックマークをサポートするために自ら再ロードするからです。構成サーバー・ベース・モデルを使用している場合に、Java 1 を選択し、 ブックマーク・サポートを使用不可にしている場合は、ページの再ロードの必要はなく、 フォーム・データを保持する必要もありません。この例は、再ロードが行われてもフォーム・データを保持するために、JSP セッションを使用します。

以下に、ホスト名を入力できる簡単な HTML フォームを示します。このフォームは、JSP プログラム (example2.jsp) に対して post を実行します。

<form method="POST"  action="zieweb/example2.jsp">
Hostname <input name="form.hostname"><br>
<input type="submit">
</form>

以下は、デプロイメント・ウィザードからの変更出力です。詳細は、例に含まれるコメントを参照してください。デプロイメント・ウィザードの出力へ追加した行は、太字で表示してあります。

<HTML>
<%
// Get a session or create if necessary and store the hostname
// entered in the form in the session.
HttpSession session = request.getSession(true);
String hostname = request.getParameter("form.hostname");
if (hostname!=null) {
session.putValue("session.hostname", hostname);
}
%>
<!-- ZIEWeb WIZARD HTML -->
<!-- Deployment Wizard Build : 8.0.0-B20030605 -->
<HEAD>
<META http-equiv="content-type" content="text/html; charset=UTF-8">
<TITLE>Example 2 page title</TITLE>
<SCRIPT LANGUAGE="JavaScript" SRC="/zieweb/CommonJars.js"></SCRIPT>
<SCRIPT LANGUAGE="JavaScript" SRC="/zieweb/HODJavaDetect.js"></SCRIPT>
<SCRIPT LANGUAGE="JavaScript" SRC="/zieweb/CommonParms.js"></SCRIPT>
<SCRIPT LANGUAGE="JavaScript">

//---- Start JavaScript variable declarations ----//
var zie_Locale = '';
var zie_jsapi=false;
var zie_AppName ='';
var zie_AppHgt = '80%';
var zie_AppWid = '80%';
var zie_CodeBase = '/zieweb/';
var zie_FinalFile = 'z_example2.html';
var zie_JavaType = 'java2';
var zie_Obplet = '';
var zie_jars = 'habasen.jar,ziebasen.jar,zieimg.jar,hacp.jar,ziesignn.jar,ha3270n.jar,
                ziecfgn.jar,ha5250n.jar';

var zie_URL = new String(window.location);
var zie_DebugOn = false;
var zie_SearchArg = window.location.search.substring(1);

var zie_AppletParams = new Array;
zie_AppletParams[0] = '<PARAM NAME="ParameterFile" VALUE="ZIEWebData\\example2\\params.txt">';
zie_AppletParams[1] = '<PARAM NAME="ShowDocument"  VALUE="_parent">';
zie_AppletParams[2] = '<PARAM NAME="JavaScriptAPI" VALUE="' + zie_jsapi + '">';
zie_AppletParams[3] = '<PARAM NAME="PreloadComponentList" VALUE="HABASE;HODBASE;HODIMG;
                                                                    HACP;HAFNTIB;HAFNTAP;
                                                                    HA3270;HODCFG;HA5250">';

// The next 2 lines are required in order to override session properties.
// The first line turns on the processing for this function and does not
// need to be modified. The second line identifies the sessions that you
// want to change. In this example, there are 2 sessions identified
// named: "3270 Display" and "5250 Display".
// Be careful to increment the array index correctly.

zie_AppletParams[4] = <PARAM NAME="EnableHTMLOverrides" VALUE="true">;
zie_AppletParams[5] = <PARAM NAME="TargetedSessionList" VALUE="3270 Display,5250 Display">;

// The following line changes the Host or Destination Address session parameter
// for the session named "3270 Display". In this example, the Host is being set
// to the value saved in the JSP session from the HTML form.
// When you are initially testing your changes, you may want to use a constant
// value to verify that the syntax is correct before you insert your
// calculations.
// Here we override the host for the 3270 session to the value saved in the
// jsp session from the html form.

zie_AppletParams[6] = <PARAM NAME="Host" VALUE="3270 
                       Display=<%=session.getValue("session.hostname")%>">;

//zie_AppletParams[x] = '<PARAM NAME="DebugCode"     VALUE="65535">';

//---- End JavaScript variable declarations ----//

function getZIEMsg(msgNum) {
  return ZIEFrame.zieMsgs[msgNum];
}

function getZIEFrame() {
  return ZIEFrame;
}

var lang = detectLanguage(zie_Locale);
document.writeln('<FRAMESET cols="*,10" border=0 FRAMEBORDER="0">');
document.writeln('<FRAME    src="/zieweb/ziedetect_' + lang + '.html" name="ZIEFrame">');
document.writeln('</FRAMESET>');

</SCRIPT>
</HEAD>
</HTML>