终于进入正题了,本章起开始介绍最简单的请求路由机制,也就是将请求路由到开发者自己写的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");
  }