动态网站制作指南 [  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!
当前位置 > 网站建设学院 > 网络编程 > Java教程
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,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息



本月文章推荐
.Java虚拟机(JVM)对象创建浅析.
.PetStore 中EJB 的设计模式.
.JavaMail常见问题之一般问题.
.用java编写的小游戏源代码分析.
.[环境设置] for server.xml of T.
.Java从入门到精通之书籍篇.
.Servlet中如何捕获Session事件?.
.J2EE中的异常管理及错误跟踪框架.
.java开源项目研究 2. 开源的历史.
.解决Java程序在MOTO E680i中声音.
.详细说明 MIDP 中的属性问题.
.各种数字类型转换成字符串型--JA.
.在运行时刻从文件中调入Class.
.让自己学会写的一个在线升级的程.
.实例学习 Struts.
.Java文件操作详解.
.有关J2ME新手程序员开发入门的几.
.等待窗体的一种实现.
.Java:Sun的第22条军规.
.将JAVA编译为EXE的几种方法.

定制xDoclet标签自动生成框架配置

发表日期:2008-1-5 |



  xDoclet是一种通过读取Java源文件中的特定标签,然后生成指定文件的工具。xDoclet标签本身已经提供了一些常用的标签,例如@ejb,@hibernate,@web等等,但是仍然不能满足我们的需求。
  
  例如我们最新的项目中引用了一个javascript验证框架,通过配置特定的XML配置文件,即可完成客户端表单验证,但是不想开发人员再去学习一套框架,于是想让开发人员在源代码中写@javascript这样的标签,然后生成其配置文件。
  
  Javascript客户端验证一直是web开发中一个比较头疼的问题,经常是每一个页面中充斥着许多类似甚至相同的验证代码,如何统一有效的治理这些代码,以及如何做到代码页面的分离一直没有太好的解决方法。
  
  运用这个验证框架那么客户端开发就变成了配置validation-config.xml这个文件如此轻松了,本文并不打算具体讲述如何使用JSValidation框架,有爱好的朋友可以去http://www.cosoft.org.cn/projects/jsvalidation JSValidation的官方网站自己去学习。
  
  虽然运用这框架已经可以很好的完成客户端验证代码的编写,并且提供了dtd文件进行xml文件的,但是手动编写xml文件还是很轻易出错,效率比较低,而且新的开发人员还要把握一个全新的框架,不宜于开发人员入门。
  
  像Struts或JSF这样的框架大都需要为表单写一个类似FormBean的东西,以JSF为例,假如表单内有一文本框<input type=”text” name=”txtUsername” />,那么对应的Page类或叫FormBean类就应有如下代码:
  private HtmlInputText txtUsername = new HtmlInputText();
  /**
  * @return 用户名
  */
  public HtmlInputText getTxtUsername ()
  {
    return txtUsername;
  }
  /**
   * @param text
   */
  public void setTxtTeaName(HtmlInputText text)
  {
    txtTeaName = text;
  }
  假如可以利用xDoclet,那么,就可以自动生成JSValidation的配置文件了,而且还利于培训新的开发人员,再加入ant task还可以形成每日构建。想象的代码应该是下面这个样子:
  /**
   * @javascript.field
   * name="frmZBAddGlobalPage:txtTeaName"
   * display-name="用户名"
   *
   * @javascript.depend
   * name="required"
   *
   * @return用户名
   */
   public HtmlInputText getTxtUsername()
   {
     return txtUsername;
   }
  通过分析xDoclet自带的一些标签包,发现只需要提供三个文件即可实现自定义xDoclet标签:一个继续于XmlSuBTask的类,一个继续于DocletTask的类(用于ant),一个xdt的模板语言文件即可。
  
  在XmlSubTask类中,首先,定义模板文件名:
  private static String DEFAULT_TEMPLATE_FILE =
      "resources/validation-config.xdt";
  定义dtd文件名:
  private final static String DTD_FILE_NAME_20 =
      "resources/validation-config.dtd";
  定义要生成的配置文件名:
  private static String GENERATED_FILE_NAME = "validation-config.xml";
  
  然后只需将三个文件组合起来既可,具体代码如下:
  public JavascriptSubTask()
    {
      setTemplateURL(getClass().getResource(DEFAULT_TEMPLATE_FILE));
      setDestinationFile(GENERATED_FILE_NAME);
    }
  
    public void execute() throws XDocletException
    {
      setDtdURL(getClass().getResource(DTD_FILE_NAME_20));
      startProcess();
    }
  
    protected void engineStarted() throws XDocletException
    {
      System.out.println(
        Translator.getString(
          XDocletMessages.class,
          XDocletMessages.GENERATING_SOMETHING,
          new String[] { getDestinationFile()}));
    }
  要想ant可以使用,只需要以下简单的代码:
  /*
   * 创建日期 2004-4-26
   */
  package paradise.xdoclet.modules.javascript;
  
  import xdoclet.DocletTask;
  
  /**
   * @author 清风
   */
  public class JavascriptDocletTask extends DocletTask
  {
    public JavascriptDocletTask()
    {
      addSubTask(new JavascriptSubTask());
    }
  }
  在ant中按如下方式定义:
  <target name="javascript" depends="jxdoc_init" description="Generate javascript validation-config">
      <javascriptdoclet destdir="${jsp}/javascript">
        <fileset dir="${src}">
          <include name="**/zaibian/*.java"/>
        </fileset>
      </javascriptdoclet>
  </target>
  
  接下来,也是最核心的部分,就是有关xdt模板语言,xdt文件可以说是自定义xDoclet标签的最重要的文件之一,以JavaScriptxDoclet为例,简单介绍一下xdt模板语言:
  <XDtClass:forAllClasses>  遍历所有含有标签的类(在ant中指定)
  <XDtMethod:forAllMethods>  遍历当前类的所有方法
  <XDtMethod:ifHasMethodTag tagName="javascript.form">  假如遍历到的方法中含有指定的标签
  <XDtMethod:forAllMethodTags tagName="javascript.depend">  遍历当前方法的所有标签
  更多的模板语言,参考xDoclet的.XDT文档,都是很好理解的模板语言。
  
  接下来,开始自定义自己的标签,新建一个xtags.xml文件,加上开头
  <?xml version="1.0" encoding="UTF-8"?>
  
  <!DOCTYPE xdoclet PUBLIC "-//XDoclet Team//DTD XDoclet Tags 1.1//EN" "http://xdoclet.sourceforge.net/dtds/xtags_1_1.dtd">
  然后写下所有自定义的标签,例如:
  <xdoclet>
    <namespace>
      <name>javascript</name>
      <tags>
        <tag>
          <level>method</level>
          <name>javascript.form</name>
          <usage-description>Form</usage-description>
          <condition type="method"/>
          <parameter type="text">
            <name>id</name>
            <usage-description>Form id</usage-description>
            <mandatory>true</mandatory>
          </parameter>
          <parameter type="text">
            <name>show-error</name>
            <usage-description>Form Error Display</usage-description>
            <mandatory>true</mandatory>
          </parameter>
          <parameter type="text">
            <name>onfail</name>
            <usage-description>Form Error Run Custom Javascript Function</usage-description>
            <mandatory>false</mandatory>
          </parameter>
        </tag>
      </tags>
    </namespace>
  </xdoclet>
  注重几个地方:
  “<level> method </level>”代表该标签出现在方法上而不是类之上。例如
  /**
  *@javascript.form
  *name=”test”
  */
  public String getXXX()
  {
  }
  a
  最后就是将这些文件打成jar,其放置目录分别是:
  根目录
  
  --META-INF/xtags.xml
  
  --源代码
  ----
  ------resources/*.xdt,*.dtd
上一篇:Flex开发步骤——配置过程总结 人气:664
下一篇:WAS 5.x中数据源的配置使用及常见问题 人气:434
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-7-24 Sablog-X v2.0 预览版
2008-7-24 帝国备份王EmpireBak 2008 正式版
2008-7-24 网趣网上购物系统时尚版 v8.2
2008-7-24 纵横B2B电子商务系统XYECS!B2B v
2008-7-24 e路小说小偷 v1.2.0723
2008-7-24 凌风美女图片站程序 v2.2
2008-7-24 TOM15电影收索程序
2008-7-24 清风信息自动采集生成系统 v1.0
2008-7-24 QQ邮箱编辑器 v1.0 (小小菜刀ASP
2008-7-19 UltraEdit 简体中文增强版 14.10
2008-7-19 CentOS 5.2 i386 LiveCD
2008-7-19 Snapture多功能相机 v1.4
2008-7-19 iAcces中文输入法 v1.0Build016
2008-7-19 Cookbook烹饪秘籍 v2.5
2008-7-19 苹果专用DVD转换工具 v1.1.59汉化
2008-7-19 Modem修复软件ZiPhone修改版04.0
2008-7-19 AgileMessenger即时通讯工具美化
2008-7-19 Sketches画图软件 v0.7b6破解版


  发表评论
姓 名: 验证码:
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号