首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 网页制作-> Dreamweaver教程
利用JSP 2.0开发Web应用程序-JSP教程,Jsp/Servlet
作者:网友供稿 点击:393
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 
jsp(javaserver pages)技术是对servlet的进一步抽象,它由jcp(java community process)开发,是用于生成动态内容的开放式的、可免费获取的规范,也是j2ee(java 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:表达式语言运算符

运算符
说明

+


-


*


/ 或 div


% 或 mod
模(求余)

== 或 =
等于

!= 或 !=
不等于

< 或 lt
小于

> 或 gt
大于

<= 或 le
小于等于

>= 或 ge
大于等于

&& 或 and
逻辑与

|| or or
逻辑或

! 或 not
逻辑非

empty
检查是否为空值

a ? b : c
条件运算符


隐含对象
除了运算符外,表达式语言还定义了一些隐含对象以支持网页作者访问需要的应用程序数据。表达式语言定义的隐含对象如表2所示,后面将给出使用这些隐含对象的一个例子。

表2:表达式语言中的隐含对象

隐含对象
内容

applicationscope
应用程序范围内的scoped变量组成的集合

cookie
所有cookie组成的集合

header
http请求头部,字符串

headervalues
http请求头部,字符串集合

initparam
全部应用程序参数名组成的集合

pagecontext
当前页面的javax.servlet.jsp.pagecontext对象

pagescope
页面范围内所有对象的集合

param
所有请求参数字符串组成的集合

paramvalues
所有作为字符串集合的请求参数

requestscope
所有请求范围的对象的集合

sessionscope
所有会话范围的对象的集合


表达式语言的例子
如你所言,网页作者无须学习java也能够使用这种表达式语言。示例代码1显示了一些表达式的例子和隐含对象的使用。

代码示例1: ex1.jsp

要运行这个例子,请参照以下步骤,这里我们假定tomcat 5.0安装在c:\tomcat5.0下。

切换目录到 c:\tomcat5.0\webapps\jsp-examples
创建新目录,名字可以是任意的,比如jsp2-tutorial
切换到jsp2-tutorial
把ex1.jsp复制并保存到该目录下
启动tomcat 5服务器:指向“开始”->“程序”->“apache tomcat 5.0”,单击“apache tomcat 5.0”来启动tomcat
在浏览器中输入http://localhost:8080/jsp-examples/jsp2-tutorial/ex1.jsp
你将看到类似图1所示的画面。使用表达式语言就这么简单!


图1:jsp表达式语言和隐含对象


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

注意: 在本文中,所有的jsp文件都保存在c:\tomcat5.0\webapps\jsp-examples\jsp2-tutorial目录下。


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

填充表单例子
隐含对象$paran[var]可用于读取填充表单的数据。代码示例2给出了一个简单的表单,该表单提示用户输入一个名字。

代码示例2: form.jsp

<html><head><title>form content</title></head>

<body>

<h3>fill-out-form</h3><p><form action="form.jsp" method="get"> name = <input type="text" name="name" value="${param[name]}"> <input type="submit" value="submit name">

</form>
<p>the name is: ${param.name}
</body></html>
在本例中,当用户输入名字并单击“提交”按钮时,输入的名字就会显示同一页面中的“the name is:”字样后面,如图2所示。

同样,运行这个例子只需要把form.jsp复制到c:\tomcat5.0\webapps\jsp-examples\jsp2-tutorial下并用浏览器打开它。


图2:表单处理

定义和使用函数
表达式语言允许你定义可在表达式中调用的函数。函数必须作为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:使用函数

标签处理器
jsp 1.2中传统的标签处理api由于允许标签体中包含scriptlet而变得复杂,但是现在利用表达式语言可以编写不含scriptlet的jsp网页。最终,jsp 2.0引入了一种新的标签扩展机制,称为“简单标签扩展”,这种机制有两种使用方式:

java开发人员可以定义实现接口javax.servlet.jsp.tagext.simpletag的类;
不懂java的网页编写人员则可以使用标签文件。
首先来看第一种方式,代码示例6给出了一个简单的标签处理器,它的作用仅仅是打印“this is my first tag! ”。

代码示例6: hellotag.java

package jsp2.examples.simpletag;
import javax.servlet.jsp.jspexception;import javax.servlet.jsp.tagext.simpletagsupport;
import java.io.ioexception;
/** * simpletag handler that prints "this is my first tag!" */ public class hellotag extends simpletagsupport { public void dotag() throws jspexception, ioexception { getjspcontext().getout().write("this is my first tag!"); }}
编译成功后,下一步就要在tld中定义一个标签描述符,下面是标签描述符的例子。

代码示例7: 标签描述符

<tag> <description>prints this is my first tag</description> <name>hello</name> <tag-class>jsp2.examples.simpletag.hellotag</tag-class> <body-content>empty</body-content> </tag>
最后再编写一个使用上述标签的jsp页面文件,见代码示例8。

代码示例8: helloworld.jsp

<%@ taglib prefix="mytag" uri="/web-inf/jsp2/jsp2-example-taglib.tld" %><html><head><title>simple tag handler</title></head>
<body><h2>simple tag handler</h2><p><b>my first tag prints</b>: <mytag:hello/></body></html>
要运行这个例子:

复制hellotg.java并保存到c:\tomcat5.0\webapps\jsp-examples\web-inf\classes\jsp2\examples\simpletag下;
使用javac编译hellotag.java;
把代码示例7中的标签描述符添加到文件c:\tomcat5.0\webapps\jsp-examples\web-inf\jsp2\jsp2-example-taglib.tld中的</taglib>之前;
复制helloworld.jsp并保存到c:\tomcat5.0\webapps\jsp-examples\jsp2-tutorial目录中;
用浏览器打开helloworld.jsp。
如果一切正常,应该会看到类似如图4所示的画面。


图4:简单标签处理器

标签文件
使用简单标签扩展机制的另一种方法是通过标签文件。标签文件是一种资源文件,网页作者可以利用它抽取一段jsp代码,通过定制功能来实现代码的复用。换句话说,标签文件允许jsp网页作者使用jsp语法创建可复用的标签库。标签文件的扩展名必须是“.tag”。

为说明使用标签文件是多么容易,考虑一下代码示例9。没错,这就是一个标签文件!

代码示例9: greetings.tag

hello there. how are you doing?
一旦定义了标签文件,就可以在jsp网页的编写中使用这种定制的功能。比如代码示例10中的jsp网页。

代码示例10: chat.jsp

<%@ taglib prefix="tags" tagdir="/web-inf/tags" %><html><head><title>jsp 2.0 examples - hello world using a tag file</title></head><body><h2>tag file example</h2><p><b>the output of my first tag file is</b>: <tags:greetings/></body></html>
要运行这个例子:

复制标签文件greetings.tags并保存在c:\tomcat5.0\webapps\jsp-examples\web-inf\tags 目录下;
复制jsp网页文件char.jsp并保存在c:\tomcat5.0\webapps\jsp-examples\jsp2-tutorial 目录下;
用浏览器打开chat.jsp文件。

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


图5:简单的标签文件


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

注意: 重要的是要注意到这里没有为问候标签编写tld,而是创建了一个标签文件并放在特殊的目录中,然后用taglib指令导入并直接使用它。


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

另一个标签文件的例子
标签文件可以作为模板使用。考虑代码示例11中的标签文件display.tag,这个例子是根据tomcat 5.0中的面板的例子改写的。指令attribute类似于tld中的<attribute>元素,允许声明自定义的动作属性。

代码示例11: display.tag

<%@ attribute name="color" %><%@ attribute name="bgcolor" %><%@ attribute name="title" %><table border="0" bgcolor="${color}">
<tr> <td><b>${title}</b></td> </tr> <tr> <td bgcolor="${bgcolor}"> <jsp:dobody/> </td> </tr></table>
代码示例12给出了使用上述标签的一个简单的jsp页面。

代码示例12: newsportal.jsp

<%@ taglib prefix="tags" tagdir="/web-inf/tags" %><html><head><title>another tag file example</title></head><body><h2>news portal: another tag file example</h2> <table border="0">
<tr valign="top"> <td> <tags:display color="#ff0000" bgcolor="#ffc0c0" title="travel"> last french concorde arrives in ny<br/> another travel headline<br/> yet another travel headline<br/> </tags:display> </td> <td> <tags:display color="#00fc00" bgcolor="#c0ffc0" title="technology"> java for in-flight entertainment<br> another technology headline<br> another technology headline<br> </tags:display> </td> <td> <tags:display color="#ffcc11" bgcolor="#ffffcc" title="sports"> american football<br/> nba<br/> soccer<br/> </tags:display> </td> </tr> </table> </body> </html>
要运行这个例子:

复制文件display.tag并保存在c:\tomcat5.0\webapps\jsp-examples\web-inf\tag 下;
复制文件newsportal.jsp并保存到c:\tomcat5.0\webapps\jsp-examples\jsp2-tutorial下;
用浏览器打开newsportal文件。
结果应该会得到与图6类似的画面。


图6:把标签文件用作模板

结论
jsp 2.0使得快速开发和维护动态网页比以前更加容易,尽管“java”一词出现在jsp中,但使用jsp2.0,网页作者无须学习java程序语言本身,就能开发出全新的动态网页。本文中的例子说明了使用jsp2.0的新特性开发动态网页是多么容易。

更多信息
fast track jsp 1.2
javaserver pages technology
javaserver pages specification (jsr 152)
the tomcat 5 servlet/jsp container
jsp developers forum
javaserver pages standard tag library (jstl)

faster development with javaserver pages standard tag library (jstl 1.0)

文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·用正则表达式过滤脚本的一些研究(asp.net + C#)-.NET教程,C#语言
·射频电路设计的困境及对策
·ASP.NET2.0下为GridView添加鼠标滑过(onmouseover、onmouseout)的行颜色高亮效果!-.NET教程,Asp.Net开发
·Java程序性能测试-JSP教程,Java技巧及代码
·利用JSP 2.0开发Web应用程序-JSP教程,Jsp/Servlet
·PHP模板引擎SMARTY-PHP教程,PHP应用
·.NET中的设计模式五:观察者模式-.NET教程,.NET Framework
·ultradev实例教程:5 做一个相对简单的网站后台(3)
·ASP.net 2.0 自定义控件的开发之数据分页 第二章-.NET教程,Asp.Net开发
·我的DataGrid嵌套DataList(未解决)-ASP教程,ASP应用
最新文章
·桌面壁纸站的建设_站长心得
·dotmore的法宝: 文中关联广告的未来_网赚技巧
·如何用10几个页面的e文小站做到月入350刀_网赚技巧
·fackbook创始人:脸谱是社交工具,而非社区_站长访谈
·搜搜客ceo:分类信息是人与人的价值流动_站长访谈
·丫客网李松:把实业工作和资本市场分开看_站长访谈
·windows xp中巧妙去掉多余的安全删除硬件图标_windows xp
·个人如何建站与站建好后期的运作_站长心得
·google沙盒效应产生的原因及其避免方法_google推广
·提高google adsense广告单价的投放方法 _google推广
相关主题
  • 利用JSP的思想来做ASP-ASP教程,ASP技巧
  • 利用JSP技术和Chart组件实现基于WEB的统计图表-JSP教程,Jsp/Servlet
  • 利用JSP 2.0开发Web应用程序-JSP教程,Jsp/Servlet
  • 利用JSP 2.0开发Web应用程序-JSP教程,Jsp/Servlet
  • 利用JSP 2.0开发Web应用程序-JSP教程,Jsp/Servlet
  • 西部数码虚拟主机

    友情链接
    CNNIC 西部数码
    万网 自助建站
    虚拟主机 asp空间
    域名注册 域名
    域名申请 主页空间
    论坛空间 网站空间
    国际域名 虚拟空间
    空间租用 DDOS防火墙
    成都主机托管 四川主机托管
    主机租用 服务器租用
    网站目录 自助建站
    虚拟主机 网址大全
    软件下载
    自助链接
    虚拟主机资讯 特价虚拟主机
    版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
    关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
    特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
    发表评论 打印  刷新     关闭