选择显示字体大小

利用jsp 2.0开发web应用程序

  jspjavaserver pages)技术是对servlet的进一步抽象,它由jcp(java community process)开发,是用于生成动态内容的开放式的、可免费获取的规范,也是j2eejava 2 enterprise edition)规范的重要组成部分。许多商业应用服务器如bea weblogic、ibm websphere、live jrun和orion都支持jsp技术。

  从机票预订系统、银行系统到购物系统,web上到处都在应用jsp技术。新发布的2.0版是对jsp1.2的升级,增加了一些有趣的新特性。jsp2的目标是使动态网页的设计更加容易,而且无需学习java编程语言。

  本文内容包括:

  提供具有丰富示例代码的教程来使你熟悉jsp2.0

  介绍jsp2.0的新特性

  提供利用jsp2.0开发应用程序的一些体会给出了一些示例代码,对这些代码稍加修改即可用于你自己的应用程序。

  如果你还不熟悉jsp,那么直接从jsp2.0入手是一个不错的主意。但是如果希望学习jsp1.2,也许你需要从jsp教程开始学习。

  jsp 2.0

  jsp 2.0是对jsp 1.2的升级,增加了几个有趣的新特性,可以使web应用程序设计人员和开发人员的工作更容易一些。jsp 2.0的目标是比以前更易于使用,更重要的是无须学习java语言本身就可以使用它。它增加了一种称为simpletag的新扩展机制来简化标签api(tag api)。

  除了其他一些改进外,jsp 2.0引入的最主要的新特性包括:

  一种简单的表达式语言(el),能够用来容易地从jsp页面访问数据,这种表达式语言简化了基于jsp的不含脚本的应用程序的编写,不需要使用java scriptlet或者java表达式;

  用于直接使用jsp技术来定义可重用的自定义行为的新语法,该语法使用.tag和.tagx文件,这类文件可由开发人员或者网页作者编写;
3xml语法得到了实质性的改进,增加了新的标准文件扩展名(.tagx用于标签文件,.jspx用于jsp文件)。

  本文主要讨论表达式语言、简化的标签api和标签文件。相信目前的jsp开发人员将会发现这些重要的特性不但有趣,而且非常有用。 为何要从1.2跨越到2.0?

  在java规格请求(jsr 152)中版本号最初定为1.3。但是正如你将在后面看到的那样,由于这些新特性对jsp应用程序的开发模型产生了如此深刻的影响,专家组感到有必要把主版本号升级到2.0,这样才能充分反映这种影响。此外,新的版本号也有助于把开发人员的注意力吸引到这些有趣的新特性上来。令人欣慰的是,所有合法的jsp1.2页面同时也是合法的jsp2.0页面。

  jsp 2.0起步

  在着手学习jsp 2.0之前,你需要一个支持jsp2.0和java servlet 2.4规范的jsp环境。幸运的是,jakarta tomcat 5.0(alpha测试版)支持新的jsp2.0和servlet 2.4规范,可以从http://jakarta.apache.org/builds/jakarta-tomcat/release/v5.0.4-alpha/下载并安装tomcat 5.0。

  jsp表达式语言

  向jsp网页传递信息是通过jsp scoped属性和请求参数完成的。专门为网页作者量身定做的一种表达式语言(el)把jsp scoped属性提升为从业务逻辑向jsp页面传递信息的标准方式。但是要注意,尽管这种表达式语言是jsp的一个重要特性,它并不是一种通用的程序语言。它仅仅是一种数据访问语言,可以方便地访问和处理应用程序数据,而无需使用scriptlet或者请求时(request-time)表达式的值。

  在jsp2.0之前,网页作者只能使用表达式<%= aname %>访问系统的值,比如下面的例子:

<sometags:atag attribute="<%= pagecontext.getattribute("aname") %>">

  或者使用自定义javabeans组件的值:

<%= acustomer.getaddress().getcountry() %>

  表达式语言允许网页作者使用简单的语法访问对象。比如要访问一个简单变量,可以像下面这样写:

<sometags:atag attribute="${ aname}">

  而访问嵌套的javabeans属性,则可以像下面这样写:

