无法使用pure HTML
访问服务器数据;TagLibraries
inside aJSP
的替代品不是HTML
s ,而是旧的(和坏的)s Scriptlet
。
最后的所有内容都将转换为HTML
,但您需要一个中间层来允许您处理业务数据。
如何读取服务器端值HTML
?
长话短说:
曾经是Servlet
,其PrintWriter
s 输出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>");
}
显然是一场噩梦,导致一些聪明人发明了JSP
s 和Scriptlet
s:
<html>
<head>
<title>Wait, what... Scriptlets in 2013?!</title>
</head>
<body>
<span>Hello <%= myServerSideValue %> </span>
</body>
</html>
然后就出来了TagLib
: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>
使用OGNL
内部Struts2
标签类似于JSTL
,但功能更强大,并且以多种方式(、等)完全集成。Struts2
Validation
Theming
也许这个例子太天真了,无法理解为什么Struts2 Tags
应该使用Scriptlets
,TagLibs
但是当遇到更复杂的真实场景时,您将开始欣赏并最大限度地使用这个伟大的工具。