夜鹰教程网-程序员的加油站
 当前位置:文章中心 >> Android/移动互联网/物联网/
JSP 技术 —— 是敌是友?(1)
夜鹰教程网 来源:www.yyjcw.com 日期:2016-11-22 20:37:01
作为一名资深的 Java 技术专家和 Enhydra 支持者,本文作者强烈建议开发人员在选择 Web 应用程序编程语言时,使用其他可以替代 JavaServer Pages (JSP) servlets 的技术。JSP 技术是 Sun 的 J2EE 平台和编程模型的一部分,用于解决将单调的内容转换为外观优美的表示层时遇到的困难。事实上,并非所有的 Web 开发人员都对 JSP 技术很满意。
作为一名资深的 Java 技术专家和 Enhydra 支持者,本文作者强烈建议开发人员在选择 Web 应用程序编程语言时,使用其他可以替代 JavaServer Pages (JSP) servlets 的技术。JSP 技术是 Sun 的 J2EE 平台和编程模型的一部分,用于解决将单调的内容转换为外观优美的表示层时遇到的困难。事实上,并非所有的 Web 开发人员都对 JSP 技术很满意。由于 Sun 技术出现了很多不同的版本,您可以从众多表示技术中选择一种替代技术。本文将深入查看 JSP 代码并介绍一些有吸引力的替代选择。

表示技术专门用于将单调粗糙的 Web 内容转换成带有漂亮的表示层的内容。JavaServer Pages (JSP) 技术是 Sun 的表示模型,并且是 J2EE 平台的一部分,它获得了极大的关注。使用 JSP 技术有优点也有缺点。Web 开发人员应该了解这些优缺点,并且知道还有其他代替技术。实际上,现在有很多可供选择的表示技术。本文先介绍表示技术要解决哪些问题,然后考察 JSP 模型特有的优缺点。最后,将介绍一些其他表示技术,它们可以代替 Sun 表示技术。

在深入介绍表示技术之前,有必要了解一下该技术产生的时代背景。就在 10 年前,瘦客户机 还是个新鲜事物。我们仍然处于桌面应用程序的时代,使用功能有限的 286 微处理器和现在看来不屑一顾的 14 寸显示器。时代变了!现在我的台式机只需要运行一个 Web 浏览器,服务器由 Sun、IBM、HP、Compaq 提供,计算、业务逻辑和内容则又由其他公司提供。那么显示器呢?现在我们使用的是 21 寸到 25 寸不等、等离子宽屏显示器。这样我们就可以看到复杂的 HTML 表示,它们充当这些强大的应用程序的前端。以前的单调界面已经无法满足需要;我们现在需要使用华丽的图形、可以移动的图像、色彩协调的表示,并且要求它能够加快呈现速度。


如今,在羽毛渐丰的 Windows 应用程序经过十年的发展之后,我们还处在表示模式的巨大转型之中。Visual Basic 和 C 程序员发现他们仍然在使用后端系统或单调的 Windows 应用程序,或是在工具箱中加入了一种具有 Web 能力的语言,例如 Java 语言。如果一个应用程序无法支持至少 3 到 4 种 ML 式语言(例如 HTML、XML 和 WML),即使不是彻底失败,也会被认为是很糟糕的。当然,这就表示我们非常重视能轻松开发 Web 表示层的能力。

事实证明,使用新的 Internet 以及所有可用的语言(Java、C、Perl、Pascal 和 Ada 等)并不像我们希望的那样简单。在后端系统使用编程语言并利用它们生成适合客户机的标记语言时,出现了大量问题。随着浏览器端的选择越来越多(例如 DHTML 和 JavaScript 编码),Web 领域迫切需要图形设计知识,以及可以使用标准 HTML 创建复杂界面的工具。但开发应用程序前端的能力无法跟上这些需求的步伐。此时,表示技术 应运而生。

