夜鹰教程网-程序员的加油站
 当前位置:文章中心 >> Android/移动互联网/物联网/
JSP 技术 —— 是敌是友?(2)
夜鹰教程网 来源:www.yyjcw.com 日期:2016-11-22 20:32:31
现在,让我们具体看一下 JSP 编码。JSP 技术承诺为设计师和开发人员提供他们所需的惟一表示技术。JSP 技术是 J2EE 平台的一部分,这充分展示了 Sun 为其 Java 产品提供的强大支持。为了使您了解这个解决方案的流行程度,请尝试在 amazon.com 中搜索一下 ‘JSP’;您将发现大量与 JSP 技术有关的书籍,它会远远超过任何单独一种 Java API。

JSP 技术的承诺

现在,让我们具体看一下 JSP 编码。JSP 技术承诺为设计师和开发人员提供他们所需的惟一表示技术。JSP 技术是 J2EE 平台的一部分,这充分展示了 Sun 为其 Java 产品提供的强大支持。为了使您了解这个解决方案的流行程度,请尝试在 amazon.com 中搜索一下 ‘JSP’;您将发现大量与 JSP 技术有关的书籍,它会远远超过任何单独一种 Java API。在详细探讨 JSP 技术引发的具体问题之前,您应该清楚地了解这种技术的承诺。





内容和表示

首先,JSP 技术与内容和表示的分离有关,是 Sun 发布的有关 JSP 页面的最主要目标。实际上,一些代码开发人员抱怨将 out.println("<HTML><HEAD><TITLE>" + pageInfo.getTitle() + "</TITLE></HEAD>"); 键入到 servlet,这直接导致了 JSP 的设计。在硬编码内容中混入运行时变量加重了 servlet 开发人员的负担,并且使开发人员更加难对表示层进行修改,即使非常小的修改也是如此。

JSP 技术解决了这个问题,它允许在运行时将普通的 HTML 页面(后来还包括 WHM 或其他标记语言)编译到 Java servlet 中,实际上效仿了 out.println() 范例,而不需要开发人员编写代码。它允许您将变量插入到在运行时才进行解释的页面。

在一个 JSP 页面中,清单 2 所示的 HTML 片段应该类似清单 3 中的示例。

<%@ page import="com.ibm.display.PageUtils" %>
<%@ page import="com.ibm.display.PageInfo" %>
<%
PageInfo pageInfo = (PageInfo)session.getAttribute("PAGE_DATA")
%>
<HTML>
<HEAD>
 <TITLE>
  <%=pageInfo.getTitle()%>
 </TITLE>
</HEAD>
<BODY>
<!-- Other HTML content -->
</BODY>
</HTML>

根据最初的原则判断,JSP 技术(至少在其说明的设计中)可以满足表示技术的基本原则,正如上面概况的一样:内容与表示分离。





代码和标记

JSP 技术特性列表上的第二项可能会出现一些问题。JSP 代码可以让您将 Java 代码直接插入到标记页面。在开发 JSP 规范时,Microsoft Active Server Pages (ASP) 大获成功,因此 Sun 与 Microsoft 之间的竞争空前激烈。这导致了这个决策的产生。JavaServer Pages 的名称与 Active Server Pages 类似并非偶然。并且对众多 API 特性的模仿也是蓄意而为。因此 JSP 创建者需要能够将 Java 代码添加到他们的标记中。

为了演示将 Java 代码加入到标记中,清单 4 中的 JSP 代码片段根据需要动态地添加行,以表示 actors 的 Vector 中的每一项。

<%@ page import="com.ibm.display.PageUtils" %>
<%@ page import="com.ibm.display.PageInfo" %>
<%@ page import="com.ibm.people.Actor" %>
<%@ page import="java.util.Iterator" %>
<%@ page import="java.util.Vector" %>
<%
PageInfo pageInfo = (PageInfo)session.getAttribute("PAGE_DATA")
Vector actors = pageInfo.getActors()
%>
<HTML>
<HEAD>
 <TITLE>
  <%=pageInfo.getTitle()%>
 </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">
<%
 for (Iterator i = actors.iterator(); i.hasNext()) {
  Actor actor = (Actor)i.next();
%>
    <TR BGCOLOR="#FFCCCC">
      <TH width="50%" ALIGN="center">
       <%=actor.getLastName()%>
      </TH>
      <TH width="50%" ALIGN="center">
       <%=actor.getFirstName()%>
      </TH>
    </TR>
<%
 }
%>
  </TABLE>
 </CENTER>
</BODY>
</HTML>

注意,目前为止,我仅仅介绍了 JSP 技术的最初设计目标;在下一节介绍 JSP 技术存在的问题之后,我将对这个目标作出自己的论断。不过,您可能已经开始有点好奇,因为将代码嵌入到 JSP 页面中似乎与 JSP 技术的首要目标(分离内容和表示)有所冲突。实际上,我还没有就此展开论述。





设计师和开发人员

JSP 技术的最终(也是值得称赞)的目标是,它尝试在应用程序开发过程中形成清晰定义的角色。通过在表面上分离内容和表示,JSP 技术能够更加清晰地区分设计师和开发人员角色。设计师使用标准的 HTML、WML 或其他合适的语言创建标记,而开发人员编写代码。当然,如今很多设计师学习了 JavaScript 语言,因此,这些设计师开始学习 JSP 编码也不是什么令人吃惊的事情。通常,设计师并不会单纯地创建纯标记,他们会编写一个完整的 JSP 页面并将其交给开发人员。然后经过频繁的修改,开发人员再将 JSP 页面作为完整应用程序的前端使用。但是,这里的关键问题是仍然有很多设计师没有 学习 JSP 编码,他们也必须能够在这种环境下工作。

复制链接 网友评论 收藏本文 关闭此页
上一条: JSP 技术 —— 是敌是友?(3)  下一条: JSP 技术 —— 是敌是友?(1)
夜鹰教程网成立于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