总结一下维护了一年的一个软件系统的软件体系(二)

             今天总结一下这个系统软件使用的系统架构。

         这个软件使用的mvc框架有点类似于struts,我是在2005年开始接触java的,在维护这个系统软件之前使用的mvc框架包括struts和webwork两种,相比较之下,与strtus更为类似,或许也是因为strus中控制类部分也是直接操作request吧。

        这个mvc框架自身的特点大致有这么几个:

        1.这个mvc框架没有使用配置文件,在webconfig文件中配置有一个总控的servlet,负责接受页面提交的请求,进行转发。

           页面提交请求方式是直接请求这个总控servlet,在提交请求到这个servlet的同时,提交两个固定的参数,分别是class和method参数,通知servlet将请求转到相应的类,并调用参数中的方法。

         2.总控servlet调用的类为普通的java类,没有特殊的要求,比如struts中要继承action父类,方法写法有严格的要求,为静态方法,不允许有返回参数,接受的参数也固定,如下:

         public static void expMethod(HttpServletRequest req,
                                        HttpServletResponse res,
                                        RequestHash reh) throws     Exception {}

          因为没有使用配置文件,方法调用结束后返回到哪个页面,在该方法中直接赋值该页面的具体路径。这样修改起来有点复杂,需要重新编译类,并且在调试的时候,如果需要找到该请求调用的页面的具体路径,必须找到这个类和方法,不如使用配置文件一目了然。

        3.获取页面上的参数,这个框架提供两种不同的选择。

           框架提供一个Common的对象,该对象封装了对request的部分操作,提供了一个RequestHash对象,该对象为一个Vector集合,页面表单提交的数据已经封装到该集合中,参数获取方式为,创建一个字符串数组,将需要获取的参数名称赋值到该数组中,Common的toData方法返回与字符串数组相对应的参数值,如下

          Common common = new Common(req,res);//req request对象,res为response对象

          String[] keys = {"param1","param2"};
          String[] values = common.toData(reh, keys);

          此时values数组中,values【0】中的值为param1表单值,相应的为param2的表单值。

         如果需要获取一个数组值,request的操作是getParamValues方法,例如表单中的复选框值,RequestHash对象提供了类似于request的这个操作。

         reh.getParameterValues("params");

         4.为显示页面赋值也使用了Common对象。

        a、 赋值简单的字符串对象:common.addString("showParam", param);

         第一个参数为页面获取该参数值使用的名称,第二个为该对象名称。

         b、一次性赋值多个字符串对象:common.addArray(keys, values);

         相对应的,keys为页面获取参数值的名称,values为参数的值。

        c、赋值一个复杂的对象,例如自定义对象或者一个List对象:

            common.addObject("voname", vo);

          用法一致。

      该框架提供一套通用的js脚本库和一些统一的赋值规则,例如登录用户对象名称,子系统名称和提示名称,因此common对象赋值也提供了一些特殊的方法,只接受参数的值,参数名称为已定义名称,因此在为页面赋值也要注意不要与系统框架已定义对象名称冲突。

      今天写到这里,下一篇写写这个mvc框架的页面逻辑,标签还有这个脚本库的内容吧。

你可能感兴趣的:(我的“挨踢”生涯)