pure HTML 无法访问服务器数据; JSP 内的TagLibraries 的替代品不是 HTML,而是旧的(和坏的)Scriptlets。
最后的所有内容都将转换为HTML,但您需要一个中间层来允许您处理业务数据。
如何使用HTML 读取服务器端值?
长话短说:
曾经是Servlet,其PrintWriters 输出HTML:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
String myServerSideValue = "StackOverflow";
response.setContentType("text/html");
PrintWriter writer = response.getWriter();
writer.println("<html>");
writer.println("<head>");
writer.println("<title>Wait, what... a Servlet in 2013?!</title>");
writer.println("</head>");
writer.println("<body>");
writer.println("<span>Hello " + myServerSideValue + "</span>");
writer.println("</body>");
writer.println("</html>");
}
显然是一场噩梦,导致一些聪明人发明了JSPs 和Scriptlets:
<html>
<head>
<title>Wait, what... Scriptlets in 2013?!</title>
</head>
<body>
<span>Hello <%= myServerSideValue %> </span>
</body>
</html>
然后TagLibs像JSTL就出来了:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>you <i>may</i> still needs JSTL with, for example, Spring MVC</title>
</head>
<body>
<span>Hello <c:out value="myServerSideValue" /> </span>
</body>
</html>
最后WebWork / Struts 将OGNL 带给我们
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>you still needs JSTL with, for example, Spring MVC</title>
</head>
<body>
<span>Hello <s:property value="myServerSideValue" /> </span>
</body>
</html>
在Struts2 标签中使用OGNL 与JSTL 类似,但在Struts2 中更强大 和完全集成 在几个方面(Validation 、Theming 等)。
也许这个例子太天真了,无法理解为什么应该使用 Struts2 Tags 而不是 Scriptlets 或其他 TagLibs,但是当遇到更复杂的真实场景时,您将开始欣赏并最大限度地使用这个很棒的工具。