2011-12-03 90 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