xhtml + jspx + tomcat6とどのように「戦った」かの物語

良い一日。



この記事では、最初のスタートアップの開発と、 自信がないために3時間空いた時間について話したいと思います。



まえがき



正直なところ、私の手は何かを書くために長い間私の顔を傷つけてきました。ご存知のように、誰も必要としない大学の研究室を意味するものではありません。 そして今、しばらく前に、私たち:エンコーダーと私の2人の仲間(レイアウト設計者およびシステム管理者)は、最初のスタートアップで作業を開始することにしました。



開発開始



デザイナーがいなかったので、私は責任を持ってテンプレートを描きました。 それは私にとって簡単だったとは言いませんが、これはまったく別の話です。 その結果、数十の記事を読んだ後、本をめくって、私は自分の仕事に対処しました。



次はレイアウトです。 私たちのタイプセッターは、標準について非常に厳格な概念を持つ人です。何かが準拠していない場合、彼はゴミ箱に送られます。 「XHTMLのみ」と彼は私に言った。そして、おそらく賛成でさえ、私は反対しなかった。 レイアウトの作業が進行中に、私はコアを取り上げました。



最初の「石」



その前にhtmlで記述し、* .jspとしてテンプレートファイルを作成したことに注意する必要があると思いますが、xhtmlが何であり、どのように異なるかについてはよく知っていました。 その結果、「xhtmlの場合-.jspxページを作成する方が正しい」と思ったので、作成しました。 ちょうどその時点で、レイアウトの準備ができていました。リソースを含むhtmlファイルを受け取りました。



私は最初から高いペースを設定することを望んでいたので、マークアップをすぐにjpsxファイルにコピーし、いくつかの場所でそれを修正し、リソースをコピーし、すべての美しさを見るためにTomcatを起動しましたが、Tomcatは私の人生で一度も見たことがないエラーで私に誓いました。 私はグーグルに尋ねた-「グーグルは私に答えなかった、彼の頭を振った。」 いいえ-彼は確かに答えました-それだけが私を助けませんでした。 私はまだ盲目的につまずき、何かを変え、それを削除しました-それは助けにはなりませんでした、猫は頑固にパワートラックで私を砲撃しました。 それから私はあきらめました、いや、そうではありません。結局のところ、jspxの文献を読む価値があると思いました。



その結果、次のエラーが見つかりました。



1. DOCTYPE

文書の冒頭の私にとっての通常の行の代わりに

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      
      





特別なタグを使用する必要があります。

 <jsp:output doctype-root-element="html" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" omit-xml-declaration="true"/>
      
      







2.エスケープされたチャー

ページにはtextareaタグがあり、その中にhtmlコードがあります。どういうわけか、 <



および>



文字をそれぞれ<and>に変換する必要があることを完全に忘れてしまいました。



3. CDATA

xmlドキュメント内の文字データを選択する必要がある場合に使用されます。たとえば、別のファイルに配置されていないスタイルなどです。

 <style type=”text/css”> <![CDATA[ input {...} /*   */ ]]> </style>
      
      







4.マークアップ

一部の場所では、最後に単一のタグを置くのを忘れていました

例えば

 <img src="1.gif" width="10" height="10">
      
      





の代わりに

 <img src="1.gif" width="10" height="10"/>
      
      







5.ディレクティブ

代わりに

 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
      
      





使用する必要があります

 <jsp:directive.page contentType="text/html; charset=UTF-8"/>
      
      







これらのエラーはすべてドキュメントの構造を破壊し、パーサーはドキュメントを処理できず、明確な良心をもって例外をスローしました。



これらのエラーをすべて修正し、Tomcatを実行すると、ブラウザ(FF 3.6。*)がページを表示する方法がようやくわかりました。



しかし、私は早く喜んでいました。



サプライズ



最後のギャグの後、開発はより活発になり、ほぼゴールに達しました。 テストのために、FF、Opera、Safari、Chrome、IEのすべてのメインブラウザーをインストールしました。 もちろん停止しますが、IEはすでにプリインストールされています。 ところで、彼は最後の瞬間にすべてのラズベリーを台無しにしました。



参考(叙情的な余談):私は最愛の老女XP sp3を持っています-IE6が含まれています。はい、これは古代のものであることがわかりますが、それを7または8バージョンにアップグレードする必要はありませんでした。