表示技术的专门任务是:将内容(即没有包含表示细节的数据)转换为表示,也就是您在手机、PalmPilot 或 Web 浏览器看到的各种用户界面。这些表示技术要解决哪些问题?让我们来了解一下。



表示技术的主要目的是允许分离内容和表示。换而言之,业务逻辑单元(假设 C 或 Java 等编程语言)不需要使用特定于表示的方式生成数据。数据或内容,按照原始格式返回,没有进行格式化。表示技术随后对内容应用格式化或进行表示。最终的结果是各种数据被图形、格式、色彩和徽标所包围。

查看清单 1 和清单 2 中的示例,了解一下原始内容和应用了表示技术的内容之间的差异。

清单 1 展示了原始的内容,全部都是数据,可以按照任何方式使用。

Russell Crowe
Tom Hanks
Meg Ryan
Mary Stuart Masterson
Alec Baldwin
Ashley Judd
Keanu Reeves

清单 2 要比清单 1 更加复杂,使用表示技术对相同的数据进行了装饰,并可以立即表示在支持 HTML 的浏览器中。

<HTML>
<HEAD>
 <TITLE>Search Results: Actors</TITLE>
</HEAD>
<BODY>
 <H2 ALIGN="center">Search Results: Actors</H2>
 <CENTER>
  <HR width="85%">   
  <TABLE width="50%" CELLPADDING="3" CELLSPACING="3" border="1"
         BGCOLOR="#FFFFCC">
    <TR BGCOLOR="#FFCCCC">
      <TH width="50%" ALIGN="center">Last Name</TH>
      <TH width="50%" ALIGN="center">First Name</TH>
    </TR>
    <TR>
      <TD width="50%">Baldwin</TD>
      <TD width="50%">Alec</TD>
    </TR>
    <TR>
      <TD width="50%">Crowe</TD>
      <TD width="50%">Russell</TD>
    </TR>
    <TR>
      <TD width="50%">Hanks</TD>
      <TD width="50%">Tom</TD>
    </TR>
    <TR>
      <TD width="50%">Judd</TD>
      <TD width="50%">Ashley</TD>
    </TR>
    <TR>
      <TD width="50%">Masterson</TD>
      <TD width="50%">Mary Stuart</TD>
    </TR>
    <TR>
      <TD width="50%">Reeves</TD>
      <TD width="50%">Keanu</TD>
    </TR>
    <TR>
      <TD width="50%">Ryan</TD>
      <TD width="50%">Meg</TD>
    </TR>
  </TABLE>
 </CENTER>
</BODY>
</HTML>

可以看到,清单 1 中的内容更清晰,非专业人员更加容易使用和理解,而清单 2 中的内容特定于浏览器表示。很难从中提取数据或将数据用作其他用途。

这个基本的区别,即分离表示和内容而不是集成它们(至少在用户需要使用信息时),是任何表示技术前提,包括 JSP 技术。此外,任何无法实现这个基本目标的表示技术都不能真正体现创建的初衷。


除了分离表示和内容外,另一个衡量表示技术的可用性的指标是:能够消除多少重复的工作。表示和内容的分离也促使内容开发人员之间的角色分离。程序员可以关注上例所示的原始内容,而图形设计师或网络管理员则关注表示。然而,在获得图形设计师设计的表示(或标记)并将它应用到程序员代码提供的内容中时,角色之间仍然有一定重复。

在最简单的情况下,设计师提供标记,而开发人员提供代码并把标记插入到表示技术中。应用程序被 “启动”,内容魔术般地变成了用户界面。当然,我们都知道,开发远远没有结束。接下来要重新修订版本、修改界面,还必须添加新的业务规则。这能真正考验表示技术的灵活性。虽然很容易更新插入到表示层的原始内容,但是图形设计师很少能够轻松地编辑他们的初始工作。经常要修改表示层(我们常常按照销售部门的 “指使” 进行修改)。因此,问题产生了:设计师要修改哪些内容来调整他们的工作?是他们提供给开发人员的原始标记语言页面吗?也许不是,因为这个页面很可能插入了自定义标记或代码(JSP 页面、模板引擎),被转换为一个 Java servlet,或修改为完全无法识别的内容。

