Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSP模板的任何类型安全的替代方案_Java_Jsp - Fatal编程技术网

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

Java JSP模板的任何类型安全的替代方案,java,jsp,Java,Jsp,有比JSP更安全的东西吗?我还没有通过谷歌找到任何有意义的答案。我们目前使用SpringMVC框架和JSP来呈现HTML。我开始讨厌JSP呈现的动态特性,因为您引用了一个类似于${model.someAttribute}的模型,但无法判断该属性在给定模块中是否可用,也无法指定模板期望的模型类型。重构模型的getter变得非常困难,因为Eclipse不知道哪些模板使用该模型,也无法将getter与模板中的属性访问器相关联 有没有一种模板技术,它既没有通过命令式代码吐出HTML代码那么难看,也比JS

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

有没有一种模板技术,它既没有通过命令式代码吐出HTML代码那么难看,也比JSP更安全

(基于)提供了一个非常好的模型,将HTML布局与实际应用程序代码(称为代码片段)很好地分离。虽然一开始进入壁垒可能看起来很高,但从长远来看,收益确实很大。一大好处是它在JVM上运行,因此您可以重用大部分Java库和其他代码。

我相信它的目标包括XSS安全和类型模型安全,并且它的设计目的是易于从JSP转换


它们的描述解释了它们的表达式更接近Java表达式,因此,如果表达式的类型不匹配,则会出现Java风格的类型错误。

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


我最近刚刚在的上下文中写到了这一点。

实际上没有使用它,而是Twirl() 称自己为“基于Scala的类型安全模板引擎”(显然可以在Java中使用)

引述:

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

紧凑、富有表现力且流畅:它最大限度地减少了文件中所需的字符数和击键数,并支持快速、流畅的编码工作流。与大多数模板语法不同,您不需要中断编码来显式表示HTML中的服务器块。解析器足够聪明,可以从代码中推断出这一点。这使一个真正紧凑和表达语法是干净的,快速和有趣的类型

易于学习:它允许您以最少的概念快速变得高效。您使用简单的Scala构造和所有现有的HTML技能

不是一种新的语言:我们有意识地选择不创造一种新的语言。相反,我们希望Scala开发人员能够使用他们现有的Scala语言技能,并提供一种模板标记语法,以支持出色的HTML构建工作流


可在任何文本编辑器中编辑:它不需要特定的工具,使您能够在任何纯文本编辑器中高效工作。

免责声明:我是。目前,它只支持Play框架


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

我想这正是你一直在寻找的。它是编译的,类型安全且快速。

OP的问题是工具对静态分析、重构、代码完成等的支持。@unreputable,我将“我只是想知道是否有比JSP更安全的东西…”和“应该有某种更静态的模板技术…”解释为要求替代JSP。如果你认为我错了,请海报澄清一下。这似乎也不是编译安全的,或者有没有确保你不会访问未定义属性的工具,以及重构属性名称时有帮助的工具?@d56事实上,是的。在HTML中,您只需标记应用程序应使用特殊CSS类或ID动态填充的元素。填充它们的代码是常规的Scala代码,编译器和IDE会对其进行全面验证,包括类型安全性。@unreputable,它是否以某种方式支持bean属性名称的重构,并负责模板?