动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > J2EE/J2ME教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ J2EE/J2ME教程 ]的信息

本月文章推荐
.J2EE入门教程之二.
.了解JBOSS的新特性.
.Servlet容器工作原理(四).
.EnterpriseJavaBeans导论一.
.在J2ME中访问dotnet Web Services.
.jboss配置系列第一天.
.网络编程:建立推拉门式菜单.
.MIDP中处理文字的换行.
.创建灵活易扩展的J2EE企业应用程.
.大规模的财政应用和面向服务的体.
.JBoss中服务器的类型.
.MIDP 1.0 HttpConnection类的rob.
.J2ME MIDlet(MIDP 2.0)代码签名证.
.j2ee技术简单介绍.
.MIDlet与Servlet之间传递Cookie.
.Spring 系列:Spring JMS 消息处.
.使用J2ME实现移动支付.
.你想把XML转成PDF?喔,使用FOP.
.BlueTooth探索系列(五)—J2ME蓝.
.通用联接框架(GCF)连接类型使用.

菜鸟学jsp(三)

发表日期:2007-12-23 |



  虽然jsp中使用scriplet及JavaBean可以完成很多动态操作如:访问数据库,实现E-mail,BBS等等。诚然直接使用scriplet在jsp中插入java代码是方便快洁的,但是这也给日后的维护带来了一定的困难。做为一种替代方案jsp提供了一种叫做定制标(custom tag)的机制,使用这种机制你可以按你的需要扩展jsp,用自己定义的标记封装常用的功能,使jsp页面更加简洁,更易开发与维护。

  一旦你定制好了你的标记,你就可以象使用SUN给你提供的标记一样使用它们开发了。其语法是一样的都是<prefix:tag></prefix:tag>

  既然有这么多达的好处我们就来看看到底什么是custom tag吧。
  
  按SUN的定义custom tag就是由用户定义的jsp标记(is a user-defined JSP language element)。
并且有如下一些特点:
  1。由请求页面处取得参数。
  2。可以访问一切jsp页可以访问的对象。
  3。可以修改请求页面生成的response。
  4。可以互相交互。你可以在使一个tag建立一个JavaBean,而在另一个tag中使用它。
  5。可互相嵌套。(就是<Html><head></head></html>的意思)

  下面我们就从一个简单的例子入手一步步的了解jsp tag.

  要使用tag,你必须首先完成以下两件事:
  1。声明一个标记库(tag library)。
  2。实现声明的标记库。

   要声明标记库先要建立一个tld(tag library descriptor)文件,这是一个XML文件,但是以tld为扩展名,比如database.tld。建立好的tld文件一般放在WEB-INF(在前两次的文章中提到过这个目录)目录下。

  好了现在我们在WEB-INF下来建立一个tld文件,比如就是database.tld。然后将下面代码copy到tld文件的开头:
  
  
 <?xml version="1.0" encoding="ISO-8859-1" ?>
   <!DOCTYPE taglib
        PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
       "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">


                        code 3

  以上就是每个tld文件在最开始必不可少的东东了。至于web-jsptaglibrary_1_2.dtd这个文件你可以在tomcat4或更新的版本中在%CATALINA_HOME%\common\lib的servlet.jar中找到(有兴趣的话可以打开看看,如果没有不看也罢),具体位置是 servlet.jar\javax\servlet\jsp\resources,并且在这个文件夹下你还会找到一个老的版本:web-jsptaglibrary_1_1.dtd。但是SUN的文档建议尽可能的使用新的版本。(以后所有出现的tld文件如不声明都假定在开头以添加了上面的code 3)。