IE、原則として、私は決してそれを使用しません-クロスブラウザの互換性をテストするためだけに。 理由はわからないが、IEでアプリケーションがどのように機能するかをもう一度確認することにしたとき、「IEはページを表示できません」というメッセージが表示されました。 「http:⁄⁄localhost⁄」というページを表示できなかったことに少し驚いた。 タンバリンでジャンプ-私は何も達成しませんでした。 ロバは「IEがページを表示できません」というメッセージを元気に見せ続けました。 まあ、彼はアフリカのロバとロバです。



特にレイアウトを取得したとき、IEに唾を吐きました-私の友人は、IE6-9ではすべてが完全に表示されることを誓いました。 そしてそれは私の間違いでした。



数日が経過しても、開発は滞りなくスムーズに行われました。 私はちょうど疑問に思った-IEが動作しない理由、私はプロキシなしで、直接インターネット接続があり、設定はありません。 私はグーグルに登った-そのような問題を抱えているのは私だけではないことが判明した。 いくつかのヒントは役に立ちませんでしたが、次のように見えました-「すべての設定をリセットする」。 私はそれをやった。 そして、見よ、この素晴らしいブラウザはページをロードして表示し始めました。



すぐに確認して、ローカルホストのアプリケーションにアクセスしようとしました。 少しIEを切って、ファイルを保存することを提案しました。 それは不具合だと思い、キャンセルをクリックし、FF、Operaなどにアクセスしようとしました-他のすべてのブラウザはページを表示しました。 IEから再度ログインを試みましたが、ファイルを保存するための提案が再び表示されました。 保存して、ノートブックで開き、ページレイアウトを見ました。 彼は仲間をチェックするように頼んだ-彼らの状況は同じだった。



問題を研究した結果、次のようになりました。

IE6、IE7、IE8-ファイルの保存を提供

IE9-通常表示されるページ



何かがおかしいのではないかと疑って、IE6でレイアウトデザイナーから送られてきたHTMLファイルのレイアウトを開きました。 IEは通常、ページをレンダリングしました。 jspxテンプレートでこのレイアウトと私のレイアウトの違いを探し始めたところ、最初はコンテンツタイプでした。

-友達のコンテンツタイプ: text/html





-私のコンテンツタイプ: application/xhtml+xml







「何...?」と思いましたが、content-type:text / htmlを試してみることにしました。 実際、それは報われました-すべてのブラウザが同じように動作し始めました-空白のページを表示しました。 IEでも。 次に、標準スキーム:Firefox + Firebug、ページをリロードしました:コンソールは空で、エラーはありません。ドキュメントの構造に注意が向けられました:内部には何もありませんでした。 私はFFにページのソースコードを「求めました」。内部には、ドキュメントに必要なすべての構造がありました。 それを保存し、サーバー上のテンプレートにあるものとの違いを再度探し始めました。



次の行に注意が向けられました。

 <script type="text/javascript" src="/js/jquery-1.5.1.min.js"/>
      
      





サーバー上のテンプレートでは次のように見えましたが:

 <script type="text/javascript" src="/js/jquery-1.5.1.min.js"></script>
      
      







実際、このような「変換」はすべてのタグに適用されています

さらに、空のタグが内部にあるため、同じ問題が発生しました。



決定は単独で行われました。 これらのタグを<![CDATA []]>でラップします。 したがって、サーバーに変換せずにまったく同じ形式で内部にあるものを提供します。



 <![CDATA[<script type="text/javascript" src="/js/jquery-1.5.1.min.js"></script>]]>
      
      







保存し、サーバーを再起動して、ログインを試みました。 FFはページをレンダリングしました。 指を交差させて、IEを起動しました。 そして彼はまた、見た目通りにページを表示しました。 その後、他のすべての主要なブラウザーをチェックインしました。すべてが正常に機能しました。



結論として



よく知られていない技術のボトルネックを探る時間を無駄にしないために、私はベストを尽くして、もっと速くしたかったのです。結局、いつものように判明しました。 この状況での私のar慢さは否定的な結果をもたらしました。 そして、開発段階でエラーに気づいたのは良いことです。



All Articles