我知道类似以下三行

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

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


当前回答

只需使用JSTL标记和EL表达式。

其他回答

您可以将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>

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

相反,您可以使用:

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

请参考:

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

作为保障:永远禁用Scriptlets

正如另一个问题所讨论的,您可以并且应该始终禁用web.xml web应用程序描述符中的scriptlets。

我会一直这样做,以防止任何开发人员添加脚本,特别是在大公司中,您迟早会失去概述。web.xml设置如下所示:

<jsp-config>
  <jsp-property-group>
    <url-pattern>*.jsp</url-pattern>
     <scripting-invalid>true</scripting-invalid>
  </jsp-property-group>
</jsp-config>

Java本身是一种非常好的语言,但在企业环境中大量使用使得它的标准解决方案非常困难(可笑)。示例:JSTL、JSF、Wicket等。

以下是一种在Java中创建后端的超轻量级方法:

完全不要使用JSP(或任何其他模板引擎);使用纯HTML模板;使用JSOUP将HTML模板解析为Document对象;使用其非常直观的类似jQuery的方法修改Document对象;return Document.toString()作为对请求的响应。

我将其用于我的一个辅助项目(托管Digitalocean$5微滴、Nginx、Tomcat),而且速度非常快:根据Googlebot的数据,平均响应时间约为160毫秒。

J组

使用Backbone.js或类似AngularJS的JavaScript框架进行UI设计并使用REST API获取数据。这将从UI中完全删除Java依赖项。