WEB开发网
开发学院软件开发Java 设计 REST 风格的 MVC 框架 阅读

设计 REST 风格的 MVC 框架

 2010-01-08 00:00:00 来源:WEB开发网   
核心提示: /:匹配默认的 Servlet,当一个 URL 没有匹配到任何 Servlet 时,设计 REST 风格的 MVC 框架(5),就匹配默认的 Servlet,一个 Web 应用程序如果没有映射默认的 Servlet,依次将每个 $n 替换为 ([^\\/]*),其余部分作精确匹配,Web 服务器

/:匹配默认的 Servlet,当一个 URL 没有匹配到任何 Servlet 时,就匹配默认的 Servlet。一个 Web 应用程序如果没有映射默认的 Servlet,Web 服务器会自动为 Web 应用程序添加一个默认的 Servlet。

REST 风格的 URL 一般不含后缀,我们只能将 DispatcherServlet 映射到“/”,使之变为一个默认的 Servlet,这样,就可以对任意的 URL 进行处理。

由于无法像 Struts 等传统的 MVC 框架根据后缀直接将一个 URL 映射到一个 Controller,我们必须依次匹配每个有能力处理 HTTP 请求的 @Mapping 方法。完整的 HTTP 请求处理流程如图 1 所示。


图 1. 请求处理流程
设计 REST 风格的 MVC 框架

当扫描到标记有 @Mapping 注解的方法时,需要首先检查 URL 与方法参数是否匹配,UrlMatcher 用于将 @Mapping 中包含 $1、$2 ……的字符串变为正则表达式,进行预编译,并检查参数个数是否符合方法参数,代码见清单 5。


清单 5. 定义 UrlMatcher
final class UrlMatcher { 
  final String url; 
  int[] orders; 
  Pattern pattern; 
 
  public UrlMatcher(String url) { 
    ... 
  } 
} 

将 @Mapping 中包含 $1、$2 ……的字符串变为正则表达式的转换规则是,依次将每个 $n 替换为 ([^\\/]*),其余部分作精确匹配。例如,“/blog/$1/$2”变化后的正则表达式为:

 ^\\/blog\\/([^\\/]*)\\/([^\\/]*)$ 

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:设计 REST 风格

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接