快速业务通道

设计REST风格的MVC框架 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
   } }

处理静态文件时要过滤 /WEB-INF/ 目录,否则将造成安全漏洞。

设计REST风格的MVC框架(6)

时间:2011-06-01 IBM 廖雪峰

集成模板引擎

作为示例,返回一个“<h1>Hello, world!</h1>”作为 HTML 页面非常容易。然而,实际应用的页面通常是极其复杂的,需要一个模板引擎来 渲染出 HTML。可以把 JSP 看作是一种模板,只要不在 JSP 页面中编写复杂的 Java 代码。我们的设计目标是实现对 JSP 和 Velocity 这两种模板的支持。

和集成 IoC 框架类似,我们需要解耦 MVC 与模板系统,因此, TemplateFactory 用于初始化模板引擎,并返回 Template 模板对象。 TemplateFactory 定义见清单 11。

清单 11. 定义 TemplateFactory

public abstract class  TemplateFactory {    private static TemplateFactory instance;    public static TemplateFactory getTemplateFactory() {      return instance;    }    public abstract Template loadTemplate(String path) throws  Exception; }

Template 接口则实现真正的渲染任务。定义见清单 12。

清单 12. 定义 Template

public interface Template {    void render(HttpServletRequest request, HttpServletResponse  response,      Map<String, Object> model) throws Exception; }

以 JSP 为例,实现 JspTemplateFactory 非常容易。代码见清单 13。

清单 13. 定义 JspTemplateFactory

public class  JspTemplateFactory extends TemplateFactory {    private Log log = LogFactory.getLog(getClass());    public Template loadTemplate(String path) throws Exception  {      if (log.isDebugEnabled())        log.debug("Load JSP template ''" + path +  "''.");      return new JspTemplate(path);    }    public void init(Config config) {      log.info("JspTemplateFactory init ok.");    } }

JspTemplate 用于渲染页面,只需要传入 JSP 的路径,将 Model 绑定到 HttpServletRequest,就可以调用 Servlet 规范的 forward 方法将请求转发给 指定的 JSP 页面并渲染。代码见清单 14。

清单 14. 定义 JspTemplate

public class JspTemplate  implements Template {    private String path;    public JspTemplate(String path) {      this.path = path;    }    public void render(HttpServletRequest request,  HttpServletResponse response,        Map<String, Object> model) throws Exception  {      Set<String> keys = model.keySet();      for (String key : keys) {        request.setAttribute(key, model.get(key));      }      request.getRequestDispatcher(path).forward(request,  response);    } }

设计REST风格的MVC框架(7)

时间:2011-06-01 IBM 廖雪峰

另一种比 JSP 更加简单且灵活的模板引擎是 Velocity,它使用更简洁的语 法来渲染页面,对页面设计人员更加友好,并且完全阻止了开发人员试图在页面 中编写 Java 代码的可能性。使用 Velocity 编写的页面示例如清单 15 所示。

清单 15. Velocity 模板页面

<html>    <head><title>${title}</title></head>    <body><h1>Hello, ${name}!</body> </html>

通过 VelocityTemplateFactory 和 VelocityTemplate 就可以实现对

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号