サーブレットの基礎知識

HTMLフォームがサービス開始時に正しく表示されない?

テンアートニ 中越智哉
2001/6/6

 テストのときは正常に表示されていたHTMLフォームが、サービス開始後に表示されない……などということがあってはならないのですが、特定のWebブラウザだけを使ってテストしていると、HTMLの記述の不備に気付かないことがあります。

 Webアプリケーションにおいては、クライアントはWebブラウザを使うことがほとんどです。どのWebブラウザもHTMLを利用して表示を行っていますから、動作も同じかというと実はそうではありません。

 上に書いた例は、Webアプリケーション開発の単体テスト時によく見られる現象です。IEや、最近のNetscapeはタグの記述が多少あいまいでもそれなりに解釈してくれますが、特にNetscapeの場合は少し古いバージョン(4.5以前)になると、記述が間違っている場合は正しく表示してくれません(もちろん、その方がまともな動作なのですが)。そのためIEでは正しく表示されていたものがNetscapeでは表示されないというケースがあります。

 例えば、タグを閉じる</form>の記述を忘れてしまうことがよくあります。最近のブラウザならば</form>がなくてもフォームが表示されるのですが、Netscapeの4.5以前の場合はまったく表示されません。笑い話のようですが、クライアントが常に最新のブラウザを使っているとは限らないため、さまざまなバージョンのWebブラウザがクライアントとなることを想定してテストを行う必要があります。

 例えば、以下のコードで表現されるHTMLフォームを、IEとNetscapeの両方で表示してみます。

<HTML>
<HEAD>
<TITLE>ログイン</TITLE>
</HEAD>
<BODY>
<H1 ALIGN="CENTER">ログイン</h1>
<FORM ACTION="/servlet/login" METHOD="POST">
<CENTER>
<TABLE>
<TR>
    <TD>ID</TD><TD><INPUT TYPE="text" NAME="ID" SIZE="10"></TD>
</TR>
<TR>
  <TD>PASSWORD</TD><TD><INPUT TYPE="password" NAME="PASSWORD" SIZE="10"></TD>
</TR>
<TR>
  <TD ALIGN="RIGHT"><INPUT TYPE="submit" NAME="dosubmit"></TD>
  <TD ALIGN="LEFT"><INPUT TYPE="reset"></TD>
</TR>
</TABLE>
</CENTER>
<!-- ここには本来、FORMを閉じるタグが必要 -->
</BODY>
</HTML>

 

Internet Explolerの場合

Netscape4.5以前の場合

 さらに、これがJavaScriptなどになると、同じブラウザでもバージョンやOSによって挙動が違うということも当たり前で、慎重に設計、開発を進めないと深刻な結果を招くこともあります。

 このように、Webアプリケーションを開発する際には、クライアントを1種類と考えるのではなく、対象とするブラウザやOS、バージョンなどを考慮して開発する必要があります。顧客に対しても、対象ブラウザの限定を提案したり、対象ブラウザの種類を多くすると、なんらかの機能の制限が起きる可能性があるということをきちんと説明する必要があります。


「Java Solution FAQ」




Java Agile フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Java Agile 記事ランキング

本日 月間