2014-04-06 41 views
0

哪個類的tomcat負責將.jsp文件轉換爲.class文件?我想查看爲轉換編寫的源代碼。我的目標是檢查邏輯scriptlet註釋是如何消除的,並且基於此我將編寫自己的代碼以刪除HTML註釋(我還沒有決定如何實現它)。如何在服務器返回JSP頁面時刪除註釋?

我相信源代碼應該是可用的,因爲它是開源的。

還是有可能實現某種過濾器,以便每次服務器返回一個JSP頁面時,它將刪除註釋。我可以將所有HTML註釋替換爲Scriptlet註釋。但我想確保,如果有人在將來使用html註釋,它不會顯示。這基本上是爲了安全。

[新增]

按按JB Nizet給出的建議,我們將修改build.xml文件刪除註釋。我想出了這個刪除HTML註釋 -

<target name="-trim.html.comments"> 
    <echo message="Inside trim html comments" /> 
    <fileset id="html.fileset" dir="${build.dir}" includes="**/*.jsp, **/*.html" /> 
     <!-- HTML Comments --> 
    <replaceregexp replace="" flags="g" match="\&lt;![ \r\n\t]*(--([^\-]|[\r\n]|-[^\-])*--[ \r\n\t]*)\&gt;"> 
    <fileset refid="html.fileset"/> 
     </replaceregexp> 
</target> 

但是,我不知道如何刪除與//或/ * * /開始評論。任何建議我怎麼能這樣做?我在互聯網上搜索,但沒有得到任何線索。

我們使用ant腳本進行構建。

[新增]

要刪除與//我使用正則表達式如下開始單行註釋。但不知何故,它不工作。任何人都可以請幫助我我做錯了什麼?提前致謝。

<replaceregexp flags="gs" match="?:^\s*\/\/(?:.*)$" replace=""> 
+0

爲什麼不簡單地在構建過程中添加一個任務,以確保沒有JSP包含'<! - '?這將非常容易實現,它會教育你的開發人員,在運行時不會花費任何代價,並且它不會將你的解決方案綁定到任何特定的tomcat實現。 –

+0

您使用的是像Apache這樣的網絡服務器嗎?他們中的許多人都有可以完成這項工作的縮小模塊,比如Apache的[mod_deflate](http://httpd.apache.org/docs/2.2/mod/mod_deflate.html)。 –

+0

是的。我我們使用的是Apache。 – Kartic

回答

0

與其在Tomcat中使用它,不如直接使用Apache。它支持完全符合你需要的模塊。 mod pagespeed可能最接近你想要的; mod deflate可能可以配置爲做同樣的事情,雖然它也壓縮數據,這可能是矯枉過正。

作爲一個很好的副作用,它允許您留下便利的評論,並將它們提供給使用端口8080的內部用戶(開發人員),而使用端口80的用戶(開發人員)只會看到縮小的產品。