我知道类似以下三行

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

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


当前回答

Wicket也是一种将Java与HTML完全分离的替代方案,因此设计师和程序员可以在彼此不了解的情况下一起工作并处理不同的代码集。

看看Wicket。

其他回答

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

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

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

作为保障:永远禁用Scriptlets

正如另一个问题所讨论的,您可以并且应该始终禁用web.xml web应用程序描述符中的scriptlets。

我会一直这样做,以防止任何开发人员添加脚本,特别是在大公司中,您迟早会失去概述。web.xml设置如下所示:

<jsp-config>
  <jsp-property-group>
    <url-pattern>*.jsp</url-pattern>
     <scripting-invalid>true</scripting-invalid>
  </jsp-property-group>
</jsp-config>

当然,替换<%!计数器++;%>通过事件生产者-消费者体系结构,业务层被通知需要增加计数器,它会做出相应的反应,并通知演示者,以便他们更新视图。涉及到许多数据库事务,因为将来我们需要知道计数器的新值和旧值,是谁增加了它,以及考虑到了什么目的。显然,由于层是完全解耦的,因此需要进行序列化。您将能够在RMI、IIOP和SOAP上增加计数器。但只需要HTML,因为这是一个很平常的情况,所以不需要实现。您的新目标是在新的闪亮E7 64GB RAM服务器上达到每秒250次增量。

我有20多年的编程经验,大多数项目在第六节之前都失败了:可重用性可替换性OO能力可调试性可测试性可维护性甚至是必需的。其他由只关心功能的人运营的项目非常成功。此外,在项目中过早实现的僵硬的对象结构使代码无法适应规范的剧烈变化(也称为敏捷)。

因此,我认为在项目早期或不特别需要时定义“层”或冗余数据结构的活动是拖延。 

为了避免JSP文件中的Java代码,Java现在提供了标记库,如JSTL。

此外,Java还推出了JSF,您可以将所有编程结构以标记的形式写入其中。

在servlet类中设置值和参数使用JSTL/Taglib在JSP中获取这些值和参数

这种方法的好处是代码也类似HTML密码