*****************************************************************************
(在这我要特别说明我在学习过程中还发现了
  另一种开头:
 <?xml version="1.0" encoding="ISO-8859-1" ?>
  <!DOCTYPE taglib
        PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/j2ee/dtd/web-jsptaglibrary_1_2.dtd">
  如果用以上做开头编译后会告诉你找不到外部文件http file://java.sun.com/j2ee/dtd/
  web-jsptaglibrary_1_2.dtd,我想可能是上述URI用于企业版里,而我没有安装j2ee所造   成的。如果我说的不对请大虾们指正,我的E-mail:flyhelleryuanwei@yahoo.com.cn。

******************************************************************************

  有了以上的基础我们可以向刚刚建立的文档中添加内容了。


  <taglib>
    <tlib-version>1.0</tlib-version>
    <jsp-version>1.2</jsp-version>
    <uri>heller.database</uri>
    <description>
    A simple tab library for the database
    </description>
    ... ...
  </taglib>

                               code 4
  在code4中taglib是tld文档的根(root)元素(只能有一个)。tlib-version指明标记库的版本,同样jsp-version指明了jsp的版本。uri给出了一个唯一的URI来定位标记库。description是对标记库的一个简短描述。(还有一些可选项感兴趣的人可以参考SUN的文档http://java.sun.com/webservices/docs/1.0/tutorial/doc/JSPTags.html)。

    在code4中有省略号的地方可以插入一个或多个tag元素。比如我们加入如下:
  

     ... ...
    <tag>
       <name>simtag</name>
       <tag-class> temp.simtag </tag-class>
       <body-content> JSP </body-content>
     </tag>
     ... ...

                                           code 5

  以上在tag元素中的name为你定义的tag指定了一个唯一的名字,tag-class是用来指出处理此标记的class名。body-content指出在<prefix:tag></prefix:tag>之间允许出现的内容类型。一般来说用JSP就可以了。因为这个选项并不影响处理tag的class对tag内容的处理,所以其实只是在使用某些开发工具是描述才会有用。
  以下就是完成后的tld文档:

 <?xml version="1.0" encoding="ISO-8859-1" ?>
  <!DOCTYPE taglib
        PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">

  <taglib>
    <tlib-version>1.0</tlib-version>
    <jsp-version>1.2</jsp-version>
    <uri>heller.database</uri>
    <description>
     A simple tab library for the database
    </description>

    <tag>
      <name>simtag</name>
      <tag-class> temp.simtag </tag-class>
      <body-content> JSP </body-content>
    </tag>
</taglib>

下面我们来实现在以上定义的temp.simtag类。


package temp;

import javax.servlet.jsp.tagext.*;
import javax.servlet.jsp.*;

public class simtag extends TagSupport {
   private static int guestNum = 0;

   public int doStartTag() throws JspException {
    try {
       guestNum++;
       pageContext.getOut().println("Hello!");
       pageContext.getOut().println("You are the " + guestNum + "st guset!");
     } catch (Exception ex) {
       throw new JspTagException("SimpleTag: " +
         ex.getMessage());
     }
     return SKIP_BODY;
   }

   public int doEndTag() {
     return EVAL_PAGE;
   }
}

                                      code 5

  也许你以下子看不太懂,没关系,我们先来看看结果。编译上代码,而后在第一偏文章中提到的WEB-INF文件夹中建立一个名为classes的文件夹,而后将编译生成的temp文件夹copy到classes文件夹下,在将以下代码添加到在第一篇文章中建立的web.xml改写成如下:

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

<taglib>
  <taglib-uri>/database.tld</taglib-uri>
  <taglib-location>
    /WEB-INF/database.tld
  </taglib-location>
</taglib>

</web-app>
                               code 6

  这是为了使服务器知道如何由taglib-uri定义的逻辑名找到你的database.tld(记得吗?你将它放在了WEB-INF下)。以后你就可以用“/database.tld”这个逻辑名引用database.tld了。

好了马上就大工告成了,将你原来写的hello.jsp改写成如下:

 <%@ taglib uri="/database.tld" prefix="database" %>
  <%@ page contentType="text/html; charset=GBK" %>
  <%@ page import="java.io.*" %>

  <html>
  <head>
  <title>
  hello
  </title>
  </head>
  <body bgcolor="#00ffff">
  <h1>
  <database:simtag>
  </database:simtag>
  </h1>
  </body>
  </html>
                                  code 7

OK!现在你的home目录应是以下的状态:

  
home
  
   jsp
   hello.jsp
  
   WEB-INF
       classes
            temp
              simtag.class
       web.xml
       database.tld

  好了,run你的tomcat(方法见第一篇文章),在127.0.0.1:8080/home/jsp/hello.jsp你就可以看到成果了。
你会发现其结果与第二篇文章中最后完成的jsp是一样的,只是页面清爽了一些。在下一偏文章中我们将进一步学习custom tag,到时code5中代码的意思也就显而易见了。

bill-转自:csdn

(出处:http://www.knowsky.com)


上一篇:把本页内容导出成word文件或excel文件(原创) 人气:801
下一篇:菜鸟学jsp(二) 人气:479
浏览全部J2EE/J2ME的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-12-1 MyBB v1.4.4 简体中文版 bulid 2
2008-12-1 新云网站内容管理系统 v4.0.0.11
2008-12-1 网趣网上购物系统时尚版 v8.8
2008-12-1 Textpattern v4.0.7 多国语言版
2008-12-1 Piwik ( PHP统计系统,可以和GOOG
2008-12-1 天空网络电影系统SKYUC! v2.6.2
2008-12-1 SiteDynamic企业网站管理系统 v1
2008-12-1 KindEditor HTML在线编辑器 v3.0
2008-12-1 0451sky高校教务管理系统2008 v4
2008-11-29 Tencent Traveler 4.4
2008-11-29 龙卷风网络收音机 v3.0.0.0
2008-11-29 Intel Chipset Software Install
2008-11-29 TweakVI 1.0 Build 1100
2008-11-29 Opera 9.62 Build 10469
2008-11-29 MPlayer WW编译版 SVN-r28044(20
2008-11-29 NetTools网络工具v1.0.0破解版
2008-11-29 3DGallery三维体验1.1破解版
2008-11-29 SecretBook保密本v1.0破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | OPEN参数生成器 | 弹出式窗口代码产生器 | 密码登录生成器 | 在线按钮生成器 | Meta标签生成器 | 多色彩特效字代码生成器 | 网页代码调试器 | 在线FTP登陆 | Flash取色器 | 配色代码对照表 | 配色辞典 | CSS生成器 | 广告代码 | 框架网页代码生成器 | js/vbs加密 | md5加密 | 进制转换 | UTF-8 转换工具 | 在线调色板 | Html转换js | Html转换asp | Html转换php | Html转换perl
实用工具:汉字翻译拼音 | 拼音字典 | 符号对照表 | 个税计算 | 实时汇率查询换算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 | 国家代码与域名缩写 | 文字加密解密 | 元素周期表 | 健康查询 | 世界时间 | 万年历 | 二十四节气 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2009 www.knowsky.com All rights reserved | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵
SEO対策 中国語教室 ホームページ作成