当前位置:  编程技术>java/j2ee

一个开发人员眼中的JSP技术(上)

    来源: 互联网  发布时间:2014-10-12

    本文导语:  (作者:天译编译 2000年12月01日 14:26)JavaServerTM Pages(JSP)技术为我们提供了一种建立动态网页的简单方法,而且也简化了构造web程序的工作。本文从一个开发人员的角度对JSP技术做了一个全面介绍(并提供了一些JSP实例程序...

(作者:天译编译 2000年12月01日 14:26)

JavaServerTM Pages(JSP)技术为我们提供了一种建立动态网页的简单方法,而且也简化了构造web程序的工作。本文从一个开发人员的角度对JSP技术做了一个全面介绍(并提供了一些JSP实例程序)。
前言
JavaServer Pages技术可以让web开发人员和设计人员非常容易的创建和维护动态网页,特别是目前的商业系统。作为JavaTM技术的一部分,JSP能够快速开发出基于web、独立于平台的应用程序。JSP 把用户界面从系统内容中分离开来,使得设计人员能够在不改变底层动态内容的前提下改变整个网页布局。
那么什么是JavaServer Page呢?简单的说,一个JSP网页就是在HTML网页中包含了能够生成动态内容的可执行应用程序代码。此应用程序可能包含JavaBeanTM,JDBCTM对象,Enterprise Java BeanTM (EJB)和Remote Method Invocation (RMI)对象,所有的部分都可以非常容易的从JSP网页上访问到。例如,一个JSP网页可以包含 HTML代码所显示的静态文本和图像,也可以调用一个JDBC对象来访问数据库;当网页显示到用户界面上以后,它将包含静态HTML内容和从数据库中找到相应的动态信息。
  在JSP网页中,要把用户界面和应用程序分开可以考虑在网页设计人员和开发人员之间执行一个非常方便的授权任务。它也允许开发人员去建立灵活的代码,从而非常容易的进行更新和重复利用。由于JSP网页能够根据需要自动进行编译,web设计人员无须重新编译应用程序逻辑就可以改变表述代码。这也使得JSP与Java servlet(它是JavaSever Pages功能的扩展)相比成为一种可以更灵活生成动态web内容的方法。

JSP和Servlet
  如果你已经用过Java servlet,那么你就会知道servlet可以让你建立动态生成的网页,而网页中包含有从服务器方的Java对象中所获得的数据。但是你也得知道servlet 生成网页的方法就是在Java类中嵌入HTML标签和表述代码。这就意味着改变表述代码需要修改和重新编译servlet源文件。因为设计HTML页面的设计人员可能与编写servlet代码的开发人员不是同一个人,更新基于servlet的web应用程序就成了一件非常棘手的事情。

  Enter JavaServer Page是Servlet API的一个扩展。事实上,JSP网页在编译成servlet之前也可以使用,所以它们也具有servlet的所有优势,包括访问Java API。由于JSP 是嵌入到servlet中关于应用程序的一般表述代码,所以他们能够被看成一种“彻底”的servlet。

  JSP网页主要提供了一种建立servlet的高水平方法,它还带来了其他的优点。即使你已经为web应用程序编写了servlet,使用JSP仍然有很多优势:

  JSP网页可以非常容易的与静态模板结合,包括HTML 或XML 片段,以及生成动态内容的代码。

  JSP网页可以在被请求的时候动态的编译成servlet,所以网页的设计人员可以非常容易的对表述代码进行更新。如果需要的话,JSP网页还可以进行预编译。

  为了调用JavaBean组件,JSP标签可以完全管理这些组件,避免网页设计人员复杂化应用程序。

  开发人员可以提供定制化的JSP标签库。

  网页设计人员能够改变和编辑网页的固定模板部分而不影响应用程序。同样,开发人员也无须一个个编辑页面而只须对组件进行合理的改变。

  通常,JSP允许开发人员向许多网页设计人员分发功能性应用程序。这些设计人员也不必知道Java编程语言或任何servlet代码,所以他们能够集中精力去编写HTML代码,而编程人员就可以集中精力去建立对象和应用程序。

建立JSP页面
  粗略看来,JSP网页和HTML (或XML)网页非常相似——都包含用标签封装的文本(在“<>”之间被定义)。当HTML标签被用户的浏览器处理以显示网页的时候,JSP标签能够通过web服务器的处理来生成动态内容。这些JSP标签能够定义个别的操作,比如说用一个方法来调用JavaBean,或者包含标准的Java代码块(也就是所谓的scriptlet),这些代码块能够在网页被访问的时候被执行。

  为了了解它们如何使用,下面我们介绍了一个JSP网页的简单例子,在这个JSP网页中包含了静态HTML内容和从JavaBean生成的动态数据。当用户访问这个网页的时候,它可以显示当前的日期,并根据当前的时间增加相应的问候语(例如“早上好”和“下午好”)。为简单起见,JSP标签显示在块中:

  

  

  Welcome

  

Today is



  

  


      
  • Day:

      
  • Year:

      


  

  

  
  if (time == Calendar.AM) {

  %>

  早上好

  
  }

  else {

  %>

  下午好

  
  }

  %>

  

  

  上面的JSP例子是不是很简单?我们在JSP网页中使用了几个不同的组件。这些组件包括下面的内容:

  JSP action (或JSP标签)使用了多种函数并扩展了JSP的功能。JSP action使用的是一种类似XML的语法,并且被用来处理JavaBean组件。在上面的例子中,jsp:useBean action初始化了一个JavaBean ,JavaBean将在网页的后面部分被用到:

  

  如果在网页中需要获得和设置这个Bean的属性,另一个JSP action将被给出,使用的是下面的语法:

  

  

  当网页被编译成一个servlet的时候,Directive将被JSP引擎处理。Directive被用来设置页面级的指令、从外部文件插入数据以及制定定制的标签库。Directive被定义在之间。 在上面的例子中,Directive定义了页面所使用的语言(Java),为了关联Java类需要植入代码并指定一个将要插入页面底部的HTML文件内容:

  

  

  声明与Java中的变量声明相似,它也是为了后面表达式或scriptlet的需要来定义变量。声明被定义在之间。在上面的例子中,“int”声明并给出了一个当前时间的相应值 (AM 或 PM):

  

  表达式可以是变量或常量,它插在由web服务器所返回的数据里,并用来定义。在上面的例子中,表达式将调用JavaBean组件并在页面中插入结果数据:

  

  

  Scriptlet将作为一个Java代码块植入JSP页面中。Scriptlet代码被一一插入由页面所产生的servlet中,它被定义在之间。上面例子中的scriptlet可以根据当前用户产生相应的时间和问候语:

  
  if (time == Calendar.AM) {

  %>

  早上好

  
  }

  else {

  %>

  下午好

  
  }

  %>

  注释部分和HTML的注释相似,当在执行的时候JSP引擎将去掉对注释的解释。这就意味着JSP注释并不返回到用户的浏览器中。不象HTML注释被定义在标签之间,JSP注释被定义在之间。例如:

  


    
 
 

您可能感兴趣的文章:

  • 招聘C/C++开发人员 Linux平台
  • 很想去红旗Linux做桌面开发人员,不知适不适合?
  • 谁熟悉debian的安装,用于开发人员的
  • 简直搞笑:调查称65%中国开发人员明年将开发Linux应用程序
  • 问有没有专门针对嵌入式开发人员使用的linux系统
  • 急聘:东北地区unix c开发人员,待遇优厚。
  • 北京锐安招聘嵌入式开发人员
  • 我的《JBuilder开发人员指南》用ACROBAT打不开不知是为什么????有回就有分!
  • 聘兼职程序开发人员
  • 紧急寻人启事:寻有经验的MAC C++开发人员(15:00前回复有效)
  • 高级开发人员的薪水大概需要多少
  • 哪位结合原码说明下Linux内核开发人员是如何处心积虑的提高效率的
  • 让我们一起谈谈对于我们软件开发人员而言敬业精神和团队精神有何意义?
  • 小菜鸟从网上下载了一本jbuilder开发人员指南,书上说的gridcontrol控件我怎么没有找到啊,我用的是jb7.0!!!
  • 网站开发人员的前途?
  • 未来阿尔法操作系统,小弟亦是开发人员之一,大家下载测试一下,提点意见~~
  • 关于jbuilder开发人员指南(接着散分)
  • 诚邀具有JAVA开发经验且英语水平过硬的开发人员一起来翻译J2SDK标准版V1.4.0 API文档和J2EE1.3 API文档,完成后将放在网上共享下载,详情到网站http://china-programer.myrice.com/
  • 谢谢dillonxie(dillonxie)提供的空间,可以下载Jbuilder开发人员指南了
  • ◆ 成都,需要2名UNIX/LINUX开发人员
  • Linux Kernel/Network 技术QQ群14888802,只加有内核开发、TCP/IP协议栈开发的程序员,不加新手和做应用开发的程序员。
  • 请问:做(linux)驱动开发对于电子技术需要了解到什么程度,
  • 什么是基于组件的开发技术?
  • 请问用java 开发b/s结构的需要什么技术?
  • linux 设备驱动开发&调试技术---!!!!!!!
  • 小弟想跳到一家大公司搞JAVA开发,但是要先做技术支持一类的工作,经常出差,而且不知道何时才能真正搞开发?该去还是该留?
  • 有人能说说安全存储技术,具体是指哪块开发吗?
  • linux下开发WEB服务的话,用什么技术和开发工具较好些?
  • 询问MAC OS下的界面开发技术
  • 标题怎么会是“讨论Java,JavaScript等开发技术”?
  • 无线终端的开发技术都有哪些?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • VS2012+MySQL+SilverLight5的MVVM开发模式介绍
  • linux 嵌入式开发用不用买开发板,买什么样的开发板?
  • ios app 开发中ipa重新签名步骤介绍
  • 请问shell 开发能开发什么样的程序?硬件的驱动程序是否能够开发呢?
  • 几个windows平台C++开发错误举例
  • 请问在Linux 下用C开发移动增值软件都有什么开发工具啊,我以前一直在Windows下用VC开发
  • IOS开发:UIScrollView类介绍及如何简单地截获touch事件
  • 我常未开发过Linux下的程序,请问Linux下可以使用那些开发工具,最好的开发工具是什么版本?
  • nginx最新主线开发版1.5.4发布及下载地址
  • 我是学习web开发的,主要是java开发SSH开发框架和ajax等。我想知道有没有必要学习一下linux相关知识。
  • Web前端开发如何利用css样式来控制Html中的h1/h2/h3标签不换行
  • 各位设备驱动开发的朋友,请问,linux设备驱动开发和网络编程开发哪一样工资比较高呀?
  • ​基于Docker的大数据开发实践
  • 驱动程序开发和嵌入式开发有什么联系吗?
  • Android及andriod无线网络Wifi开发的几点注意事项
  • linux 嵌入式开发用买开发板吗?
  • Linux 下c++开发error while loading shared libraries问题解决
  • web开发和嵌入式开发哪个更有挑战
  • Android开发需要的几点注意事项总结
  • 请问在哪下载嵌入式Linux开发平台???想学嵌入式开发!!!
  • IOS开发之socket网络编程(基于SimpleNetworkStreams的c/s程序)
  • 热点调查:请问你们公司用什么团队开发工具开发Web程序的?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3