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

设计 REST 风格的 MVC 框架

 2010-01-08 00:00:00 来源:WEB开发网   
核心提示: 请注意,Java 字符串需要两个连续的“\\”表示正则表达式中的转义字符“\”,设计 REST 风格的 MVC 框架(6),将“/”排除在变量匹配之外可以避免很多歧义,调用一个实例方法则由 Action 类表示,若匹配成功,

请注意,Java 字符串需要两个连续的“\\”表示正则表达式中的转义字符“\”。将“/”排除在变量匹配之外可以避免很多歧义。

调用一个实例方法则由 Action 类表示,它持有类实例、方法引用和方法参数类型,代码见清单 6。


清单 6. 定义 Action
class Action { 
  public final Object instance; 
  public final Method method; 
  public final Class<?>[] arguments; 
 
  public Action(Object instance, Method method) { 
    this.instance = instance; 
    this.method = method; 
    this.arguments = method.getParameterTypes(); 
  } 
} 

负责请求转发的 Dispatcher 通过关联 UrlMatcher 与 Action,就可以匹配到合适的 URL,并转发给相应的 Action,代码见清单 7。


清单 7. 定义 Dispatcher
class Dispatcher { 
  private UrlMatcher[] urlMatchers; 
  private Map<UrlMatcher, Action> urlMap = new HashMap<UrlMatcher, Action>(); 
  .... 
} 

当 Dispatcher 接收到一个 URL 请求时,遍历所有的 UrlMatcher,找到第一个匹配 URL 的 UrlMatcher,并从 URL 中提取方法参数,代码见清单 8。


清单 8. 匹配并从 URL 中提取参数
final class UrlMatcher { 
  ... 
 
  /** 
   * 根据正则表达式匹配 URL,若匹配成功,返回从 URL 中提取的参数, 
   * 若匹配失败,返回 null 
   */ 
  public String[] getMatchedParameters(String url) { 
    Matcher m = pattern.matcher(url); 
    if (!m.matches()) 
      return null; 
    if (orders.length==0) 
      return EMPTY_STRINGS; 
    String[] params = new String[orders.length]; 
    for (int i=0; i<orders.length; i++) { 
      params[orders[i]] = m.group(i+1); 
    } 
    return params; 
  } 
} 

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

Tags:设计 REST 风格

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