我知道类似以下三行
<%= 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.自定义标签
表达式语言
其他回答
如果您只是想避免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>
这里的很多答案都是“使用框架”。这没有错。然而,我认为这并不能真正回答您的问题,因为框架可能使用JSP,也可能不使用JSP,它们的设计也不是以消除JSP中的java使用为主要目标。对于您的问题“我如何避免在JSP中使用Java”,唯一好的答案是:您不能。这就是JSP的用途——使用Java来呈现带有动态数据/逻辑的HTML。接下来的问题可能是,我应该在JSP中使用多少java。在我们回答这个问题之前,您还应该思考,“我需要使用JSP来使用Java构建web内容吗?”最后一个问题的答案是,不需要。使用Java开发面向web的应用程序时,有许多替代JSP的方法。举个例子,Struts并不强迫你使用JSP——别误会,你可以使用它们,很多实现也可以,但你并不一定要这样做。Struts甚至不强迫你使用任何HTML。JSP也不会,但老实说,不生成HTML的JSP有点奇怪。众所周知,Servlet允许您通过HTTP动态地提供任何类型的内容。它们是几乎所有javaweb-JSP背后的主要技术——实际上,JSP只是servlet的HTML模板。因此,您应该在JSP中放入多少java的答案是“尽可能少”。我的JSP中当然有java,但它只包含标记库定义、会话和客户端变量以及封装服务器端对象的bean。HTML中的<%%>标记几乎完全是属性调用或变量表达式。罕见的例外情况包括与单个页面相关的超特定计算,且不太可能重复使用;仅适用于一个页面的页面特定问题导致的错误修复;最后一分钟的连接和运算源于不寻常的要求,其范围仅限于单个页面;以及其他类似情况。在一个150万行、3000个JSP和5000个类的代码集中,可能有100个这样的独特片段的实例。在类或标记库定义中进行这些更改是完全可能的,但由于每种情况的特殊性,它会变得异常复杂,编写和调试需要更长的时间,因此需要更多的时间才能与我的用户联系。这是一个判断。但是不要搞错,你不能用“no java”来编写任何意义的JSP,你也不想这样做。
当然,替换<%!计数器++;%>通过事件生产者-消费者体系结构,业务层被通知需要增加计数器,它会做出相应的反应,并通知演示者,以便他们更新视图。涉及到许多数据库事务,因为将来我们需要知道计数器的新值和旧值,是谁增加了它,以及考虑到了什么目的。显然,由于层是完全解耦的,因此需要进行序列化。您将能够在RMI、IIOP和SOAP上增加计数器。但只需要HTML,因为这是一个很平常的情况,所以不需要实现。您的新目标是在新的闪亮E7 64GB RAM服务器上达到每秒250次增量。
我有20多年的编程经验,大多数项目在第六节之前都失败了:可重用性可替换性OO能力可调试性可测试性可维护性甚至是必需的。其他由只关心功能的人运营的项目非常成功。此外,在项目中过早实现的僵硬的对象结构使代码无法适应规范的剧烈变化(也称为敏捷)。
因此,我认为在项目早期或不特别需要时定义“层”或冗余数据结构的活动是拖延。
Wicket也是一种将Java与HTML完全分离的替代方案,因此设计师和程序员可以在彼此不了解的情况下一起工作并处理不同的代码集。
看看Wicket。
使用Backbone.js或类似AngularJS的JavaScript框架进行UI设计并使用REST API获取数据。这将从UI中完全删除Java依赖项。