可移植性和语言锁定
JSP 技术将您锁定到某种特定的语言这一点不应该给予太多的关注至少在我看来Java 技术是企业应用程序的惟一 选择在这个领域根本不存在可以独立于语言的解决方案当然在这个时候我没有把 Microsoft NET 平台牵涉进来只有时间可以告诉我们这个平台是否可以真正独立于语言(我很怀疑这一点)
然而选择 JSP 技术将强制您使用 Java 语言至少对于内容和表示是这样的尽管 CORBA 可以用于业务逻辑JSP 编码要求必须熟悉 servlet 和核心 Java 语言因为很多开发人员通过 JEE 平台接触 JSP 编码因此这通常算不成问题
混合和独立
在本篇文章中我始终围绕分离内容和表示这一概念您可能对此已经感到不耐烦那么现在让我们看看 JSP 究竟能不能实现这个目标正如我们之前讨论的一样JSP 宣称 一直致力于实现内容和表示分离那么我们可以因此认为它实现了目标是吗?未必如此
内容和表示之间的界限变得模糊
JSP 允许将 Java 代码插入到标记语言页面中这个非常危险的特性允许将内容混合到表示中更糟糕的是业务逻辑通常会进入到 JSP 页面中如清单 所示
﹤%@ page import=
com
ibm
display
PageUtils
%﹥
﹤%@ page import=comibmdisplayPageInfo %﹥
﹤%@ page import=comibmlogicAdminUtils %﹥
﹤%@ page import=comibmpeopleActor %﹥
﹤%@ page import=javautilIterator %﹥
﹤%@ page import=javautilVector %﹥
﹤%
PageInfo pageInfo = (PageInfo)sessiongetAttribute(PAGE_DATA)
%﹥
﹤HTML﹥
﹤HEAD﹥
﹤TITLE﹥
﹤%=pageInfogetTitle()%﹥
﹤/TITLE﹥
﹤/HEAD﹥
﹤BODY﹥
﹤H ALIGN=center﹥Search Results: Actors﹤/H﹥
﹤CENTER﹥
﹤HR width=%﹥
﹤TABLE width=% CELLPADDING= CELLSPACING= border=
BGCOLOR=#FFFFCC﹥
﹤%
// Based on users permissions perform search differently (business logic!)
Vector actors = pageInfogetActors()
if (pageInfogetUserInfo()hasPermission(ADMINISTRATOR)) {
actors = AdminUtilsgetActors(pageInfogetSearchCriteria());
} else {
actors = pageInfogetActors();
}
for (Iterator i = actorsiterator(); ihasNext()) {
Actor actor = (Actor)inext();
%﹥
﹤TR BGCOLOR=#FFCCCC﹥
﹤TH width=% ALIGN=center﹥
﹤%=actorgetLastName()%﹥
﹤/TH﹥
﹤TH width=% ALIGN=center﹥
﹤%=actorgetFirstName()%﹥
﹤/TH﹥
﹤/TR﹥
﹤%
}
%﹥
﹤/TABLE﹥
﹤/CENTER﹥
﹤/BODY﹥
﹤/HTML﹥
[] [] [] [] [] []