首頁 web前端 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 -----------
登入後複製

當然,一般不去特別留意是不會發現有什麼問題的,畢竟輸出再多的空格和換行符,對於瀏覽器產生的最終效果是一樣的。也就是大部分開發人員忽略這個問題的原因;但實際上這些空格和換行會佔用了不少空間,我的經驗是30%左右是空格/換行。也有人說,當web伺服器以zip的方式來輸出html時,空格引起的頻寬問題就可以解決了;是的,當使用zip來輸出html時,空格/換行的空間會被節省回來,但這個增加zip的工作量,而且最大的問題是,瀏覽器產生頁面時,還是會還原所有的空格的換行符。對於前端開發人員來說這是個噩耗,面對大量的空格和冗長的html源碼,想要找到對應出問題的樣式所在的位置可不是容易的事情。 
下面說一下解決方案,以Tomcat為例: 
方案一,利用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標籤之間的空格的換行符,在部分情況下也來帶來不便。 
如:Your name is ${firstName} ${lastName}. ==輸出為==> Your name is firstNamelastName. 
兩個${}變數之間的空格也會消失。要解決這個問題是相當麻煩,要引入一個只有一個空格的變數。 
 
Your name is ${firstName}${one_space}${lastName}. 
這樣就正常了,麻煩。雖然可以在一些全域變數的地方來增加一個one_space的變量,但程式碼看起來還是不爽。 
方案二,我比較喜歡。 
這個方案只有在支援jsp 2.1的web伺服器上才可以使用,如Tomcat6。
Jsp2.1多了一個很有用的指令; 
 
這個指令可以使jsp輸出的html時去除多餘的空行(jsp上使用EL和tag會產生大量的空格和空白),沒有使用trimSpaces的問題,現在jsp輸出html也可以很好地排版,看起來也專業;以前我一直都羨慕velocity的模板,輸出html十分乾淨好看,現在jsp也可以了。 
另外提一下,Tomcat6有一些相容性問題,例如不能使用#{}這種程式碼在jsp中,因為會被當成JSF腳本執行。 
雖然這是一個很小的問題,但我們還是要注意細節。


更多JSP輸出HTML時產生的大量空格和換行的去除方法相關文章請關注PHP中文網!


本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

HTML容易為初學者學習嗎? HTML容易為初學者學習嗎? Apr 07, 2025 am 12:11 AM

HTML適合初學者學習,因為它簡單易學且能快速看到成果。 1)HTML的學習曲線平緩,易於上手。 2)只需掌握基本標籤即可開始創建網頁。 3)靈活性高,可與CSS和JavaScript結合使用。 4)豐富的學習資源和現代工具支持學習過程。

HTML,CSS和JavaScript的角色:核心職責 HTML,CSS和JavaScript的角色:核心職責 Apr 08, 2025 pm 07:05 PM

HTML定義網頁結構,CSS負責樣式和佈局,JavaScript賦予動態交互。三者在網頁開發中各司其職,共同構建豐富多彩的網站。

了解HTML,CSS和JavaScript:初學者指南 了解HTML,CSS和JavaScript:初學者指南 Apr 12, 2025 am 12:02 AM

WebDevelovermentReliesonHtml,CSS和JavaScript:1)HTMLStructuresContent,2)CSSStyleSIT和3)JavaScriptAddSstractivity,形成thebasisofmodernWebemodernWebExexperiences。

HTML中起始標籤的示例是什麼? HTML中起始標籤的示例是什麼? Apr 06, 2025 am 12:04 AM

AnexampleOfAstartingTaginHtmlis,beginSaparagraph.startingTagSareEssentialInhtmlastheyInitiateEllements,defiteTheeTheErtypes,andarecrucialforsstructuringwebpages wepages webpages andConstructingthedom。

Gitee Pages靜態網站部署失敗:單個文件404錯誤如何排查和解決? Gitee Pages靜態網站部署失敗:單個文件404錯誤如何排查和解決? Apr 04, 2025 pm 11:54 PM

GiteePages靜態網站部署失敗:404錯誤排查與解決在使用Gitee...

如何用CSS3和JavaScript實現圖片點擊後周圍圖片散開並放大效果? 如何用CSS3和JavaScript實現圖片點擊後周圍圖片散開並放大效果? Apr 05, 2025 am 06:15 AM

實現圖片點擊後周圍圖片散開並放大效果許多網頁設計中,需要實現一種交互效果:點擊某張圖片,使其周圍的...

HTML,CSS和JavaScript:Web開發人員的基本工具 HTML,CSS和JavaScript:Web開發人員的基本工具 Apr 09, 2025 am 12:12 AM

HTML、CSS和JavaScript是Web開發的三大支柱。 1.HTML定義網頁結構,使用標籤如、等。 2.CSS控製網頁樣式,使用選擇器和屬性如color、font-size等。 3.JavaScript實現動態效果和交互,通過事件監聽和DOM操作。

網頁批註如何實現Y軸位置的自適應佈局? 網頁批註如何實現Y軸位置的自適應佈局? Apr 04, 2025 pm 11:30 PM

網頁批註功能的Y軸位置自適應算法本文將探討如何實現類似Word文檔的批註功能,特別是如何處理批註之間的間�...

See all articles