ホームページ ウェブフロントエンド htmlチュートリアル JSPがHTMLを出力する際に​​発生する大量のスペースや改行を削除する方法

JSPがHTMLを出力する際に​​発生する大量のスペースや改行を削除する方法

Dec 24, 2016 pm 03:49 PM

この問題は、JSP で EL タグやその他のタグを使用すると、大量のスペースと改行が生成されるため、たとえば:

------- start ---------- 
<c:choose> 
<c:when test="${fn:length(mainPageList)>1&}"> 
Something 
</c:when> 
<c:otherwise> 
Others 
</c:otherwise> 
</c:choose> 
------- end -----------
ログイン後にコピー

このコードは、Tomcat では次のように出力されます。いくつかの行が壊れています。

------- start ---------- 
Something 
------- end -----------
ログイン後にコピー

もちろん、特別な注意を払わなくても、一般的には問題はありません。結局のところ、スペースや改行がどれだけ出力されても、ブラウザによって生成される最終的な効果は同じです。これが、ほとんどの開発者がこの問題を無視する理由ですが、実際には、これらのスペースと改行が多くのスペースを占めています。また、Web サーバーが HTML を zip で出力すると、スペースによって引き起こされる帯域幅の問題は解決できると言う人もいますが、確かに、zip を使用して HTML を出力すると、スペースや改行のスペースは節約されますが、これにより作業負荷が増加します。 zip は巨大で、最大の問題は、ブラウザがページを生成するときに、すべてのスペースと改行が復元されてしまうことです。これは、フロントエンド開発者にとって悪いニュースです。大量のスペースと長い HTML ソース コードに直面すると、問題のあるスタイルの場所を見つけるのは簡単ではありません。
Tomcat を例として、以下の解決策について説明します。
オプション 1、Web サーバーの TrimSpaces 関数を使用します。
Tomcat5 以降のバージョンを使用できます。これが最も簡単な方法です。

<servlet> 
<servlet-name>jsp</servlet-name> 
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> 
<init-param> 
<param-name>fork</param-name> 
<param-value>false</param-value> 
</init-param> 
<init-param> 
<param-name>trimSpaces </param-name> 
<param-value>true </param-value> 
</init-param> 
<init-param> 
<param-name>xpoweredBy</param-name> 
<param-value>false</param-value> 
</init-param> 
<load-on-startup>3</load-on-startup> 
</servlet>
ログイン後にコピー

この解決策には欠点があり、すべての JSP EL タグ間のスペースの改行が削除されるため、場合によっては不便が生じる可能性があります。
例: あなたの名前は ${firstName} ${lastName} です == 出力は ==> あなたの名前は firstNamelastName です
2 つの ${} 変数間のスペースも消えます。この問題を解決するには、スペースを 1 つだけ含む変数を導入するのが非常に面倒です。

あなたの名前は ${firstName}${one_space}${lastName} です。これは正常です。一部のグローバル変数に one_space 変数を追加することはできますが、それでもコードの見栄えは良くありません。
オプション 2、私はそのほうが好きです。
このソリューションは、Tomcat6 などの JSP 2.1 をサポートする Web サーバーでのみ使用できます。
Jsp2.1 には非常に便利なコマンドがあります;
このコマンドは、JSP による HTML 出力時に冗長な空白行を削除できます (JSP で EL とタグを使用すると、スペースや空白行など)、trimSpaces を使用しても問題ありません。JSP による HTML 出力は適切にフォーマットされ、以前は Velocity のテンプレートがとてもきれいで美しいと思っていましたが、今では JSP でフォーマットできます。それもやってください。
さらに、Tomcat6 には互換性の問題がいくつかあります。たとえば、#{} のようなコードは JSF スクリプトとして実行されるため、jsp では使用できません。
これは小さな問題ですが、それでも細部に注意を払う必要があります。


JSP が HTML を出力するときに生成される大量のスペースや改行を削除する方法に関するその他の関連記事については、PHP 中国語 Web サイトに注目してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

&lt; Progress&gt;の目的は何ですか 要素? &lt; Progress&gt;の目的は何ですか 要素? Mar 21, 2025 pm 12:34 PM

この記事では、HTML&lt; Progress&gt;について説明します。要素、その目的、スタイリング、および&lt; meter&gt;との違い要素。主な焦点は、&lt; Progress&gt;を使用することです。タスクの完了と&lt; Meter&gt; statiの場合

&lt; datalist&gt;の目的は何ですか 要素? &lt; datalist&gt;の目的は何ですか 要素? Mar 21, 2025 pm 12:33 PM

この記事では、HTML&lt; Datalist&GT;について説明します。オートコンプリートの提案を提供し、ユーザーエクスペリエンスの改善、エラーの削減によりフォームを強化する要素。

&lt; meter&gt;の目的は何ですか 要素? &lt; meter&gt;の目的は何ですか 要素? Mar 21, 2025 pm 12:35 PM

この記事では、html&lt; meter&gt;について説明します。要素は、範囲内でスカラーまたは分数値を表示するために使用され、Web開発におけるその一般的なアプリケーション。それは差別化&lt; Meter&gt; &lt; Progress&gt;およびex

ビューポートメタタグとは何ですか?レスポンシブデザインにとってなぜそれが重要なのですか? ビューポートメタタグとは何ですか?レスポンシブデザインにとってなぜそれが重要なのですか? Mar 20, 2025 pm 05:56 PM

この記事では、モバイルデバイスのレスポンシブWebデザインに不可欠なViewportメタタグについて説明します。適切な使用により、最適なコンテンツのスケーリングとユーザーの相互作用が保証され、誤用が設計とアクセシビリティの問題につながる可能性があることを説明しています。

HTMLは初心者のために簡単に学ぶことができますか? HTMLは初心者のために簡単に学ぶことができますか? Apr 07, 2025 am 12:11 AM

HTMLは、簡単に学習しやすく、結果をすばやく見ることができるため、初心者に適しています。 1)HTMLの学習曲線はスムーズで簡単に開始できます。 2)基本タグをマスターして、Webページの作成を開始します。 3)柔軟性が高く、CSSおよびJavaScriptと組み合わせて使用​​できます。 4)豊富な学習リソースと最新のツールは、学習プロセスをサポートしています。

&lt; iframe&gt;の目的は何ですか タグ?使用する際のセキュリティ上の考慮事項は何ですか? &lt; iframe&gt;の目的は何ですか タグ?使用する際のセキュリティ上の考慮事項は何ですか? Mar 20, 2025 pm 06:05 PM

この記事では、&lt; iframe&gt;外部コンテンツをWebページ、その一般的な用途、セキュリティリスク、およびオブジェクトタグやAPIなどの代替案に埋め込む際のタグの目的。

HTML、CSS、およびJavaScriptの役割:コアの責任 HTML、CSS、およびJavaScriptの役割:コアの責任 Apr 08, 2025 pm 07:05 PM

HTMLはWeb構造を定義し、CSSはスタイルとレイアウトを担当し、JavaScriptは動的な相互作用を提供します。 3人はWeb開発で職務を遂行し、共同でカラフルなWebサイトを構築します。

HTMLでの開始タグの例は何ですか? HTMLでの開始タグの例は何ですか? Apr 06, 2025 am 12:04 AM

Anexampleapalofastartingtaginhtmlis、それはaperginsaparagraph.startingtagsaresentionentientiontheyinitiateelements、definetheirtypes、およびarecrucialforurturingwebpagesandcontingthomedomを構築します。

See all articles