2011-12-03 65 views
0

一个在我的实践考试的问题是:写作清洁JSP代码

编写清晰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

占'天气(“拉霍亚”)'。 – Blender

+0

你是什么意思? – pew007

回答

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应该更干净,现在,因为它不再包含任何小脚本(Java代码)和所有的动态内容由服务器端的功能封装。


参考

+0

谢谢你的帮助! – pew007