自定义MVC三层框架思路

发表时间:2017-05-16 15:39:21 浏览量( 87 ) 留言数( 0 )

学习目标:

1、掌握MVC三层架构的思想

2、了解自定义MVC三层框架的思路


学习过程:

在学习struts2之前,让我们先尝试自定义一个MVC三层框架,这样对我们理解什么是MVC三层框架和理解struts2都是很有帮助的。首先让我们看看原始的使用servlet有什么缺点

1、每一个servlet都只能在doget或者dopost方法中处理业务,业务一旦复杂,那么doget方法中的处理代码就会非常多。

2、每个servlet都必须修改web.xml配置文件。使得web.xml变得越来越难维护,而且增大了出错的几率。

3、本身servlet就不是一个为MVC设计的技术,所以使用servlet并不能很好的体现MVC的思想。

所以我们需要更专业的MVC框架。越是很多人对servlet进行封装,很多MVC框架出现了,其中比较出名的就是struts2,spring mvc等等,这里我们先自己设计一个。

一、我们的目标

我们的数据库访问层(dao层),每一个业务逻辑都是一个方法,这样的代码模块块比较好,也容易维护,但是我们servlet的只有doget和dopost的方法,经常有很业务逻辑都是写在一起的。代码如下:

dao层的代码:

/**
 * dao 的实现类
 */
public class GoodsTypesDao {
	/**
	 * 添加类别
	 * 
	 * @param goodsTypes
	 * @return
	 */
	public int addTypes(GoodsTypes goodsTypes) {
		return 0;
	}

	/**
	 * 删除
	 * 
	 * @param id
	 * @return
	 */
	public int delTypes(int id) {
		return 0;
	}

	/**
	 * 查询
	 * 
	 * @return
	 */
	public List<GoodsTypes> getAllTypes() {
		return null;
	}

}


那我们的控制层的代码是否可以像dao层的代码一样呢?比如我们现在使用一个新的action包,防止我们的控制层代码

/**
 * 控制层
 * 
 * @author Administrator
 * 
 */
public class GoodsTypesAction {
// 遍历商品类别
    public void listGoodsTypes() {
        // 1、获得页面的输入
        // 2、调用业务逻辑
        // 3、返回数据
        // 添加商品类别
    }
    //添加商品
    public void addGoodsTypes() {
    }
    //删除商品
    public void delGoodsTypes(){
    }
}

只有想不到,没有做不到的。这个想法应该是可以实现的。

二、我们的设计思路

下面我们就简单说说我们的实现思路,参考下图:

attcontent/34af47af-7a4b-4e2c-a22c-d6c76603d7bd.png

直接从一个request请求到后台的代码是不可能的,所以我们需要一个中转站(其实就是一个servlet)。这个中转站将会担任最核心的功能,它的功能如下:

1、读取配置文件信息

2、获得用户的url

3、根据url从配置文件获得对应action和method

4、执行Action和method

5、根据返回值跳去其他页面