我知道类似以下三行
<%= x+1 %>
<%= request.getParameter("name") %>
<%! counter++; %>
是一种老式的编码方式,在JSP版本2中存在一种避免JSP文件中出现Java代码的方法。什么是可选的JSP2行,这种技术叫什么?
我知道类似以下三行
<%= x+1 %>
<%= request.getParameter("name") %>
<%! counter++; %>
是一种老式的编码方式,在JSP版本2中存在一种避免JSP文件中出现Java代码的方法。什么是可选的JSP2行,这种技术叫什么?
当前回答
如果您只是想避免JSP中Java编码的缺点,那么即使使用scriples也可以这样做。只需遵循一些规则,在JSP中使用最少的Java,而在JSP页面中几乎没有计算和逻辑。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<% // Instantiate a JSP controller
MyController clr = new MyController(request, response);
// Process action, if any
clr.process(request);
// Process page forwarding, if necessary
// Do all variable assignment here
String showMe = clr.getShowMe();%>
<html>
<head>
</head>
<body>
<form name="frm1">
<p><%= showMe %>
<p><% for(String str : clr.listOfStrings()) { %>
<p><%= str %><% } %>
// And so on
</form>
</body>
</html>
其他回答
JSTL为条件、循环、集合、get等提供标记。例如:
<c:if test="${someAttribute == 'something'}">
...
</c:if>
JSTL与请求属性一起工作——它们通常由Servlet在请求中设置,Servlet转发到JSP。
经验表明,JSP有一些缺点,其中之一是很难避免将标记与实际代码混合。
如果可以,那么可以考虑使用专门的技术来完成您需要做的事情。在JavaEE6中有JSF2.0,它提供了许多不错的功能,包括通过#{bean.method(argument)}方法将Javabean与JSF页面粘合在一起。
您提出了一个很好的问题,虽然得到了很好的答案,但我建议您取消JSP。过时的技术终将消亡。使用现代方法,如模板引擎。您将有非常清晰的业务层和演示层的分离,并且模板中肯定没有Java代码,因此您可以直接从web演示编辑软件生成模板,在大多数情况下利用WYSIWYG。
当然,不要使用过滤器和前后处理,否则您可能会遇到支持/调试困难,因为您始终不知道变量从何处获得值。
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实现不太了解。
Java本身是一种非常好的语言,但在企业环境中大量使用使得它的标准解决方案非常困难(可笑)。示例:JSTL、JSF、Wicket等。
以下是一种在Java中创建后端的超轻量级方法:
完全不要使用JSP(或任何其他模板引擎);使用纯HTML模板;使用JSOUP将HTML模板解析为Document对象;使用其非常直观的类似jQuery的方法修改Document对象;return Document.toString()作为对请求的响应。
我将其用于我的一个辅助项目(托管Digitalocean$5微滴、Nginx、Tomcat),而且速度非常快:根据Googlebot的数据,平均响应时间约为160毫秒。
J组