posts - 14,  comments - 37,  trackbacks - 0

前置条件:

       假设用户已经按照《appfuse执行步骤》文档进行配置并操作,最后产生了一个叫uappweb应用。如果用户需要新增加功能,只要按照下面的步骤去操作就可以轻松地完成任务。


 

 

 

 

开发步骤:

1.         先在数据库里创建表。例如,student表。注意,表的名称的第二个字母最好不要大写。以免出现奇怪的问题(好像是hibernatebug)。

2.         把目录切换到appgen的工作目录,修改文件tables。把里面的内容先去掉,然后添加新的表名。例如,student

3.         appgen的工作目录下,运行Ant generate

运行结果:从数据库里读取表结构,并生成相关的strus表单、jsp文件、hibernatePOJO对象、DAOmanager对象、struts配置文件、spring配置文件、velocity的模板文件。

 

 

4.         转到uapp目录下,执行ant package-web生成WAR文件

这个过程里,

a)         会根据java文件生成hibernate的映射文件;

b)        compile-dao。编译dao目录下的java对象。

c)        package-dao。把dao目录下的classes打包成demo-dao.jar

d)        compile-service。编译service目录下的java对象。

e)         package-service。把service目录下的classes打包成demo-service.jar

f)         copy-resources。期间,会调用native2ascii Converting 1 file from D:projectappfusemyappfusedemowebWEB-INFclasses to D:projectappfusemyappfusedemobuildwebclasses

g)        generate.database.properties

h)        copy-web-files

i)          gen-forms。根据struts配置文件产生Form表单对象。

j)          compile-web。会编译action对象。    javac Compiling 40 source files to D:projectappfusemyappfusedemobuildwebclasses

k)        webdoclet。产生

                         i.              web.xml

                       ii.              uapp.tld

                      iii.              struts-config.xml

                     iv.              validation.xml

                       v.               

 

l)          package-web.。生成war包。

 

 

 

注意:我们经常要处理实体间的关系,如一对多,多对多。而appgen产生的POJO对象往往都太简单,没有处理这些复杂的关系。所以,我们需要手工地修改POJO对象,建立对象的关联。例如,在Parent对象里建立对Child的关联。

Parent.java对象里,增加

 

private Set children =new HashSet();

/**

       * @return Returns the booths.

       *

       *

       * @hibernate.collection-one-to-many

       * class="org.aos.exhibition.model.Child"

       *

       * @hibernate.collection-key column="pid"

       *

       * @hibernate.set

       * name="children"

       * table="child"

       * inverse="true"

       * sort="unsorted

       * lazy="true"

       * cascade="all"

       */

 

 

    public Set getChildren()

    {

           return this.children;

    }

      

       还有相关的addChildren(Child child)方法和getChildren()方法。

 

 

Child对象里,增加

private Parent parent;

 

 

/**

        * @return Returns the parent.

        *

        * @hibernate.many-to-one name="parent"

        * column="pid"

        * not-null="false"

        * cascade="all"

        * 

        */

       public Parent getParent() {

              return parent;

       }

 

 

       public void setParent(Parent parent) {

              this.parent = parent;

       }

最后,运行ant package-web产生相关的hibernate映射文件,并编译。

 

 

在编译的过程中,可能会有一些错误,例如, ActionForm包名的错误导致编译问题。

org.appfuse.model.Parent应该为org.aos.exhibition.model.Parent。需要自己修改相关的ActionForm,把包名更正。

 

 

1.         另外,我们经常会发现appgen给我们产生的jsp代码框架太简单,不能符合我们的要求,例如样式、布局等等。那么我们需要修改uappwebpages目录下的jsp文件。

2.         部署。执行ant deploy. 发布web应用到tomcatwebapps目录下。

3.         拷贝D:Tomcat50webappsdemoWEB-INFclassesorgappfusewebappactionLookupMethods.propertiesclassesorgaosexhibitionwebappaction 目录下。

4.         如果是中文版本,还需要把ApplicationResources_en.properties里面新增的内容拷贝到ApplicationResources_zh_CN.properties文件里面。

 

 

5.         使用链接:http://localhost:端口号/uapp/ 来启动web应用。如果在调试过程中发生net.sf.hibernate.HibernateException: Batch update row count wrong这样的异常,那需要重新运行Ant generate,从第三步开始作一遍

posted on 2007-07-18 16:43 冰封的爱 阅读(230) 评论(0)  编辑  收藏 所属分类: J2EE

只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问  
 
<2024年12月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

常用链接

留言簿(3)

随笔档案

文章分类

文章档案

相册

搜索

  •  

最新评论

阅读排行榜

评论排行榜