从最原始的在jsp页面里面写代码到使用框架写代码,一路走来,大大小小的项目做了许多,接触过的mvc框架也有很多,目前开发界比较主流的mvc框架是struts2和spring mvc,都有各自缺点和优点,在项目使用过程中总有不尽人意的地方,下面主要讲解一下struts2和spring mvc在项目使用的不足之处,最终引入一个我自己写的一个mvc框架,虽然本框架还不够完善,也不敢说有多好,只是说比较合适于我的开发方式,并且已经在多个项目中使用。什么是mvc以及mvc原理,我不做讲解,自己百度
struts2一堆烦人的配置文件和映射关系,对于刚不熟悉的人来说,完全是雾水,得通过对配置文件的分析才能找得到对应调用的类和方法,虽然可以通过注解来简化配置文件,达到零配置状态,但是struts2在某些性能要求较高的项目上使用还是存在一定的效率问题,如果采用零配置在返回值视图的处理上不够灵活,必须要带入注解。
springMVC相比于struts2来说,处理流程比较清晰,mvc模式分的较为清楚,但是springmvc对于控制层并不像struts2一拉的对每一个请求都新建一个对像,一个是方法级别的访问,一个是类级别的访问,所以springmvc对每一个方法都要配置注解,看着就烦人,在查找起来非常麻烦,对于新手来说,看到前台调用的方法,去查找对应的方法非常困难,在简洁程序上不如struts2的零配置,采用约定大于配置。
为了去除上述两个框架比较烦人的配置,我本打算修改springmvc来达到约定大于配置,不在写一些烦人的配置,但是最后在看了springmvc的源码后,我发现修改起来比较麻烦,于是在去年国床,决定自己造一个车轮,一是为了更好的理解mvc模式,二是为了解决采用开源框架如果修改了源码,在框架升级后不易改动。
整个框架采用零配置,约定大于配置,只需要在web.xml引入一个栏截器,并配置相应的自定义栏截器所在的包和类的工厂,可以和spring进行对接,配置就基本完成了
前台的访问非常简单如下图需要调用CodeController的list方法,只需要code!list.do或者code/list.do就可以调用,对于返回视图非常简单,框架已经定义了大部份通用的视图,只需要调用就可以了,如果存在自定视图只需要返回 (视图类名:路径)就可以
如下面自定义了一个下载视图,只需要返回视图类名和路径就可以
前台数据传送如上图中的tbCode数据模型,在前台采用tbCode.xxx方式就可以把值传到对应的模型中,和sturts2一样。
大休说了一下框架的,下一步我将根据源码,一步一步讲解框架,并最终把项目贡献出来,在条件允许的情况上并尽可能的带上一个已经完成的项目,希望能让初学者有一定的帮助,也希望大家对框架提一些改地的意见,下一篇是流程分析,有空在写。