我知道类似以下三行

<%= x+1 %>
<%= request.getParameter("name") %>
<%! counter++; %>

是一种老式的编码方式,在JSP版本2中存在一种避免JSP文件中出现Java代码的方法。什么是可选的JSP2行,这种技术叫什么?


当前回答

使用Backbone.js或类似AngularJS的JavaScript框架进行UI设计并使用REST API获取数据。这将从UI中完全删除Java依赖项。

其他回答

在MVC架构模式中,JSP表示视图层。在JSP中嵌入Java代码被认为是一种糟糕的做法。

您可以将JSTL、freeMarker和velocity与JSP一起用作“模板引擎”。

这些标记的数据提供者取决于您正在处理的框架。Struts 2和WebWork作为MVC模式的实现,使用OGNL“非常有趣的技术将Beans财产公开给JSP”。

使用Scriptlets是一种非常古老的方法,不建议使用。如果您想在JSP页面中直接输出一些内容,只需将表达式语言(EL)与JSTL一起使用即可。

还有其他选项,例如使用Velocity、Freemark、Thymelaf等模板引擎。但在大多数情况下,将普通JSP与EL和JSTL一起使用符合我的目的,对于初学者来说,这似乎也是最简单的。

此外,请注意,在视图层中执行业务逻辑不是最佳实践。您应该在服务层中执行业务逻辑,并通过控制器将输出结果传递给视图。

我的朋友,这些都不再使用了。我的建议是将视图(CSS、HTML、JavaScript等)与服务器分离。

在我的例子中,我使用Angular处理视图,并且使用REST服务从服务器获取所需的任何数据。

相信我,这将改变你的设计方式。

您提出了一个很好的问题,虽然得到了很好的答案,但我建议您取消JSP。过时的技术终将消亡。使用现代方法,如模板引擎。您将有非常清晰的业务层和演示层的分离,并且模板中肯定没有Java代码,因此您可以直接从web演示编辑软件生成模板,在大多数情况下利用WYSIWYG。

当然,不要使用过滤器和前后处理,否则您可能会遇到支持/调试困难,因为您始终不知道变量从何处获得值。

如果有人真的反对用多种语言编程,我建议使用GWT。理论上,您可以避免所有JavaScript和HTML元素,因为GoogleToolkit将所有客户端和共享代码转换为JavaScript。你不会有问题,所以你有一个没有任何其他语言编码的网络服务。您甚至可以使用扩展(smartGWT或Vaadin)提供的某些默认CSS。你不需要学习很多注释。

当然,如果你愿意的话,你可以深入代码的深处,注入JavaScript,丰富HTML页面,但如果你愿意,你真的可以避免它,结果会和其他框架一样好。我认为值得一试,而且基本的GWT有很好的文档记录。

当然,许多程序员同事在此描述或推荐了其他几种解决方案。GWT适用于那些真正不想处理web部件或将其最小化的人。