帝国软件
  设为首页 加入收藏 关于我们
 
解密帝国网站管理系统
栏 目:
 
您的位置:首页 > 技术文档 > JAVA编程
利用JSP 2.0开发Web应用程序
作者:佚名 发布时间:2005-04-02 来源:不详
 

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,也许你需要从
1 JSP 表达式语言和隐含对象

注意 : 在本文中,所有的JSP文件都保存在c:Tomcat5.0webappsjsp-examplesjsp2-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.0webappsjsp-examplesjsp2-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>

要运行这个例子:

  1. 复制Compute.java并保存到C:Tomcat5.0webappsjsp-examplesWEB-INFclassesjsp2examplesel下;
  2. 使用javac编译Compute.java;
  3. 编辑文件C:Tomcat5.0webappsjsp-examplesWEB-INFjsp2jsp2-example-taglib.tld,把代码示例4中的代码段添加到文件中最后一个</function>标签之后,</taglib>标签之前;
  4. 复制math.jsp并保存到c:Tomcat5.0webappsjsp-examplesjsp2-tutorial下;
  5. 用浏览器打开该文件。

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


3 :使用函数

标签处理器

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

  1. Java开发人员可以定义实现接口javax.servlet.jsp.tagext.SimpleTag的类;
  2. 不懂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>

要运行这个例子:

  1. 复制HelloTg.java并保存到C:Tomcat5.0webappsjsp-examplesWEB-INFclassesjsp2examplessimpletag下;
  2. 使用javac编译HelloTag.java;
  3. 把代码示例7中的标签描述符添加到文件C:Tomcat5.0webappsjsp-examplesWEB-INFjsp2jsp2-example-taglib.tld中的</taglib>之前;
  4. 复制helloworld.jsp并保存到c:Tomcat5.0webappsjsp-examplesjsp2-tutorial目录中;
  5. 用浏览器打开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>

要运行这个例子:

  1. 复制标签文件greetings.tags并保存在c:Tomcat5.0webappsjsp-examplesWEB-INFtags 目录下;
  2. 复制JSP网页文件char.jsp并保存在c:Tomcat5.0webappsjsp-examplesjsp2-tutorial 目录下;
  3. 用浏览器打开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>

要运行这个例子:

  1. 复制文件display.tag并保存在c:Tomcat5.0webappsjsp-examplesWEB-INFtag 下;
  2. 复制文件newsportal.jsp并保存到c:Tomcat5.0webappsjsp-examplesjsp2-tutorial下;
  3. 用浏览器打开newsportal文件。

结果应该会得到与图6类似的画面。


6 :把标签文件用作模板

结论

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

更多信息

 
 
  
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·如何利用JSP连接数据库大全  (2005-04-02)
 ·如何利用JSP的9种基本内置组件  (2005-04-02)
 ·利用JSP“抓”网页代码的程序  (2005-04-02)
 ·如何利用Jsp分页实例的代码  (2005-04-02)
 ·如何正确利用 J2EE 的各种工具  (2005-04-02)
 ·利用ASP规划聊天室  (2005-03-12)
 ·利用SQL语言有没有办法查到表中哪  (2005-03-12)
 ·利用正则表达式把用URLEncode的字  (2005-03-12)
 ·如何利用ASP实现邮箱访问  (2005-03-12)
 ·利用ASP脚本制作异步装载的树形结  (2005-03-12)

   栏目导行
  PHP编程
  ASP编程
  ASP.NET编程
  JAVA编程
   站点最新
·致合作伙伴的欢迎信
·媒体报道
·帝国软件合作伙伴计划协议
·DiscuzX2.5会员整合通行证发布
·帝国CMS 7.0版本功能建议收集
·帝国网站管理系统2012年授权购买说
·PHPWind8.7会员整合通行证发布
·[官方插件]帝国CMS-访问统计插件
·[官方插件]帝国CMS-sitemap插件
·[官方插件]帝国CMS内容页评论AJAX分
   类别最新
·谈谈JDBC
·JDBC专题介绍
·JDBC接口技术
·利用weblogic的POOL(连接池)连接
·Jsp中调用Oracle存储过程的小例子
·JSP数据库操作例程
·JSP数据库连接大全
·用连接池提高Servlet访问数据库的效
·一种简单JDBC连接池的实现
·数据库连接池Java实现小结
 
关于帝国 | 广告服务 | 联系我们 | 程序开发 | 网站地图 | 留言板 帝国网站管理系统