今天的任务:通过XML对自定义mvc框架进行增强
1、 将Action的信息配置到xml(反射实例化)
2 、通过结果码控制页面的跳转
3 、将一组相关的操作放到一个Action中(反射调用方法)
4 、利用ModelDriver接口对Java对象进行赋值(反射读写方法)
5、 使得框架的配置文件可变
下面进行对昨天加减乘除案例进行增强:
所需jar包:
核心代码如下:
模型驱动接口 ModelDriven.java:
package com.liyi.framework;
/**
* 模型驱动接口
* 是用来处理jsp页面传递过来的参数,将所有的参数自动封装到实体类T中
* @author 224李毅
* @param <T>
*/
public interface ModelDriven<T> {
T getModel();
}
主控制器DispatcherServlet.java:
package com.liyi.framework;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
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;
import org.dom4j.DocumentException;
/**
* 主控制器
* @author 224李毅
*
*/
public class DispatcherServlet extends HttpServlet{
private static final long serialVersionUID = -7500451840558220628L;
private ConfigModel configModel = null;
public void init() {
try {
//将原有的读取框架的默认配置文件转变成读取可配置路径的配置文件
String xmlPath = this.getInitParameter("xmlPath");
if(xmlPath==null||"".equals(xmlPath)) {
configModel = ConfigModelFactory.newInstance();
}
else {
configModel = ConfigModelFactory.newInstance(xmlPath);
}
} catch (DocumentException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws Serv