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

2016-02-19 15:21 7 1 收藏

今天图老师小编给大家介绍下一个开发人员眼中的JSP技术(下),平时喜欢一个开发人员眼中的JSP技术(下)的朋友赶紧收藏起来吧!记得点赞哦~

【 tulaoshi.com - Web开发 】

使用定制化的标签
  尽管你可以在JSP页面中植入Java代码并在服务器方执行,但是,JSP也支持使用定制标签来插入动态内容,它有一种机制可以让你在JSP页面中插入你自己的、与HTML类似的标签。换句话说,你的JSP网页能够使用插入Java代码的简单标签语法产生动态的内容。但定制标签的用处不是很大。
  
  创建一个定制标签比在JSP网页中使用简单的scriptlet要复杂得多,因为定制标签需要用几个步骤来把你的Java组件和JSP代码连接起来。不过,定制标签在分发和重复使用的时候就非常简单了。对定制标签的支持将在JSP创建工具中实现。
  
  在下面的例子中产生动态内容的JSP网页就使用了定制标签。注意,在这个例子中我们不再需要引入Java类、声明变量或写任何Java代码:
  
  
  
  %@ taglib uri="/tlds/menuDB.tld" prefix="menu" %
  
  Today's Menu
  
  

  Lunch


  
  %@ include file="lunch_menu.html" %
  
  

  Our Special of the Day

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)
  
  
  
  
  
  从上面的语句中我们可以看出,这个页面明显比前面的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页面中的一个中返回相应的内容:
  
  !-- example1.jsp --
  
  %@ page language=="java" info="Example JSP #1" %
  
  
  
  
  
  %! String agent; %
  
  %
  
    agent = request.getHeader("User-Agent");
  
    if ( agent.startsWith("Mozilla/4.0") {
  
    %
  
  %-- Return content for 4.0 browsers --%
  
  %@ include file="ver4.html" %
  
  %
  
    }
  
    else if ( agent.startsWith("Mozilla/3.0") {
  
    %
  
  %-- Return content for 3.0 browsers --%
  
  %@ include file="ver3.html" %
  
  %
  
    }
  
    else {
  
    %
  
  %-- Return content for other/unknown browsers --%
  
  %@ include file="other.html" %
  
  %
  
    }
  
    %
  
  
  
  
  
  注意:此页面无须声明或初始化HTTP请求对象就可以直接对它进行访问。请求和响应(HttpServletResponse)对象都能够隐含地在JSP 页面中使用。和servlet一样,JSP页面能够使用请求对象从HTML窗体中获得参数值。
  
  !--example2.jsp --
  
  %@ page language="java" info="Example JSP #2" %
  
  
  
  
  
  %@ include file="header.html" %
  
  ?xml:namespace prefix = jsp />
  
  %! String selections[], info; %
  
  

  Here are your current selections:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)
  
  %
  
    !-- Get the form parameter values --
  
    selections = request.getParameterValues("items");
  
    if (selections != null) {
  
    %
  
  %
  
    for(int x = 0; x selections.length; x++) {
  
    %
  
  %= selections[x] % : %= db.getInfo(selections[x]) %
  
  %
  
    }
  
    %%
  
    }
  
    else {
  
    %
  
  

  (no items selected)


  
  %
  
    }
  
    %
  
  
  
  
  %@ include file="footer.html" %
  
  
  
  
  
  在这个例子中,当每一个参数值都被读取以后,JavaBean组件便查询所需要的信息。在JSP网页中使用Bean这种方法可以容易地从数据库中返回动态web内容。
  
  结论
  如果你正在寻找一种能简便建立连接服务器方Java组件的web程序的方法,那么JavaServer Page正是你所需要的。除了EJB,RMI,JDBC和JavaBean外,分离HTML表述代码和web程序,也使得JSP网页组织起来运行变得更容易了。事实上,由于web设计人员几乎无须Java开发人员的帮助就可以建立JSP页面,所以你再也不同担心创建web网页和写HTML代码了。
  
  全文完
  

来源:http://www.tulaoshi.com/n/20160219/1609480.html

延伸阅读
对于现在很多WEB开发人员来说,项目的效率就是一切,因为时间就是金钱。很多人都不在自己的模式里捣鼓研究了,而是用各种流行的框架和第三方平台去让项目更快的推进。今天我们要分享给大家的就是一些新鲜的WEB框架和开发工具。这些工具也是一些GEEK长时间的总结研究出的一套体系。用框架的好处就在于,只要你是正确的架构就能不用担心太多自身...
标签: Android
安卓手机开发人员选项怎么关闭   要关闭开发者选项,其实就是跟新机一样,要将这个开发者选项隐藏掉。这里教大家一个简单的方法,非常简单。下面以图老师小编手中的中兴V5(安卓手机)为例,教大家如何隐藏或者关闭开发者选项,其他安卓手机大小异同。 一、打开手机设置应用程序全部找到设置,然后点击它,如下图所示。 ...
标签: SQLServer
在上一篇文章中,我列出了在面试SQL Server数据库开发者时会提问的一些问题,如果我对应聘者的口头回答部分感到满意,我会让他们参加TSQL编程能力的测试,没有比动手操作数据库更有效的方法了,我认为TSQL测试是考察应聘人员的好办法。 一些免责声明 即使不是全部的话,这些TSQL问题中的大部分都可以使用不同的方法解决,我所提供的答案是...
标签: PHP
PHP 对 XML 的支持随着 PHP 的流行不断在增强。可以从本文中找出近一打 PHP 开发人员可用的 XML 工具。 工具顾问 Craig Knudsen 还描述了一个从 PHP 内部访问更多 Java 工具的方法。 PHP 对 XML 的支持始于版本 3.06,当时 James Clark 流行的基 于 C 的 expat 语法分析器首次作为 PHP 3 模块集成到了该版本。自那时起,不断地...
1. 保留字 C++中,保留字也称要害字,它是预先定义好的标识符。见要害字的解释。 2.要害字 C++中已经被系统定义为非凡含义的一类标识符。C++中的要害字有:autodoubleintstrUCt break elselongswitchcaseenumregistertypedefcharexternreturnunionconstfloatshortunsignedcontinueforsignedvoiddefaultgotosizeofvolatiledoifstaticwhi...

经验教程

170

收藏

29
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部