引言:为什么我要研究框架?
将主要的时间投入到最重要的工作上才是最最高效率的工作方式(也是最最高效率的编程方式)。为什么要说这句话?不知道,我只是希望将每天的8小时甚至更长的工作时间放到4小时甚至1小时里。(当然不工作也不行,没人给银子嘛)。总之工作的时间越少越好呀!但是时间少不代表工作的内容少,如何能把应该8小时的工作缩短呢?说句废话:“效率高”。如何效率高呢?再说句废话:“方法好”。对方法好就有了一个思考,什么叫做方法好?
编程就是编写程序。什么是程序?
程序就是命令的集合。什么命令?
命令就是告诉计算机做什么。
那么我就将编程总结为:写一些让计算机做事情的命令,然后不管它,让它自己抽风(执行)去 。
我认为这只是字面的肤浅意思,再怎么说我也做了10个月的编程了,我个人是这样认为的:编程就是将电脑可以认识的信息转换成用户可以认识的信息。使得用户操作电脑可以认识的信息,进行信息的处理。
现在有了框架,我发现在没写程序之前,我们已经将这个项目从头到尾走完了,每一步做什么很清楚,各个函数各尽其责就可以了。说实话就好像菲迪皮得斯(在公元前490年,希腊在马拉松河谷与波斯皇帝派来的大军展开了激烈的战斗,雅典军队在外无救兵的情况下,团结一心,运用正确的战术技巧,以少胜多,打败了波斯侵略军,取得了辉煌的胜利。当时担任传令兵的菲迪皮得斯奉命将这一胜利消息尽快告诉雅典居民,让受难同胞早些分享这胜利的喜悦。他顾不得路途遥远,一口气从马拉松跑到雅典——距离为42.195公里,到达雅典时他已累得精疲力竭,只说一句“我们胜利了”就倒在广场,闭上了双眼。)一样。如果菲迪皮得斯知道他可以直接打一个电话告诉雅典居民“我们胜利了”的话。仔细想想吧。我要是菲迪皮得斯说什么也要从墓地里跑出来掐死发明电话的人。现在的我就认为和框架相见恨晚了。
现在我知道框架的好处了,可以做到对一个项目的未雨绸缪。知道框架重要性以后下面我就来说说我这次要说的框架Struts。在我们做的这个项目中包括业务层(M)、展示层(V)、控制层(C)
在M层下包括下面几个层:
action:控制表单的路径(或者说跳转)。
dao:DAO是Data Access Object数据访问接口,数据访问:故名思义就是与数据库打交道。夹在业务逻辑与数据库资源中间。
data:对象数据结构对应层。
form:用来映射表单对象。
lbean:用来做数据处理。
在V层下Jsp页面层:
在C层下Strints页面层:
在C层下Strints页面层:
我操作一个表单数据的整体流程(包括操作):
1、将表单上的数据映射成一个对象,set进这个对象。
2、页面提交表单submit(看成对象)。
3、在structs中配置好action对应的页面,以及路径的名称。
4、在提交时做action.do操作,进入action,进行lbean的调用将返回的data对象装入request(或者session等等),返回指向路径。
5、进行lbean后调用进入dao进行数据访问。
6、进入dao后查询数据,返回data对象。
7、在structs中查找对应的路径并进行跳转。
1、将表单上的数据映射成一个对象,set进这个对象。
2、页面提交表单submit(看成对象)。
3、在structs中配置好action对应的页面,以及路径的名称。
4、在提交时做action.do操作,进入action,进行lbean的调用将返回的data对象装入request(或者session等等),返回指向路径。
5、进行lbean后调用进入dao进行数据访问。
6、进入dao后查询数据,返回data对象。
7、在structs中查找对应的路径并进行跳转。
我在前面说过了,这个项目是个java,但是我平时主要的开发是用C#开发,如何将其移植到C#中去呢。我现在急于将我手头的项目进行修改,进行框架的后序调整,真的是很想尽量快的用到structs框架的好。但是,现在的structs是不能进行移植的,因为中间有着一些必须要解决的所谓“难题”。
首先我来摆摆困难:
1、从java编程转换到C#编程
2、我要修改的目标项目是C#的Client/Server,但是我能学习的项目是Browser/Server。
第一条没什么,我在以前的博客“Structs框架使用心得”提过编程重要的是理念和语言关系不大。
重点在第二条,在Browser/Server情况下Structs框架是通过控制表单对象里的内容来控制页面所要展示的数据。但是在Client/Server各个窗体虽然都是对象,可窗体的对象都是不同的。
我在上面曾经说过一次自己对编程概念的理解:编程就是将电脑可以认识的信息转换成用户可以认识的信息。使得用户操作电脑可以认识的信息,进行信息的处理。那么我们可以根据应用项目的特点在做一次转义:编程就是将数据信息、文件信息等一些信息,转换为客户可以接受的友好界面显示出来。所以我在Client/Server和Browser/Server之间找到了共同点,都是将信息友好的显示出来,无非就是显示的形式不同罢了。
我将显示一个界面归纳为4个流程:为了方便读者看明白我举个例子,现在我要将一个数据库中的列表取出来并且显示,列表中包含人名、年龄、性别三个字段。表如下:
|
人名 |
年龄 |
性别 |
|
赵某 |
35 |
男 |
|
张隽永 |
24 |
男 |
|
孙某 |
26 |
女 |
我要将“年龄在25岁以下所有姓张的男性的用户列表”显示到一个列表框里,我现在用倒序的方法讲解我设计框架的工作流程:(流程的名字有些沿用博客“Structs框架使用心得”中Structs框架中的一些名词)
流程1、如果我要显示“年龄在25岁以下所有姓张的男性的用户列表”,那我就要查询出“年龄在25岁以下所有姓张的男性的用户列表”。那么先假设我已经有了“年龄在25岁以下所有姓张的男性的用户列表”,我只需要显示就可以了。我用已经查询出来的数据填充到显示列表中去。这个层次是显示层次,我把它叫做view,它只管将 “年龄在25岁以下所有姓张的男性的用户列表”(对象集合)填充到窗体中即可。
对象1、我们需要创建一个后缀为“Resultform”的对象传递给流程1,它里面有一个属性是“年龄在25岁以下所有姓张的男性的用户列表”。
流程2、上面我假设我已经有了“年龄在25岁以下所有姓张的男性的用户列表”,现在我就来解决这个对象集合,我需要有“年龄在25岁以下所有姓张的男性”这三个条件进行查询。所以这个后缀为“Lbean”的流程2,定义为数据处理流程,它的作用是将对象2进行数据处理,得到对象1。
对象2、我们需要创建一个后缀为“Conditionform”的对象传递给流程2,它里面有三个属性是“年龄在25岁以下”、“所有姓张的用户”、“男性的用户”。
1、 首先我先点击查询按钮,触发一个Action请求。
2、 将Conditionform条件对象填充好。
3、 从Action中带着Conditionform参数调用Lbean中,进行数据的处理,生成所要显示的Resultform。
4、 从Action中带着Resultform进入窗体,窗体进行展开。
在这里我将这个框架暂时取个名字叫“zjy框架”吧,这里介绍的是个“简单的zjy框架”,后面还会说到“复杂的zjy框架”。
后续 c#Struts框架理念和自制Struts框架下 复杂版






c#Struts框架理念和自制Struts框架上 简单版



ps:因为文字比较多,所以如果注意下排版比如段落之间空一行,小标题换个颜色,这样能区分好文章内容,看起来可能更好些。
祝愿你的博客越来越好~