提問:JSP中使用哪種輸出方式更好。 已經學習過使用 out.println() 和 <%=%>輸出的形式,那麼在開發中使用哪種輸出方式更好呢。
回答:
在JSP的開發中,實際上就是在HTML中加入了一些控制及輸出的語句,所以在輸出時為了使HTML代碼和Java代碼相分離,最好的做法就是只輸出右JSP產生的變數,那麼這時使用運算式輸出就比使用 out.println()更加方便。
在說明兩者的優點之前,先來看一下一個題目:“輸出10以內的乘法口訣”,下面是用out.println()和運算式完成這樣的輸出。 使用out.println()輸出:
<%@ page contentType="text/html;charset=UTF-8"%><html><head><title>乘法口訣</title></head><body>使用out.println()列印乘法口訣:<br/><%int cols,rows;//列、行out.println("<table border='1'>");for(cols=1;cols<10;cols++){out.println("<tr>");for(rows=1;rows<=cols;rows++){out.println("<td>"+cols+"*"+rows+"="+cols*rows+"</td>");}out.println("</tr>");}out.println("</table>");%></body></html>
分析:這樣的輸出會使程式碼混亂,因為是將HTML和JAVA代碼緊密耦合在一起,以後的調試會很麻煩,所以最好的做法是將HTML代碼和JAVA代碼進行分離。 使用<%= %>運算式輸出:
<%@ page contentType="text/html;charset=UTF-8"%><html><head><title>乘法口訣</title></head><body>使用<%=%>運算式列印乘法口訣:<br/><table border='1'><%int cols,rows;//列、行for(cols=1;cols<10;cols++){%><tr><%for(rows=1;rows<=cols;rows++){%><td><%=cols%>*<%=rows%>=<%=cols*rows%></td><%}%></tr><%}%></table></body></html>
分析:這樣的程式碼很好的達到了HTML代碼和JAVA代碼分離的作用,這樣的代碼以後再使用類似於Dreamweaver這樣的網頁設計工具調整時也非常方便。
但是,有些讀者可能會認為以上的代碼太複雜了,要寫很多Scriptlet代碼,看起來會有些亂,在這裡筆者給讀者這樣的一個建議:“一定要收悉以上的代碼編寫,在以後的學習中將會對這種代碼進行不斷的最佳化,使之更容易讀懂,一定記住,絕對不能使用out.println()進行輸出。”
而且在以上代碼編寫中,如果一個for語句寫在了多個Scriptlet中,一定要寫上“{}”,否則程式將出現錯誤。