我知道类似以下三行

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

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


当前回答

我的朋友,这些都不再使用了。我的建议是将视图(CSS、HTML、JavaScript等)与服务器分离。

在我的例子中,我使用Angular处理视图,并且使用REST服务从服务器获取所需的任何数据。

相信我,这将改变你的设计方式。

其他回答

在JSP中使用scriptlets不是一种好的做法。

相反,您可以使用:

JSTL标签EL表达式自定义标记-您可以定义自己要使用的标记。

请参考:

http://docs.oracle.com/javaee/1.4/tutorial/doc/JSTL3.html电子邮箱

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

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

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

这里的很多答案都是“使用框架”。这没有错。然而,我认为这并不能真正回答您的问题,因为框架可能使用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,你也不想这样做。

通过将JSTL标记与EL表达式一起使用,可以避免这种情况。在JSP页面中放置以下内容:

<%@ 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" %>

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

看看Wicket。