我知道类似以下三行
<%= x+1 %>
<%= request.getParameter("name") %>
<%! counter++; %>
是一种老式的编码方式,在JSP版本2中存在一种避免JSP文件中出现Java代码的方法。什么是可选的JSP2行,这种技术叫什么?
我知道类似以下三行
<%= x+1 %>
<%= request.getParameter("name") %>
<%! counter++; %>
是一种老式的编码方式,在JSP版本2中存在一种避免JSP文件中出现Java代码的方法。什么是可选的JSP2行,这种技术叫什么?
当前回答
您可以将JSTL标记与EL表达式一起使用,以避免混合Java和HTML代码:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<html>
<head>
</head>
<body>
<c:out value="${x + 1}" />
<c:out value="${param.name}" />
// and so on
</body>
</html>
其他回答
当然,替换<%!计数器++;%>通过事件生产者-消费者体系结构,业务层被通知需要增加计数器,它会做出相应的反应,并通知演示者,以便他们更新视图。涉及到许多数据库事务,因为将来我们需要知道计数器的新值和旧值,是谁增加了它,以及考虑到了什么目的。显然,由于层是完全解耦的,因此需要进行序列化。您将能够在RMI、IIOP和SOAP上增加计数器。但只需要HTML,因为这是一个很平常的情况,所以不需要实现。您的新目标是在新的闪亮E7 64GB RAM服务器上达到每秒250次增量。
我有20多年的编程经验,大多数项目在第六节之前都失败了:可重用性可替换性OO能力可调试性可测试性可维护性甚至是必需的。其他由只关心功能的人运营的项目非常成功。此外,在项目中过早实现的僵硬的对象结构使代码无法适应规范的剧烈变化(也称为敏捷)。
因此,我认为在项目早期或不特别需要时定义“层”或冗余数据结构的活动是拖延。
Python世界的一个好主意是模板属性语言;TAL是由Zope(因此又称为“Zope页面模板”,ZPT)引入的,是一种标准,也有PHP、XSLT和Java的实现(我使用过Python/Zope和PHP的化身)。在这类模板语言中,上面的一个示例可能如下所示:
<table>
<tr tal:repeat="product products">
<td tal:content="product/name">Example product</td>
<td tal:content="product/description">A nice description</td>
<td tal:content="product/price">1.23</td>
</tr>
</table>
代码看起来像普通的HTML(或XHTML)加上XML命名空间中的一些特殊属性;它可以用浏览器查看,也可以由设计师安全地调整。
支持宏以及国际化和本地化:
<h1 i18n:translate="">Our special offers</h1>
<table>
<tr tal:repeat="product products">
<td tal:content="product/name"
i18n:translate="">Example product</td>
<td tal:content="product/description"
i18n:translate="">A nice description</td>
<td tal:content="product/price">1.23</td>
</tr>
</table>
如果内容的翻译可用,则使用它们。
不过,我对Java实现不太了解。
在JSP中使用JSTL标记库。这将非常有效。
我的朋友,这些都不再使用了。我的建议是将视图(CSS、HTML、JavaScript等)与服务器分离。
在我的例子中,我使用Angular处理视图,并且使用REST服务从服务器获取所需的任何数据。
相信我,这将改变你的设计方式。
Wicket也是一种将Java与HTML完全分离的替代方案,因此设计师和程序员可以在彼此不了解的情况下一起工作并处理不同的代码集。
看看Wicket。