从零开始手写WebMVC框架 第1章September 15, 2015
终于进入正题了,本章起开始介绍最简单的请求路由机制,也就是将请求路由到开发者自己写的Controller中
首先请读者们站在使用Mocha(还记得么,这个WebMVC的名字)的开发者的角度,先想象一下用最基本的方式使用Mocha需要进行怎样的配置,编写怎样的代码呢?
[more]
从博主个人的理解,作为WebMVC的核心,就是配置一个个请求的处理方式,针对符合指定条件的请求配置后续的处理方式。也就是告诉框架“用户请求xxx地址的时候,用YYY类的zzz方法来处理”
对于前者,也就是条件的匹配,我们本着简单的原则首先匹配url地址和请求方法。
////
接口
RouteConfig.java
package com.cirnoworks.mvc;
public interface RouteConfig {
RouteConfig with(Class<? extends Controller> controller, String method);
}
RouteConfigImpl.java
package com.cirnoworks.mvc;
class RouteConfigImpl implements RouteConfig {
public RouteConfigImpl(String pattern, String method) {
}
@Override
public RouteConfig with(Class<? extends Controller> controller, String method) {
return this;
}
}
之前说过,我们要通过一种DSL 语言*来实现对DispatcherServlet的配置,Mocha通过serve和with两个关键字来表示最基本的条件的匹配,和路由的目标。写出来的话大概就是这个样子的:
public void configure(){
// 用HelloController的hello方法来响应/hello路径的GET请求
serve("/hello", "GET").with(HelloController.class, "hello1");
// 用HelloController的hello2方法来响应/hello/post路径的POST请求
serve("/hello/post", "POST").with(HelloController.class, "hello2");
// 用HelloController的hello3方法来响应/hello/all路径,不限请求种类
serve("/hello/all").with(HelloController.class, "hello3");
// 用HelloController的hello4方法来响应/hello/*路径,不限请求种类
serve("/hello/.*").with(HelloController.class, "hello4");
}