来源:网络 | 2007-3-8 | (有2317人读过)
JSP是服务器脚本语言,利用它可以方便地控制页面的展现,同时也能进行逻辑处理,而Servlet是传统Java语言,可以使用Java所有的功能。
的确,从实现逻辑上来讲,基本上Servlet能够实现的逻辑,JSP也能够实现,而且JSP还不用编译,修改起来十分方便。虽然JSP不能定义方法,但我们也可以写一个普通Java类来实现相关的工具方法,让JSP调用。过去有人说Servlet可以动态生成图像,而事实上JSP同样能够做到。看起来Servlet似乎没有任何用处了。
但是,我理解的JSP相比Servlet最大的不足在于,JSP无法实现继承,它不是一种面向对象的语言,使用JSP,又回到了面向过程的老路上。当上层逻辑发生改变时,我们无法通过修改基类来实现整体的转变,而当需求发生扩展时,我们只能修改JSP代码,用一连串的IF...ELSE,而不能通过继承(extends,也许翻译成扩展更为合适)来实现,它不符合“对修改关闭,对扩展开放”的面向对象设计思想。
因此,用JSP来控制展现层是十分方便和快捷的,但是如果要实现复杂和多变的逻辑,用Servlet更为合适。事实上,这也是Java所倡导的,请求首先由Servlet来处理,而处理结果forward到JSP上来展现。Struts、Spring这些框架也正是采用了这种方式。
|