我的练习考试的一个问题是:
编写干净的JSP代码
弄清楚以下jsp片段正在做什么是非常麻烦的。它使用隐式变量out,在http响应的主体中显式写入返回给浏览器的HTML页面。 以一个理智的jsp程序员的方式重写它。
<%
out.write(“<HTML>”);
out.write(“<HEAD><TITLE>foo</TITLE></HEAD>”);
out.write(“<BODY> List of Temperatures:”);
out.write(“<UL><LI>La Jolla:” + weather(“La Jolla”) + “</LI>”);
out.write(“<LI>El Cajon:” + weather(“El Cajon”) + “</LI></UL>”);
out.write(“</BODY></HTML>”);
/%>
我有点困惑。答案应该如下吗?
<html>
<Head><Title>foo</Title></Head>
<Body>
....
</Body>
</html>
答案 0 :(得分:1)
JSP技术强调静态内容和动态内容的分离。
它就像一个模板引擎,允许您定义包含静态和动态内容的模板。您可以直接使用HTML代码标记静态内容并使用一些“占位符”(即标记库或EL表达式等)来定义要插入到静态内容中的动态内容。
在您的示例中,唯一的动态内容是函数weather(xxxxx)
返回的结果。我假设这个函数可以实现为静态函数,它只接受城市名称并返回一个描述这个城市天气的字符串。
EL expression allow you to define a custom function。将weather(xxxxx)
实现为自定义EL函数后,可以在JSP中调用它:
<html>
<Head><Title>foo</Title></Head>
<Body>
List of Temperatures:
<UL>
<LI>La Jolla: ${myLibrary:weather("La Jolla")} </LI>
<LI>El Cajon: ${myLibrary:weather("El Cajon")} </LI>
</UL>
</Body>
</html>
现在JSP应该更干净,因为它不再包含任何scriptlet(java代码),并且所有动态内容都由服务器端的函数封装。
参考