• 検索結果がありません。

Webアプリケーション実行支援ライブラリ利用について

ドキュメント内 WebOTXマニュアル (ページ 31-41)

4. J2EE WebOTX

4.1. Web アプリケーション

4.1.7. Webアプリケーション実行支援ライブラリ利用について

Web アプリケーション実行支援ライブラリ

Web アプリケーション実行支援ライブラリは、Web アプリケーションで必要とされる機能をライブラリで提供 したものです。以下の実行支援ライブラリを利用することにより、作成効率が高まります。

z 文字エンコード機能 z Short Read 検出機能 z 画面遷移管理機能 z 二重送信防止機能

Web アプリケーション実行支援ライブラリを利用する前に

Web アプリケーション実行支援ライブラリを利用する前に次のことを確認して下さい。

まず、プロジェクト中の WEB-INF 配下に otxjsptag.tld ファイル、WEB-INF\lib 配下に webapsupport.jar ファ イルが存在していることを確認して下さい。(otxjsptag.tld ファイルと webapsupport.jar ファイルは WebAP 開 発環境のプロジェクトを生成時に「利用するライブラリの選択」で「Web アプリケーション実行支援ライブラ リ」のチェックボックスをチェックした場合にのみ作成されます。デフォルトでは選択されていません。)

以下に、Web アプリケーション実行支援ライブラリの各機能の概要と利用手順を示します。

文字エンコード機能

文字エンコード機能を利用することで、HTTP リクエストを Servlet へ引き渡す際の問題により発生する文 字化け問題を回避することが可能になります。本機能は、Servlet コンテナのフィルタリング機能を利用し て作られています。

手順は以下のとおりです。

「Web プロジェクト」の 作 成 方 法 は 、 「 Web プロジェクト・ウィザ ード」 の項目 を参照 して下さい 。

手順1

Web プロジェクトのプロジェクト設定ページで

「Web アプリケーション実行支援ライブラリ」

チェックし、さらに「文字エンコードフィルタを 利用する」にチェックします。

手順2

「エンコード種別」と「URL パターン」を必要に 応じて変更します。

設定上の注意事項

z 「エンコード種別」 には、 MS932、SJIS (またはShift_JIS)、UTF8、EUC-JP等の中のいずれか を設定して下さい。(例)MS932ページの日本語の文字化けの対処にはMS932を設定します。)

使用できる文字コードの例

文字コード 説明

MS932 Windows日本語

SJIS Shift-JIS、日本語

UTF8 8 ビット Unicode 変換形式

EUC-JP 日本語 EUC

サポートしない文字コードの例(使用しないで下さい)

文字コード 説明

JISAutoDetect Shift-JIS、EUC-JP、ISO 2022 JP の検出および変換 (Unicode 変換のみ)

