6、Eternal框架-渲染者

渲染者JspRenderer.java完成视图的选择和把数据放入作用域。

package cn.eternal.renderer;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class JspRenderer extends Renderer {

    private String path;
    private Map<String, Object> model;
    protected String contentType;

    public String getContentType() {
        return contentType;
    }
    public void setContentType(String contentType) {
        this.contentType = contentType;
    }
    public JspRenderer(String path) {
        this.path = path;
        this.model = new HashMap<String, Object>();
    }

    public JspRenderer(String path, Map<String, Object> model) {
        this.path = path;
        this.model = model;
    }

    public JspRenderer(String path, String modelKey, Object modelValue) {
        this.path = path;
        this.model = new HashMap<String, Object>();
        this.model.put(modelKey, modelValue);
    }
    @Override
    public void render(ServletContext context, HttpServletRequest request, HttpServletResponse response) throws Exception {
        Set<String> keys = model.keySet();
        for (String key : keys) {
            request.setAttribute(key, model.get(key));
        }
        request.getRequestDispatcher(path).forward(request, response);
    }
}

你可能感兴趣的:(框架,mvc,servlet,action,控制器)