1 2 3 4 5 6 7 8 | public abstract class TemplateFactory { private static TemplateFactory instance; public static TemplateFactory getTemplateFactory() { return instance; } public abstract Template loadTemplate(String path) throws Exception; } |
1 2 3 4 | public interface Template { void render(HttpServletRequest request, HttpServletResponse response, Map<String, Object> model) throws Exception; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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."); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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); } } |
1 2 3 4 | <html> <head><title>${title}</title></head> <body><h1>Hello, ${name}!</body> </html> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | public class TemplateRenderer extends Renderer { private String path; private Map<String, Object> model; public TemplateRenderer(String path, Map<String, Object> model) { this.path = path; this.model = model; } @Override public void render(ServletContext context, HttpServletRequest request, HttpServletResponse response) throws Exception { TemplateFactory.getTemplateFactory() .loadTemplate(path) .render(request, response, model); } } |
1 2 3 4 5 6 7 8 | <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.expressme.webwind.DispatcherServlet</servlet-class> <init-param> <param-name>template</param-name> <param-value>Velocity</param-value> </init-param> </servlet> |
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |