2013-02-21 40 views
5

是否有比JSP更安全的方法? Google沒有找到任何有意義的答案。我們目前使用Spring MVC框架和JSP來呈現HTML。我討厭JSP呈現的動態特性,因爲您引用了像${model.someAttribute}這樣的模型,但無法判斷此屬性在給定模塊中是否可用,或者指定模板所期望的模型類型。因爲Eclipse不知道哪些模板使用模型,也無法將getter與模板中的屬性訪問器相關聯,所以重構模型的getter變得非常困難。JSP模板的任何類型安全替代

是否有一個模板技術擺在那裏,既不是通過命令式的代碼和更多類型吐出HTML代碼不太難看/編譯JSP的不是安全?

+0

也許試試IntelliJ? – irreputable 2013-02-21 23:13:55

+0

@irreputable,它以某種方式支持重構bean屬性名稱並照顧模板嗎? – d56 2013-02-22 09:07:00

回答

0

Lift(基於Scala)提供了一個很好的模型,將HTML佈局與實際應用程序代碼(稱爲片段)完全分開。雖然起步門檻可能看起來很高,但收益在較長時期內確實很大。最大的好處是它可以在JVM上運行,因此您可以重新使用大部分Java庫和其他代碼。

+0

似乎不是編譯安全的,或者是否有工具可以確保您不訪問未定義的屬性和工具,這些工具在重構屬性名稱時有所幫助? – d56 2013-02-22 09:05:54

+0

@ d56其實,它是。在您的HTML中,您只需標記應用程序應該使用特殊CSS類或ID動態填充的元素。填充它們的代碼是編譯器和您的IDE全面驗證的常規Scala代碼,包括類型安全性。 – 2013-02-22 19:01:08

0

我相信JXT的目標包括XSS安全和類型的模型安全性,它被設計成易於從JSP頁面轉換爲。

他們的pipeline描述說明它們的表達式更貼近Java表達式,因此如果表達式的類型不匹配,您將獲得Java-esque類型的錯誤。

+0

OP的問題是靜態分析,重構,代碼完成等工具支持 – irreputable 2013-02-21 23:13:37

+0

@irreputable,我解釋「我只是想知道是否有比JSP更安全的東西......」和「應該有一些更靜態的模板技術在那裏......「要求替代JSP。如果您認爲我錯了,請向海報作出澄清。 – 2013-02-21 23:17:31

2

您可以使用類型提示,例如jsp:useBean中的type attribute以及JSP標記文件的屬性聲明中(可能在其他位置,如JSTL標記中)。然後,IntelliJ會爲你做所有優秀的基於靜態類型的東西(準確的代碼完成建議,重構,查找用法,顯示快速javadoc等)。

我剛剛在JSP tag files背景下寫了這件事。

0

實際上並沒有使用它,但Twirl(https://www.playframework.com/documentation/2.5.x/JavaTemplates) 稱自己是「一個基於Scala的類型安全模板引擎」(顯然可用於Play for Java)。

報價:基於斯卡拉

類型安全的模板引擎 播放帶有旋轉扭曲,一個強大的基於Scala的模板引擎,它的設計是由ASP.NET剃刀啓發。具體而言,它是:

緊湊,有表現力和流體:它最大限度地減少在一個文件所需的字符和擊鍵次數,並且能夠快速,流體編碼工作流程。與大多數模板語法不同,您不需要中斷編碼以明確表示HTML中的服務器塊。解析器足夠聰明,可以從您的代碼中推斷出這一點。這使得一個非常簡潔和有表現力的語法可以乾淨,快速和有趣地輸入。

簡單易學:它可以讓你迅速成爲生產力,用最少的概念。您可以使用簡單的Scala結構和所有現有的HTML技能。

不是一種新的語言:我們有意識地選擇不創建一種新的語言。相反,我們希望使Scala開發人員能夠使用他們現有的Scala語言技能,並提供模板標記語法,以實現出色的HTML構建工作流程。

在任何文本編輯器編輯:它不需要特定的工具,使您能夠在任何普通的文本編輯器的生產。