




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
任何人都想过自动生成的代码 自己去写个分析器不是件容易的事 而 XDoclet 给我们机 会建立自己的代码生成器 XDoclet 最早用来对付 EJB 因为生成 EJB 的本地和远程接口以及对应的 HOME 和描述符是 一件简单但是枯燥的事 本来我以为 只有 JBuilder 这样的集成编辑器可以很好的简化工 作 后来知道 XDoclet 也能够完成得不错 我最早用 XDoclet 是因为学习 hibernate hibetnate 的描述文件并不复杂 关键的部分不多 可是一旦对 POJO 修改 就必须要劳师动众的找到对应的描述符来修改 增加了一次出错 的机会 而使用了 XDoclet 就可以做到同步的修改 还有就是 struts 首先是配置文件 许多人操作同一个文件会产生冲突 有了 XDoclet 我们 就不怕了 还有 validate 文件也一样 有了 XDoclet 就会解决大部分冲突问题 之所以起这么一个名字 主要因为 XDoclet 和 Ant 结合得很紧 尽管实际上做的工作并没 有直接的联系 但 XDoclet 除了 Ant 接口就只有些 Maven 接口插件了 所以 XDoclet 几乎是 完全依赖 Ant 的 本篇文章的目录结构如下 因为只是为了说明问题 在我的 ant 的 build 文件中并没有包括 路径名的引用 一切是直接的方式 classes doc gen lib commons collections 2 1 jar commons logging 1 0 3 jar commons validator jar log4j 1 2 8 jar servlet jar struts jar xdoclet 1 2 1 jar xdoclet apache module 1 2 1 jar xdoclet ejb module 1 2 1 jar xdoclet hibernate module 1 2 1 jar xdoclet web module 1 2 1 jar xdoclet xdoclet module 1 2 1 jar xjavadoc 1 0 3 jar merge src todo web 只列出 lib 中的文件 每一个的作用在后面慢慢描述 build xml 开头增加 1 最简单的 todolist 每一篇讲 XDoclet 都送这里开始 有很多原因的 XDoclet 的灵感来自 JavaDoc JavaDoc 把 文档写在代码里 缓解了困扰编程领 域多年的文档与程序同步问题 这里有个很有趣的事 就是 UNIX 业界的人们传递下来这样一个传统 就是代码是最好的文档 保持文档的同步 实在是费力不讨好 的事 所以他们提出这样一个好主意 不过 JavaDoc 更聪明 文档是程 序注释的一部分 而且可以提取出来 来吧 看这个任务 然后 src 写这么一个文件 package xdoclet public class TodoListTest todo 我有许多工作要做 只是测试 忽略吧 public TodoListTest todo 我还不知道名字 只是测试 忽略吧 public String getYourName return null 注意要按照 javadoc 的写法 还要注意 ant 中的子任务系统 其中 info 就是我们定义的 documentdoclet 任务的子任务 我们以后会看到很多类似的情况 然后运行 ant todolist 结果就是一个结构类似 javadoc 但是只包括 todo 标签的 html 文档 呵呵 可以看看项目里有 哪些待办的事 2 web xml 和 taglib 作 servlet 映射是个讨厌的工作 当你接收别的项目的时候 这个项目的 servlet 怎么用可能比 较麻烦 可能当时 web xml 的映射找不到了 这时怎么办呢 看这个文件 package com xdocletbook blog servlet import java io IOException import javax servlet ServletConfig import javax servlet ServletException import javax servlet http HttpServlet import javax servlet http HttpServletRequest import javax servlet http HttpServletResponse import org apache log4j Level import org apache log4j Logger web servlet name HomePage web servlet init param name LogLevel value LOG LEVEL web servlet mapping url pattern home web security role role name OwnerRole web security role ref role name blogowner role link OwnerRole public class HomePageServlet extends HttpServlet private static Logger LOGGER Logger getLogger HomePageServlet class public void init throws ServletException String logLevel getInitParameter LogLevel if logLevel null public void service HttpServletRequest request HttpServletResponse response throws ServletException IOException LOGGER debug Displaying home page request getRequestDispatcher jsp home jsp forward request response 然后配置 build xml 增加如下任务 然后运行 ant generate web 结果就是这样一个 web xml StrutsActionServlet org apache struts action ActionServlet HomePage com xdocletbook blog servlet HomePageServlet LogLevel 1 blogowner aOwner StrutsActionServlet do HomePage home To specify mime mappings create a file named mime mappings xml put it in your project s mergedir Organize mime mappings xml following this DTD slice To specify error pages create a file named error pages xml put it in your project s mergedir Organize error pages xml following this DTD slice To set up security settings for your web app create a file named web security xml put it in your project s mergedir Organize web security xml following this DTD slice aOwner 仔细看这个文件 你一定诧异 struts 的配置信息怎样得来 这是 XDoclet 的另一种方式 对 于第三方的 Servlet 我们没有办法再处理原 代码 所以我们有了 merge 选项 看 这一句就知道了 在 merge 目录里我们有两个 文件 servlets xml StrutsActionServlet org apache struts action ActionServlet servlet mappings xml StrutsActionServlet do 还要注意的是 LOG LEVEL 这个是说要引用 ant 中的变量 所以我的 build xml 前面中增 加了这两项 所以 我们就可以动态的改变部署的 Log 级别 3 struts 自动配置 Struts 中有两样比较重要的类 Action 和 Form 对于 Action 我们需要配置 Action 的映射和 Forward 属性 对于 Form 我们也需要注册名字 和校验参数 以下就是我们能用 XDoclet 做到的 对于 Action 我们写这样一个 Java 文件 package com xdocletbook blog servlet import javax servlet http HttpServletRequest import javax servlet http HttpServletResponse import org apache struts action Action import org apache struts action ActionForm import org apache struts action ActionForward import org apache struts action ActionMapping Simple class to test Jakarta Struts generation Jakarta Struts 1 2 beta 2 only struts action path struts foo name userForm input jsp createBlog jsp struts action forward name success path struts getAll do redirect false struts action exception type com xdocletbook blog exception ApplicationException key app exception path jsp error jsp struts action form name blog Create public final class StrutsAction extends Action public ActionForward execute ActionMapping mapping ActionForm form HttpServletRequest request HttpServletResponse response return mapping findForward success 关键部分就是注释部分 看我们增加 build xml 一个任务 运行 ant generate web 我们就在 gen 得到了 struts config xml 其中关键内容如下 如果我们有许多 Action 就可以随时生成这样一个文件 不必在意有人改过这个文件 同 时你也不必担心不小心忘了改这个文件 因为你改了 Java 时 许多默认的属性也跟这改了 看到这里 许多用过 workshop 的一定感觉到页面流不就是这样吗 当通过图形界面定义流 程时 看看页面流的源码你就会发现 注释中有一些 特殊的标记 这说明 workshop 的注释有着 xdoclet 一样的功能 只不过 workshop 提供了很 好的界面 而不需要自己写注释 而且 workshop 提供了 更好的语法检查 呵呵 只是将许多 action 写到一起 是有些乱 Struts 的另一个主要的部分就是 Form 了 虽然我一开始觉得 Form 有些麻烦 对付动态的 Form 有些无能为力 但是结合一些相关的插件后 效果确实不错 这是我们的 Form 文件 我们还使用 ValidatorForm 来做自动验证 package com xdocletbook blog servlet import java io Serializable import org apache struts validator ValidatorForm struts form name blog Create public class BlogCreateForm extends ValidatorForm implements Serializable private String name private String owner private String email public BlogCreateForm public String getName return this name struts validator type required public void setName String name this name name public String getOwner return this owner struts validator type required public void setOwner String owner this owner owner public String getEmail return this email struts
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国银行2025滨州市秋招笔试英语题专练及答案
- 交通银行2025山南市秋招笔试专业知识题专练及答案
- 工商银行2025西安市秋招笔试EPI能力测试题专练及答案
- 建设银行2025驻马店市秋招半结构化面试题库及参考答案
- 2025行业数字化转型成功案例研究
- 工商银行2025吉林市结构化面试15问及话术
- 邮储银行2025海西蒙古族藏族自治州秋招结构化面试经典题及参考答案
- 有色金属中间产品供需服务合同2篇
- 建设银行2025神农架林区秋招笔试综合模拟题库及答案
- 邮储银行2025毕节市金融科技岗笔试题及答案
- 投资协议书对赌协议范本
- 2025年电子商务设计师国家资格考试试题及答案解析
- 综合执法局执法考试试题库(附答案)
- 血透室溶血的应急预案演练记录范文
- 环境保护与节能减排课件
- 铁路十五五规划2026-2030年
- 汽车销售培训课程
- 工厂数据采集与分析系统方案
- 2025证券股份面试题目及答案
- 2025上海浦东新区国资委直属单位公开招聘试题含答案
- 通信网络智能体白皮书
评论
0/150
提交评论