1.什么是mvc?
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,
它是一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码。
2. MVC结构
V : jsp/ios/android
C :servlet/action
M : 实体域模型(名词)、过程域模型(动词)
MVC核心思想:各司其职。
注意:不能跨层调用,只能出现由上而下的调用
3.自定义MVC原理图
4.自定义MVC框架优化
1、将Action的信息配置到xml(反射实例化)
2、通过结果码控制页面的跳转
3、将一组相关的操作放到一个Action中(反射调用方法)
4、利用ModelDriver接口对Java对象进行赋值(反射读写方法)
5、使得框架的配置文件可变
中央控制器的类(ActionServlet)
package com.zking.mvc.framework;
import java.io.IOException;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.BeanUtils;
/**
* 主控制
* @author 29605
*
*/
public class ActionServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private ConfigModel configModel;
//xml
private String path = "/config.xml";
@Override
public void init() throws ServletException {
String path = getInitParameter("config");
if(null!=path) {
configModel = ConfigModelFactory.createConfigModel(path);
}else {
configModel = ConfigModelFactory.createConfigModel(this.path);
}
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//路径
String servletpath = req.getServletPath();
//截取
int end = servletpath.indexOf(".action");
String pathName = servletpath.substring(0, end);
ActionModel actionModel = this.getActionModel(pathName);
Action action = this.createAction(actionModel.getType());
this.processModelDriver(action, req);
String code = action.execute(req, resp);
this.processCode(actionModel, code, req, resp);
}
/**
* ͨgetActionModel
* @param pathName
* @return
*/
private ActionModel getActionModel(String pathName) {
return configModel.get(pathName);
}
/**
* createAction
* @param type
* @return
*/
private Action createAction(String type) {
try {
Class c = Class.