Appfuse 增量式开发步骤

    技术2022-05-11  73

    前置条件:

           假设用户已经按照《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,从第三步开始作一遍

     

    最新回复(0)