上回实现了一个简易的Spring,那就顺便实现一些SpringMVC吧。由于有了上回的基础,这回实现比较快,晚饭前架构了一下,一晚上就写得差不多了。自己实现的架构比较简单,下面简单介绍一下。
源码下载:http://download.csdn.net/detail/jobsandczj/9844308
实现思路及工作流程:
定义一个DispatcherServlet,用来做请求入口。初始化时,去读取配置文件,获得Controller的包,然后“注入”Controller。SpringMVC它本身是有自己的IoC容器的,用来注入Controller以及它的组件,但IoC我在Spring里玩过了,这回就没有写依赖注入。但完事后发现其实也没省多少功夫,终归还是要扫包,解析的。
得到Controller后就构建Handler。让每个Handler与一个请求路径对应,我只定义了两种类型的Handler,一个是处理页面转发的,一个是返回Json数据的。每种Handler都有它的适配器,这就让Controller的方法设置参数少了很多约束,只要是request,response,session这仨家伙就行。
最后初始化适配器列表,以便在接收到请求后适配。
下面是Handler抽象类:
package MySpringMVC.springmvc;
import java.lang.reflect.Method;
/**
* Created by 10033 on 2017/5/16.
*/
public abstract class Handler {
protected Method method;
protected Object controller;
protected Class[] params;
protected RequestMethod requestMethod;
public Handler(Method method, Object controller, Class[] params, RequestMethod requestMethod) {
this.method = method;
this.controller = controller;
this.params = params;
this.requestMethod = requestMethod;
}
public Method getMethod() {
return method;
}
public void setMethod(Method method) {