我知道类似以下三行
<%= x+1 %>
<%= request.getParameter("name") %>
<%! counter++; %>
是一种老式的编码方式,在JSP版本2中存在一种避免JSP文件中出现Java代码的方法。什么是可选的JSP2行,这种技术叫什么?
我知道类似以下三行
<%= x+1 %>
<%= request.getParameter("name") %>
<%! counter++; %>
是一种老式的编码方式,在JSP版本2中存在一种避免JSP文件中出现Java代码的方法。什么是可选的JSP2行,这种技术叫什么?
当前回答
如果我们在JavaWeb应用程序中使用以下内容,Java代码可以从JSP文件的前台删除。
为web应用程序使用MVC架构使用JSP标记
a.标准标签
b.自定义标签
表达式语言
其他回答
使用Scriptlets是一种非常古老的方法,不建议使用。如果您想在JSP页面中直接输出一些内容,只需将表达式语言(EL)与JSTL一起使用即可。
还有其他选项,例如使用Velocity、Freemark、Thymelaf等模板引擎。但在大多数情况下,将普通JSP与EL和JSTL一起使用符合我的目的,对于初学者来说,这似乎也是最简单的。
此外,请注意,在视图层中执行业务逻辑不是最佳实践。您应该在服务层中执行业务逻辑,并通过控制器将输出结果传递给视图。
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组
如果您只是想避免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>
如果有人真的反对用多种语言编程,我建议使用GWT。理论上,您可以避免所有JavaScript和HTML元素,因为GoogleToolkit将所有客户端和共享代码转换为JavaScript。你不会有问题,所以你有一个没有任何其他语言编码的网络服务。您甚至可以使用扩展(smartGWT或Vaadin)提供的某些默认CSS。你不需要学习很多注释。
当然,如果你愿意的话,你可以深入代码的深处,注入JavaScript,丰富HTML页面,但如果你愿意,你真的可以避免它,结果会和其他框架一样好。我认为值得一试,而且基本的GWT有很好的文档记录。
当然,许多程序员同事在此描述或推荐了其他几种解决方案。GWT适用于那些真正不想处理web部件或将其最小化的人。