${ acustomer.address.country}

  你可能会问,这不是javascript的语法吗?完全正确!如果你使用过javascript,就会感到非常轻松,因为表达式语言正是借用了访问结构化数据的javascript语法。

  --------------------------------------------------------------------------------

  注意:

  表达式语言最初是作为jsp标准标签库(jstl)1.0的一部分而开发的,jstl是一种标准标签库,它提供对通用的、结构化的任务的支持,如迭代和条件、xml文档处理、国际化和利用sql访问数据库等。jstl规范是由jsr 52专家组开发的。关于jstl的介绍,请参见faster development with jstl(使用jstl加速开发).

  --------------------------------------------------------------------------------
  访问应用程序数据

  可以使用点号运算符(.)访问作为对象属性的应用程序数据,也可使用方括号运算符[‘name’]访问命名的数组元素。

  表达式${ data}表示名为data的scoped变量。可以使用点号(.)或方括号([])运算符从集合中检索属性值:

  点号运算符用于访问命名的属性,比如表达式${ customer.name}表示scoped变量customer的name属性;方括号运算符可用于检索命名的属性,比如在${ customer[“name”]}中。也可以通过${ customers[0]}的形式来访问集合customers中的第一项。

  表达式语言统一了对点号和方括号运算符的处理,因此${ customer.name}与${ customer[“name”]}是等价的。正如你看到的那样,表达式必须使用${ 和}包围起来。

  el的标识符求值方式是使用pagecontext.findattribute(string),把标识符作为一个属性来查找它的值。如果没有找到该属性,则返回null。

  运算符

  表达式语言支持算术运算符、关系运算符和逻辑运算符,以完成大多数的数据处理操作。此外,它还提供了一个用于测试一个对象是否为空的特殊运算符。运算符如表1所示。你可以使用empty运算符判断某个集合或字符串是否为空。比方说,只有当要求的命名参数param没有给出时,表达式${ empty param.name}才返回真。empty运算符可以与“!”运算符一起使用,比如${ !empty param.name}当要求的命名参数param存在时返回真。

  表1:表达式语言运算符

运算符

  定义和使用函数

  表达式语言允许你定义可在表达式中调用的函数。函数必须作为public类中的public static方法编写。函数一经定义,它的签名(signature)就映射到标签库描述符(tld)中。

  为了说明函数的使用,我们举一个简单的例子,把两个数相加。首先要编写求两数之和的java方法代码,如代码示例3所示,这里定义了一个静态方法,它接收两个字符串参数,把它们解析成整数并返回它们的和。

  代码示例3: compute.java

package jsp2.examples.el;
import java.util.*;
public class compute {
 public static int add(string x, string y) {
  int a = 0;
  int b = 0;
  try {
   a = integer.parseint(x);
   b = integer.parseint(y);
  }catch(exception e) {
  }
  return a + b;
 }
}

  用javac把这段代码编译成功后,下一步就要把函数的签名映射到标签库。代码示例4说明了如何把add函数映射到包含函数实现和函数签名的类。后面将说明把这段代码添加到哪儿。

  代码示例4: 函数描述符

<function>
 <description>add x and y</description>
 <name>add</name>
 <function-class>jsp2.examples.el.compute </function-class>
 <function-signature>int add(java.lang.string,java.lang.string) </function-signature>
</function>

  现在我们就可以编写一个jsp页面来使用这个函数。代码示例5是包含两个字段的一个表单,用户输入两个数字并按下“求和”按钮,就会调用上面的函数并把两个数相加,结果在同一个页面中显示出来。

  代码示例5: math.jsp

<%@ taglib prefix="my" uri="http://jakarta.apache.org/tomcat/jsp2-example-taglib %>
<head><title>functions</title></head>
<body>
<h3>add numbers</h3>
<p>
<form action="math.jsp" method="get"> x = <input type="text" name="x" value="${ param["x"]}">
<br>
y = <input type="text" name="y" value="${param["y"]}">
<input type="submit" value="add numbers">
</form>
<p>the sum is: ${my:add(param["x"],param["y"])}
</body>
</html

  要运行这个例子:

  复制compute.java并保存到c:\tomcat5.0\webapps\jsp-examples\web-inf\classes\jsp2\examples\el下;使用javac编译compute.java;编辑文件c:\tomcat5.0\webapps\jsp-examples\web-inf\jsp2\jsp2-example-taglib.tld,把代码示例4中的代码段添加到文件中最后一个</function>标签之后,</taglib>标签之前;复制math.jsp并保存到c:\tomcat5.0\webapps\jsp-examples\jsp2-tutorial下;用浏览器打开该文件。

  如果一切正常,应该会看到类似如图3所示的窗口。


图3:使用函数

  


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范