MVC模式,M(Model)是指数据模型,V(view)是指用户界面,C(controller)则是控制器
其中:
a) 视图主要是用户看到并与之交互的界面。通俗来讲由Html、jsp、php、asp、velocity 等语言组件来解析显示
b) 控制器接受用户的输入并调用模型和视图去完成用户的需求,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据
c) 模型表示企业数据和业务规则,其拥有最多的处理任务。
其中模型这块在整个分层中起着至关重要的作用,因为它涉及了整个数据的业务逻辑处理、数据组装、数据存储等重要步骤,粗略来讲整个后台代码(action-biz-dal)都是为model来服务的。
public interface Result extends Serializable { /** 在models表中代表默认的model的key。 */ String DEFAULT_MODEL_KEY = "_defaultModel"; /** * 请求是否成功。 * * @return 如果成功,则返回<code>true</code> */ boolean isSuccess(); /** * 设置请求成功标志。 * * @param success 成功标志 */ void setSuccess(boolean success); /** * 取得结果代码。 * * @return 结果代码 */ ResultCode getResultCode(); /** * 设置结果代码。 * * @param resultCode 结果代码 */ void setResultCode(ResultCode resultCode); /** * 取得默认model对象的key。 * * @return 默认model对象的key */ String getDefaultModelKey(); /** * 取得model对象。 * * <p> * 此调用相当于<code>getModels().get(getDefaultModelKey())</code>。 * </p> * * @return model对象 */ Object getDefaultModel(); /** * 设置model对象。 * * <p> * 此调用相当于<code>getModels().put(DEFAULT_MODEL_KEY, model)</code>。 * </p> * * @param model model对象 */ void setDefaultModel(Object model); /** * 设置model对象。 * * <p> * 此调用相当于<code>getModels().put(key, model)</code>。 * </p> * * @param key 字符串key * @param model model对象 */ void setDefaultModel(String key, Object model); /** * 取得所有model对象。 * * @return model对象表 */ Map getModels(); }
public class ResultSupport implements Result { private static final long serialVersionUID = 3976733653567025460L; private boolean success = true; private ResultCode resultCode; private Map models = new HashMap(4); private String defaultModelKey; /** * 创建一个result。 */ public ResultSupport() { } /** * 创建一个result。 * * @param success 是否成功 */ public ResultSupport(boolean success) { this.success = success; } /** * 创建一个result。 * * @param success 是否成功 */ public ResultSupport(boolean success, ResultCode resultCode) { this.success = success; this.resultCode = resultCode; } /** * 请求是否成功。 * * @return 如果成功,则返回<code>true</code> */ public boolean isSuccess() { return success; } /** * 设置请求成功标志。 * * @param success 成功标志 */ public void setSuccess(boolean success) { this.success = success; } /** * 取得结果代码。 * * @return 结果代码 */ public ResultCode getResultCode() { return resultCode; } /** * 设置结果代码。 * * @param resultCode 结果代码 */ public void setResultCode(ResultCode resultCode) { this.resultCode = resultCode; } /** * 取得默认model对象的key。 * * @return 默认model对象的key */ public String getDefaultModelKey() { return StringUtil.defaultIfEmpty(defaultModelKey, DEFAULT_MODEL_KEY); } /** * 取得model对象。 * * <p> * 此调用相当于<code>getModels().get(DEFAULT_MODEL_KEY)</code>。 * </p> * * @return model对象 */ public Object getDefaultModel() { return models.get(getDefaultModelKey()); } /** * 设置model对象。 * * <p> * 此调用相当于<code>getModels().put(DEFAULT_MODEL_KEY, model)</code>。 * </p> * * @param model model对象 */ public void setDefaultModel(Object model) { setDefaultModel(DEFAULT_MODEL_KEY, model); } /** * 设置model对象。 * * <p> * 此调用相当于<code>getModels().put(key, model)</code>。 * </p> * * @param key 字符串key * @param model model对象 */ public void setDefaultModel(String key, Object model) { defaultModelKey = StringUtil.defaultIfEmpty(key, DEFAULT_MODEL_KEY); models.put(key, model); } /** * 取得所有model对象。 * * @return model对象表 */ public Map getModels() { return models; } /** * 转换成字符串的表示。 * * @return 字符串表示 */ public String toString() { StringBuffer buffer = new StringBuffer(); buffer.append("Result {\n"); buffer.append(" success = ").append(success).append(",\n"); buffer.append(" resultCode = ").append(resultCode).append(",\n"); buffer.append(" models = {"); if (models.isEmpty()) { buffer.append("}\n"); } else { buffer.append("\n"); for (Iterator i = models.entrySet().iterator(); i.hasNext();) { Map.Entry entry = (Map.Entry) i.next(); Object key = entry.getKey(); Object value = entry.getValue(); buffer.append(" ").append(key).append(" = "); if (value != null) { buffer.append("(").append(ClassUtil.getClassNameForObject(value)).append(") "); } buffer.append(value); if (i.hasNext()) { buffer.append(","); } buffer.append("\n"); } buffer.append(" }\n"); } buffer.append("}"); return buffer.toString(); }
if (result.isSuccess()) { context.put("keyA", result.getModels().get("key1")); } else { context.put("errorMsg", result.getResultCode().getMessage()); //定义的错误信息 }