设计师通常需要重新设计页面并重新将其提交给开发人员。然后再由开发人员将页面重新转换为特定的格式,以供表示技术使用。或者,设计师必须学习一种脚本编制语言,或至少知道开发人员提供的页面源代码中哪部分是违规的。当然,这种方法容易出错,并且使用起来不安全。当您了解到某种表示技术允许清晰地分离内容和表示后,您应该确保将修改表示层所需的重复工作减至最小。

复制链接 网友评论 收藏本文 关闭此页
上一条: JSP 技术 —— 是敌是友?(2)  下一条: Tomcat 暴露JSP文件内容
夜鹰教程网成立于2008年,目前已经运营了将近 13 年,发布了大量关于 html5/css3/C#/asp.net/java/python/nodejs/mongodb/sql server/android/javascript/mysql/mvc/easyui/vue/echarts原创教程。 我们一直都在坚持的是:认证负责、一丝不苟、以工匠的精神来打磨每一套教程,让读者感受到作者的用心。我们默默投入的时间,确保每一套教程都是一件作品,而不是呆板的文字和视频! 目前我们推出在线辅导班试运营,模式为一对一辅导,教学工具为QQ。我们的辅导学科包括 java 、android原生开发、webapp开发、商城开发、C#和asp.net开发,winform和物联网开发、web前端开发,但不仅限于此。 普通班针对的是国内学员,例如想打好基础的大学生、想转行的有志青年、想深入学习的程序员、想开发软件的初学者或者业余爱好者等。 就业办针对即将毕业上岗的大四学生,或者打算转行的初级开发工程师。 留学生班针对的是在欧美、加拿大、澳洲、日本、韩国、新加坡等地留学的中国学子,目的是让大家熟练地掌握编程技能,按时完成老师布置的作业,并能顺利地通过考试。 详细咨询QQ:1416759661   夜鹰教程网  基于角色的权限管理系统(c-s/b-s)。
  夜鹰教程网  基于nodejs的聊天室开发视频教程
  夜鹰教程网  Git分布式版本管理视频教程
  夜鹰教程网  MVC+EasyUI视频教程
  夜鹰教程网  在线考试系统视频教程
  夜鹰教程网  MongoDB视频教程。
  夜鹰教程网 Canvas视频教程
  夜鹰教程网 报表开发视频教程
  热点推荐
在Struts 2中使用JSON Ajax支持
解决JSP中使用request乱码问题
JSP+JavaScript打造二级级联下拉菜…
Tomcat中文手册(1)
JSP及Servlet中遇到的多线程同步
详解:JSP和Servlet中的绝对路径和…
JSP Struts之HTML标签库详解
自定义JSP标签
JSP中的include指令
errorPage设置方法--JSP
JSP 国际化-格式化货币和日期
九个隐含对象使用总结JSP的
Tomcat中文手册(2)
tomcat6关于EL表达式的一个错误
jsp分页技术代码
  最近更新
iOS 关于退出键盘两种方法和避免遮…
安卓apk签名常见命令
把activity当成dialog使用
如何选择APP开发框架
Layout _width ,Layout_height和…
Android调用百度地图使用时出现in…
安卓刷机术语
android端实现断点续传功能
利用TCP/IP实现Android客户端与服…
Invalid project description ove…
推荐使用的meta标签
手机网站用Bootstrap还是jQuery M…
如何让手机访问PC网站自动跳转到手…
提升HTML5的性能体验系列之一 避免…
Android和IOS 字体该做多大合适?…

关于我们 | 网站建设 | 技术辅导 | 常见问题 | 联系我们 | 友情链接

夜鹰教程网 版权所有 www.yyjcw.com All rights reserved 备案号:蜀ICP备08011740号3