Jsp+JavaBean的組合已經成為開發小型B/S應用的最佳選擇,使用JavaBean可以把業務處理功能從jsp頁面分離,從而減少jsp頁面中間的java代碼量,使jsp頁面更專注處理數據的顯示,從而使頁面的邏輯變得十分清晰。套用一句廣告語:“自從采用jsp+JavaBean的組合,編寫jsp的程序不頭疼啦,維護jsp也變的簡單可行了。”
為什么要在jsp中使用JavaBean?
Jsp本質就是把java代碼嵌套在靜態的HTML頁面中,從而使靜態的HTML頁面有了動態的功能,從原理說,僅僅用jsp就可以實現所有動態功能,既然這樣采用JavaBean的原因何在?
先看代碼
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>JSP示例程序</title> </head> <body> <% Date firstDate=new Date(); Date secondDate=new Date(107,6,23); %> <font size="1"><strong>本頁面戰士的功能式比較兩個日時間的前后:</strong><br> 第一個時間為:<%out.print(firstDate); %><br> 第二個時間為:<%out.print(secondDate); %><br> <% if(firstDate.before(secondDate)) out.println("第一個時間早于第二個時間"); else if(firstDate.after(secondDate)) out.println("第二個時間早于第一個時間"); else out.println("兩個時間相等"); %> </font> </body> </html>
上面的這個程序的功能非常簡單,這只是為了說明問題舉得一個簡單例子,實際開發中的邏輯和數據顯示要比這個例子復雜的多。然而盡管這么簡單的一個程序,但是還存在一些問題。還是上面文章提到的
可定制性差:如果需要比較的時間變化就不得不再次編寫頁面代碼。
可維護性差:如果頁面美工人員不懂Java代碼那么頁面的維護將變得異常困難。
復用性差:如果其他頁面也需要用到比較時間的功能就不得不從頭再次寫一遍及其相似的代碼。
對于上面的這個程序來說,上述的幾個問題都是無法解決的,這正是jsp開發在初期的致命傷,把所有的業務邏輯都放在jsp頁面處理從而導致頁面邏輯混亂不堪,不僅代碼不可重用,美工而已無法對頁面進行視覺方面的美化,就連開發人員自己都有可能看不懂自己寫的代碼,這樣的無難題導致初期的jsp開發成為一件勞神費力地苦差事。
然而JavaBean的出現解決掉了這樣的令人頭疼的問題,利用JavaBean可以把頁面上復雜的業務邏輯處理抽象成一個JavaBean利用JavaBean封裝負責的業務邏輯,在jsp頁面上只需要簡單調用這個實現業務邏輯這個實現業務的JavaBean即可,這樣就實現了業務處理和數據暫時的分離,而且封裝起來的JavaBean也成了可以重復利用的組件,不僅在其他別的頁面可以重復利用,而且其他的開發人員也可以不用考慮其具體的實現,像調用一般java類一樣調用別人已經寫好的JavaBean,與此同時,剝離了業務邏輯的jsp頁面邏輯更加清晰,即便是美工人員對java一竅不通也絲毫不影響對頁面的沒貨工作,而開發人員面對這樣清晰的頁面邏輯輕松的讀懂當然是不費吹灰之力了。
Jsp+JavaBean實現上面代碼的功能
頁面代碼部分:
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%> <%@ page import="java.util.Date" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>JSP示例程序</title> </head> <body> <jsp:useBean id="date" class="beans.Compare" scope="page"></jsp:useBean> <% date.setFirstDate(new Date()); date.setSecondDate(new Date(107, 6, 23)); %> <font size="1"><strong>本頁面展示的功能式比較兩個日時間的前后</strong><br> 第一個時間為:<jsp:getProperty property="firstDate" name="date" /><br> 第二個時間為:<jsp:getProperty property="secondDate" name="date" /><br> <% out.println(date.compare()); %> </font> </body> </html>
JavaBean代碼部分:
package beans; import java.util.Date; public class Compare { //設置兩個日期屬性 private Date firstDate; private Date secondDate; //判斷兩個時間的前后 public String compare(){ if(firstDate.before(secondDate)) return "第一個時間早于第二個時間"; else if(firstDate.after(secondDate)) return "第二個時間早于第一個時間"; else return "兩個時間相等"; } //取得第一個時間 public Date getFirstDate(){ return firstDate; } //設置第一個時間 public void setFirstDate(Date firstDate){ this.firstDate =firstDate; } //取得第二個時間 public Date getSecondDate(){ return secondDate; } //設置第二個時間 public void setSecondDate(Date secondDate){ this.secondDate =secondDate; } }
這個頁面的運行效果和上面的第一個代碼是一致的,但是很明顯這個JSP頁面上的Java代碼少了很多。雖然把邏輯代碼封裝成JavaBean增加了編碼的工作量,但是其帶來的便捷和高效式顯而易見的。
使用JavaBean其樂無窮~~