z 「URL パターン」にはエンコードを行うページの URL パターンを指定します。すべてエンコードしたい 場合は ”/*” と指定します。

z Web プロジェクトの作成後にエンコード種別や URL パターンを変更したい場合は、web.xml エディタを 利用して、変更して下さい。(詳しくは、web.xml エディタの項目を参照して下さい。)

ネットワークの障害やブラウザにおいて中断ボタン押下時に Servlet コンテナで、Form の body データを取 得できず、Short Read と呼ばれる現象が発生することがあります。JRun では Short Read 発生時、URL パ ラメータが取得できない状態で Web アプリケーションを呼び出すことがわかっています。この場合、不正な パラメータを指定してビジネスロジックを呼び出してしまうといった問題が WebAP JSP でありました。

本機能では、これを回避するために Short Read 発生を検出する機能を、Servlet コンテナのフィルタリング 機能を利用して提供します。

手順は以下のとおりです。

手順1

Web プロジェクトのプロジェクト設定ページで

「Web アプリケーション実行支援ライブラリ」を チェックし、さらに「ShortRead フィルタを 利用する」にチェックします。

手順2

「URL パターン」と「エラーページ」を必要に応 じて変更します。

手順3

手順 2 で設定した Short Read 対象の URL パターンに該当するすべて JSP フ ァイル中に、図を参考にして Short Read 関連タグの設定をします。

①otxjsp タグの宣言を JSP ファイル の冒頭に追加します。

<%@ taglib uri="/WEB-INF/

otxjsptag.tld" prefix="otxjsp" %>

<form>タグの後半に

<otxjsp:CheckData/>タグを追加して 下さい。

<%@ page pageEncoding="MS932"

contentType="text/html; charset=Windows-31J" %>

<%@ taglib uri="/WEB-INF/otxjsptag.tld"

prefix="otxjsp" %>

<!DOCTYPE HTML PUBLIC "-//w3c//dtd html 4.0 transitional//en">

<html>

<head>

<title>ここにタイトルを入力して下さい。</title>

</head>

<body bgcolor="#FFFFFF">

ここにコンテンツを入力して下さい。

<form>

<!- ここから FORM の部品を配置してください -->

<!- ここまで FORM の部品を配置してください -->

<!- ここからは消さないでください -->

<otxjsp:CheckData/>

<!- ここまでは消さないでください -->

</form>

</body>

</html>

手順4

手順1で指定したエラーファイル名で JSP フ ァイルを作成します。

<%@ page contentType="text/html;

charset=Windows-31J" pageEncoding="MS932" %>

<HTML>

<HEAD>

<TITLE>Short Read エラー画面</TITLE>

</HEAD>

「JSP ウィザー ド」で JSP 詳細設定 を行い作成した JSP ファイルは、手順3の は不要となります。

<BODY>

<CENTER>

<H1> Short Read エラーサンプル</H1>

</CENTER>

</BODY>

</HTML>

画面遷移管理機能

注意事項 (Struts フレームワーク専用機能です。)

複数の画面遷移を必要とする業務において、利用者がブラウザの「戻る」ボタン等を利用して、アプリケーション で予期していない画面遷移を行った場合、ビジネスロジックが不正に実行される可能性があります。本機能は、

本開発環境が提供するタグライブラリと Struts のカスタム Action クラスを利用して画面遷移管理を実現してい ます。なお、本機能は Struts 専用の機能で、通常の Web アプリケーションでは利用できません。

機能詳細図

左記の図中の黄色 の矢印が正常で、赤 の箇所が画面遷移 エラーを表示しま す。

Struts では、トランザクション実行時に必要な一連の画面遷移を管理する機能が提供されていません。本製 品では、トランザクションに関連する一連の画面遷移を管理する機能を提供することで、上記図のように、ブラ ウザの戻るボタン押下や、リロードボタン押下時、また、URL の直接入力された場合に、ビジネスロジックの呼 び出し順序性が崩れるのを抑止します。

手順は以下のとおりです。

手順1

画面遷移の管理を行いたい JSP ファイルに、タグライブラリの定義とパラメータの設定を行います。

以下に JSP ファイルの設定例を示します。

login.jsp → welcome.jsp → welcomeend.jsp と言う順序で3つの画面を管理したい場合、なお、画面遷 移エラーの場合は独自のエラー画面 struts_error.jsp および error.jsp に遷移するものとします。

設定例 login.jsp

<%@ page contentType="text/html; charset=Shift_JIS" %>

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>

<%@ taglib uri="/WEB-INF/otxjsptag.tld" prefix="otxjsp" %>

<html>

<head><title>login 画面</title></head>

<body>

<html:errors/>

ID・パスワードを入力してください。

<html:form action="/authentication" focus="id">

<otxjsp:ScreenOrder name="SCR_ODER1" value="begin"/>

<html:text property="id" size="16"/>

<br>

<html:password property="pass" size="16" redisplay="false"/>

<br>

<html:submit property="submit" value="送信"/>

<html:reset value="リセット"/>

</html:form>

</body>

</html>

①JSP 中のタグライブラリの宣言

画面遷移管理機能を利用したいすべての JSP に以下のような記述をします。

<%@ taglib uri="/WEB-INF/otxjsptag.tld" prefix="otxjsp" %>

②form タグの内側に ScreenOrder タグを記述します。

・画面管理対象で一番最初の画面の場合

<otxjsp:ScreenOrder name="SCR_ODER1" value="begin"/>

・画面管理対象で途中の画面の場合

<otxjsp:ScreenOrder name="SCR_ODER1"/>

・画面管理対象で一番最後の画面の場合

<otxjsp:ScreenOrder name="SCR_ODER1"/ value="end"/>

ScreenOrder タグの内容 ScreenOrder タグ

説明 画面遷移を管理するために使用します。本タグは form タグの内側に記述し

ます。

構文 <otxjsp:ScreenOrder name="name" [value="value"] />

属性

Name

java.lang.String

画面遷移名.を指定します。

Value

java.lang.String

画面遷移の開始、終了を指定します。値として は、”begin”,”end”が指定できます。画面遷移の 途中の画面では、value は指定しません。

手順2 エラー画面の作成

①Tomcat 等のサーブレットコンテナを利用する場合、エラーページの表示をデフォルトのままにしておく と、少なからずセキュリティ上の問題につながる恐れがあるため、独自でエラー画面を作成するのが一般 的です。そこで、下記のようなエラーページを用意します。(今回は struts_error.jsp と error.jsp の両方を実 装して下さい)

設定例 struts_error.jsp(struts 用のエラー画面)

<%@ page contentType="text/html; charset=Shift_JIS" isErrorPage="true"%>

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>

<html:html>

<h1>Struts エラー画面サンプル</h1>

<p><table border=1>

<tr>

<td><b>メッセージ</b></td>

<td><html:errors/></td>

</tr>

</table>

</p>

</html:html>

設定例 error.jsp(汎用のエラー画面)

<%@ page contentType="text/html; charset=Shift_JIS" isErrorPage="true"%>

<html>

<body>

<h1>エラー画面サンプル</h1>

<p><table border=1>

<tr>

<td><b>メッセージ</b></td>

<td><%= request.getAttribute("javax.servlet.error.message") %></td>

</tr>

</table>

</p>

<!-- IE の簡易ブラウザ表示(デフォルト)に対応するため 空白を入れます-->

②エラー画面の定義を web.xml と struts-config.xml ファイルに記述します。(赤字箇所)

・web.xml に以下を追加

<error-page>

<exception-type>javax.servlet.ServletException</exception-type>

<location>/error.jsp</location>

</error-page>

・struts-config.xml の設定例(赤字箇所を追加して下さい。)

(画面遷移管理機能を利用しているすべての action にそれぞれ必要です。)

<action-mappings>

<action

attribute="authenticationForm"

name="authenticationForm"

path="/authentication"

type="jp.co.nec.webotx.struts.AuthenticationAction">

<forward name="success" path="/welcome.jsp" />

<forward name="fail" path="/login.jsp" />

<forward name="err_move" path="/struts_error.jsp" />

</action>

③Struts専用のメッセージリソースファイルを追加します。(英語と日本語の両方を作成)

実際のメッセージの内容は使用用途に応じて変更して下さい。

・(ApplicationResources.properties 英語用)

errors.move = Change Screen in wrong order.ScreenName={0},ScreenOrderControlID={1}

errors.timeout = Session Timeout etc.

errors.notable = The information (table) corresponding to Session ID does not exist. Or there is no value. Screen name = {0}, screen changes name = {1}, value = {2}

errors.none = A value is in agreement. It counts up to screen changes name = {0} and value = {1}.

errors.nomatch = It is not in agreement with the contents saved at the session.

・(ApplicationResources_ja.properties 日本語用)

errors.move=\u753b\u9762\u9077\u79fb\u304c\u4e0d\u6b63\u3067\u3059\

u3002\u753b\u9762\u540d= {0},\u753b\u9762\u9077\u79fb\u540d= {1}

errors.timeout=\u30bb\u30c3\u30b7\u30e7\u30f3\u30bf\u30a4\u30e0\u30a2\

u30a6\u30c8\u7b49\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002

errors.notable=\u30bb\u30c3\u30b7\u30e7\u30f3ID\u306b\u5bfe\u5fdc\

u3059\u308b\u60c5\u5831\uff08\u30c6\u30fc\u30d6\u30eb\uff09\u304c\

u5b58\u5728\u3057\u306a\u3044\u3002\u3082\u3057\u304f\u306f\u5024\

u304c\u306a\u3044\u3002\u753b\u9762\u540d={0},\u753b\u9762\u9077\

u79fb\u540d={1},\u5024={2}

errors.none=\u5024\u304c\u4e00\u81f4\u3002\u753b\u9762\u9077\u79fb\

u540d={0}, \u5024={1}\u306b\u30ab\u30a6\u30f3\u30c8\u30a2\u30c3\

u30d7\u3002

ドキュメント内 WebOTXマニュアル (ページ 31-41)

関連したドキュメント