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

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

高洛峰
高洛峰オリジナル
2016-12-24 15:49:301522ブラウズ

この問題は、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 つだけ含む変数を導入するのが非常に面倒です。
d6cdc9b286cb7f4e3c771e8bc8851735 bd12eb28a7cb26bad82924c149f4a7a2
あなたの名前は ${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 までご連絡ください。