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

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

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

    本文导语:  使用定制化的标签   尽管你可以在JSP页面中植入Java代码并在服务器方执行,但是,JSP也支持使用定制标签来插入动态内容,它有一种机制可以让你在JSP页面中插入你自己的、与HTML类似的标签。换句话说,你的JSP网页能够使...

使用定制化的标签
  尽管你可以在JSP页面中植入Java代码并在服务器方执行,但是,JSP也支持使用定制标签来插入动态内容,它有一种机制可以让你在JSP页面中插入你自己的、与HTML类似的标签。换句话说,你的JSP网页能够使用插入Java代码的简单标签语法产生动态的内容。但定制标签的用处不是很大。

  创建一个定制标签比在JSP网页中使用简单的scriptlet要复杂得多,因为定制标签需要用几个步骤来把你的Java组件和JSP代码连接起来。不过,定制标签在分发和重复使用的时候就非常简单了。对定制标签的支持将在JSP创建工具中实现。

  在下面的例子中产生动态内容的JSP网页就使用了定制标签。注意,在这个例子中我们不再需要引入Java类、声明变量或写任何Java代码:

  

  

  Today's Menu

  

Lunch



  

  

Our Special of the Day



  

  

  从上面的语句中我们可以看出,这个页面明显比前面的scriptlet例子要简单许多,因为它没有包含初始化对象和执行相应的方法。但是JSP网页代码仅仅只是一部分;对于每一个定制标签,还包括下面的三个组件:

  (1)包含定制标签的网页,比如说,上面的代码片断中就使用了insertCatchOfDay 的定制标签。在使用定制标签之前,页面必须指定Taglib Directive来提供标签库描述符(对标签定义)的位置。当执行定制标签的时候,网页还有代表性的定义了一个和多个标签属性(比如在这个例子中的“meal”)来确定动态内容。

  (2)标签库描述符。它是一个定义了定制化标签并把它和Tag Handler连接起来的XML文件。一个标签库描述符包含了标签的不同属性,相关Tag Handler的名称(位置)以及JSP引擎需要处理定制标签的其他信息。

  (2)Tag Handler。 它是一个与定制标签联合执行操作的Java类。例如,在上面的insertCatchOfDay标签中,Tag Handler就是执行数据库查询得到相应菜单项的Java类。

  我们已经看到了一个使用定制标签的JSP网页,下面让我们来看一看另外的两个组件。

  Tag Handler

  tag handler是一个与servlet比较相似的Java类。但是servlet能够执行Servlet接口,还能够被HTML GET或POST请求所执行。tag handler也能够执行一个标签接口(javax.servlet.jsp.Tag)以及在定制标签被JSP引擎处理的时候执行。

  如果定制标签包含了属性,那么tag handler就必须定义这些属性以及每一个的get/set方法。例如,当定义上面insertCatchOfDay定制标签的tag handler的时候,我们必须定义“meal”属性和与它相关的get和set 方法:

  private String meal = null;

  public void setMeal(String s) {

  meal = s;

  }

  public String getMeal() {

  return meal;

  }

  Tag Library Descriptor

  如果你所有的时间都在处理Java技术而不知道关于 XML方面的东西,那么标签库描述符组件可能看起来会比较陌生。但是你也不需要担心,因为你不需要学习一门新的编程语言。标签库描述符仅仅使用与HTML相似的标签语法来定义定制标签的名字和属性,这更象定义一个对象。

  下面的标签库描述符定义了insertCatchOfDay标签。注意,这个文件定义了定制标签的名称,属性和相关的Tag Handler类:

   xml version="1.0" ?>

  

  

  insertCatchOfDay

  com.sun.CatchOfDayHandler

  

  Queries menu database for the catch of the day。

  

  

  meal

  

  

  

  与定义属性的名称一样,标签库描述符也能够定义数据类型并指定其属性(无论是否需要);在Tag Handler被执行之前,它允许JSP引擎去做某些错误检查。还有其他的信息,比如说为了使用JSP创建工具,库名和版本号也可以包含在标签库中。

更多的例子
  在下面的例子中,第一个例子在JSP页面中使用了HTTP请求对象 (HttpServletRequest) 来判断用户浏览器的版本并从三个HTML页面中的一个中返回相应的内容:

  

  

  

  

  

  
  agent = request.getHeader("User-Agent");

  if ( agent.startsWith("Mozilla/4.0") {

  %>

  

  

  
  }

  else if ( agent.startsWith("Mozilla/3.0") {

  %>

  

  

  
  }

  else {

  %>

  

  

  
  }

  %>

  

  

  注意:此页面无须声明或初始化HTTP请求对象就可以直接对它进行访问。请求和响应(HttpServletResponse)对象都能够隐含地在JSP 页面中使用。和servlet一样,JSP页面能够使用请求对象从HTML窗体中获得参数值。

  

  

  

  

  

  

  

  

Here are your current selections:



  
  

  selections = request.getParameterValues("items");

  if (selections != null) {

  %>


      
      for(int x = 0; x
      %>


  •    :

      
      }

      %>

  }

  else {

  %>

  

(no items selected)



  
  }

  %>

  


  

  

  

  在这个例子中,当每一个参数值都被读取以后,JavaBean组件便查询所需要的信息。在JSP网页中使用Bean这种方法可以容易地从数据库中返回动态web内容。

结论
  如果你正在寻找一种能简便建立连接服务器方Java组件的web程序的方法,那么JavaServer Page正是你所需要的。除了EJB,RMI,JDBC和JavaBean外,分离HTML表述代码和web程序,也使得JSP网页组织起来运行变得更容易了。事实上,由于web设计人员几乎无须Java开发人员的帮助就可以建立JSP页面,所以你再也不同担心创建web网页和写HTML代码了。

  


    
 
 

您可能感兴趣的文章:

  • 招聘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