任何类型安全的JSP模板替代方法

时间:2013-02-21 22:08:41

标签: java jsp

有没有比JSP更安全的东西?我没有通过谷歌找到任何有意义的答案。我们目前使用Spring MVC框架和JSP来呈现HTML。我开始讨厌JSP渲染的动态特性,因为你引用了像${model.someAttribute}这样的模型,但无法判断这个属性在给定模块中是否可用,或者指定模板的模型类型预计。重构模型的getter变得非常困难,因为Eclipse不知道哪些模板使用模型,也无法将getter与模板中的属性访问器相关联。

是否存在模板化技术,与通过命令式代码扫描HTML代码以及比JSP更多的类型/编译安全性相比,它更难看?

6 个答案:

答案 0 :(得分:2)

您可以使用类型提示,例如jsp:useBean中的type attribute和JSP标记文件的属性声明(可能在其他地方,如JSTL标记)。然后,IntelliJ将为您完成所有基于静态类型的好东西(准确的代码完成建议,重构,查找用法,快速显示javadoc等)。

我最近在JSP tag files的背景下写了这篇文章。

答案 1 :(得分:0)

Lift(基于Scala)提供了一个非常好的模型,它将HTML布局与实际应用程序代码(称为片段)完美分离。虽然入门门槛最初可能看起来很高,但在较长期内涨幅确实很大。一个很大的好处是它可以在JVM上运行,因此您可以重用大多数Java库和其他代码。

答案 2 :(得分:0)

我相信JXT的目标包括XSS安全性和类型模型安全性,并且它的设计很容易从JSP过渡。

他们的pipeline描述解释了他们的表达式更接近于Java表达式,因此如果表达式的类型不匹配,您将获得Java-esque类型错误。

答案 3 :(得分:0)

实际上没有使用过它,但Twirl(https://www.playframework.com/documentation/2.5.x/JavaTemplates) 称自己为“基于Scala的类型安全模板引擎”(显然可以在Play for Java中使用)。

引用:

基于Scala的类型安全模板引擎 Play附带了一个强大的基于Scala的模板引擎Twirl,其设计灵感来自ASP.NET Razor。具体来说是:

紧凑,富有表现力和流畅性:它最大限度地减少了文件中所需的字符数和击键次数,并实现了快速,流畅的编码工作流程。与大多数模板语法不同,您无需中断编码即可明确表示HTML中的服务器块。解析器非常智能,可以从代码中推断出这一点。这使得一种非常紧凑和富有表现力的语法变得干净,快速且有趣。

易于学习:它可以让您以最少的概念快速提高工作效率。您可以使用简单的Scala结构和所有现有的HTML技能。

不是一种新语言:我们有意识地选择不创建新语言。相反,我们希望让Scala开发人员能够使用他们现有的Scala语言技能,并提供模板标记语法,从而实现令人敬畏的HTML构建工作流程。

可在任何文本编辑器中编辑:它不需要特定的工具,使您可以在任何普通的旧文本编辑器中高效工作。

答案 4 :(得分:0)

免责声明:我是Hepek的作者。当前,它仅支持Play框架。

Scalatags通过构造为您提供安全的HTML。最重要的是,Hepek具有非常好的API,可用于构建表单,网格,突出显示代码等。基本上,它只是Scala,没有模板解析,也没有担心变量存在..:)

答案 5 :(得分:0)

我认为Rocker正是您所需要的。它经过编译,类型安全且快速。