编写Clean JSP代码

时间:2011-12-03 06:44:49

标签: jsp format

我的练习考试的一个问题是:

编写干净的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>

1 个答案:

答案 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代码),并且所有动态内容都由服务器端的函数封装。


参考