设计REST风格的MVC框架 - 编程入门网
Servlet,当一个 URL 没有匹配到任何 Servlet 时,就匹配 默认的 Servlet。一个 Web 应用程序如果没有映射默认的 Servlet,Web 服务 器会自动为 Web 应用程序添加一个默认的 Servlet。
REST 风格的 URL 一般不含后缀,我们只能将 DispatcherServlet 映射到“ /”,使之变为一个默认的 Servlet,这样,就可以对任意的 URL 进行处理。 由于无法像 Struts 等传统的 MVC 框架根据后缀直接将一个 URL 映射到一 个 Controller,我们必须依次匹配每个有能力处理 HTTP 请求的 @Mapping 方 法。完整的 HTTP 请求处理流程如图 1 所示。 图 1. 请求处理流程 当扫描到标记有 @Mapping 注解的方法时,需要首先检查 URL 与方法参数是 否匹配,UrlMatcher 用于将 @Mapping 中包含 $1、$2 ……的字符串变为正则 表达式,进行预编译,并检查参数个数是否符合方法参数,代码见清单 5。 清单 5. 定义 UrlMatcher
设计REST风格的MVC框架(4)时间:2011-06-01 IBM 廖雪峰将 @Mapping 中包含 $1、$2 ……的字符串变为正则表达式的转换规则是, 依次将每个 $n 替换为 ([^\\/]*),其余部分作精确匹配。例如,“/blog/$1/ $2”变化后的正则表达式为: ^\\/blog\\/([^\\/]*)\\/([^\\/]*)$ 请注意,Java 字符串需要两个连续的“\\”表示正则表达式中的转义字符“ \”。将“/”排除在变量匹配之外可以避免很多歧义。 调用一个实例方法则由 Action 类表示,它持有类实例、方法引用和方法参 数类型,代码见清单 6。 清单 6. 定义 Action
负责请求转发的 Dispatcher 通过关联 UrlMatcher 与 Action,就可以匹配 到合适的 URL,并转发给相应的 Action,代码见清单 7。 清单 7. 定义 Dispatcher
当 Dispatcher 接收到一个 URL 请求时,遍历所有的 UrlMatcher,找到第 一个匹配 URL 的 UrlMatcher,并从 URL 中提取方法参数,代码见清单 8。 清单 8. 匹配并从 URL 中提取参数
设计REST风格的MVC框架(5)时间:2011-06-01 IBM 廖雪峰根据 URL 找到匹配的 Action 后,就可以构造一个 Exe |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |