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其乐无穷~~
作者:beijiguangyong 发表于2012-2-29 23:34:58
原文链接