设计REST风格的MVC框架 - 编程入门网
n {
if(index==interceptors.length)
result = execution.execute();
else {
// must update index first, otherwise will cause stack overflow:
index++;
interceptors[index-1].intercept(execution, this);
}
}
}
设计REST风格的MVC框架(9)时间:2011-06-01 IBM 廖雪峰成员变量 index 表示当前链上的第 N 个拦截器,当最后一个拦截器被调用 后,InterceptorChain 才真正调用 Execution 对象的 execute() 方法,并保 存其返回结果,整个请求处理过程结束,进入渲染阶段。清单 21 演示了如何调 用拦截器链的代码。 清单 21. 调用拦截器链
当 Controller 方法被调用完毕后,handleResult() 方法用于处理执行结果 。 渲染 由于我们没有强制 HTTP 处理方法的返回类型,因此,handleResult() 方法 针对不同的返回值将做不同的处理。代码如清单 22 所示。 清单 22. 处理返回值
设计REST风格的MVC框架(10)时间:2011-06-01 IBM 廖雪峰如果返回 null,则认为 HTTP 请求已处理完成,不做任何处理;如果返回 Renderer,则调用 Renderer 对象的 render() 方法渲染视图;如果返回 String,则根据前缀是否有“redirect:”判断是重定向还是作为 HTML 返回给 浏览器。这样,客户端可以不必访问 HttpServletResponse 对象就可以非常方 便地实现重定向。代码如清单 23 所示。 清单 23. 重定向
扩展 Renderer 还可以处理更多的格式,例如,向浏览器返回 JavaScript 代码等。 扩展 使用 Filter 转发 对于请求转发,除了使用 DispatcherServlet 外,还可以使用 Filter 来拦 截所有请求,并直接在 Filter 内实现请求转发和处 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |