学习目标:
1、掌握MVC三层架构的思想
2、了解自定义MVC三层框架的思路
学习过程:
在学习MVC框架之前,让我们先尝试自定义一个MVC三层框架,这样对我们理解什么是MVC三层框架和理解MVC框架都是很有帮助的。首先让我们看看原始的使用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(){
}
}
只有想不到,没有做不到的。这个想法应该是可以实现的。
二、我们的设计思路
下面我们就简单说说我们的实现思路,参考下图:
直接从一个request请求到后台的代码是不可能的,所以我们需要一个中转站(其实就是一个servlet)。这个中转站将会担任最核心的功能,它的功能如下:
1、读取配置文件信息
2、获得用户的url
3、根据url从配置文件获得对应action和method
4、执行Action和method
5、根据返回值跳去其他页面