当前位置: 首页 > 图文教程 > 网络编程 > JSP > java设计模式之Memento

JSP
Apache+Servlet+Jsp环境设置(中)
Apache+Servlet+Jsp环境设置(下)
基于EJB技术的商务预订系统的开发
让JSP页面过期, 保证每次JSP页面都是最新的.
JSP发送邮件实例
也谈用JSP实现新郎、sohu新闻系统的技术。
JSP抓取网页代码的程序
JSP应用的安全问题
将TOMCAT装入IIS全攻略
通过JDBC连接oracle数据库的十大技巧
JSP安全性初探
JSP漏洞大观
关于JSP中文问题的解决方法
JSP/JAVABEAN+TOMCAT4.0.5+MYSQL组合建站总结
WIN2000+PHP+MYSQL+TOMCAT+JSP完全整合安装手册
jsp连接数据库大全
用JSP下载word文件(不会直接用IE打开)
几则JSP入门知识总结
JSP迅速入门
Jsp如何实现网页的重定向

JSP 中的 java设计模式之Memento


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-03   浏览: 86 ::
收藏到网摘: n/a

Memento定义:
memento是一个保存另外一个对象内部状态拷贝的对象.这样以后就可以将该对象恢复到原先保存的状态.

Memento模式相对也比较好理解,我们看下列代码:

public class Originator { 

   private int number;
  private File file = null;

  public Originator(){}

  // 创建一个Memento
  public Memento getMemento(){
    return new Memento(this);
  }

  // 恢复到原始值
  public void setMemento(Memento m){
     number = m.number;
     file = m.file;
  }

}




我们再看看Memento类:

private class Memento implements java.io.Serializable{

  private int number;

  private File file = null;

  public Memento( Originator o){

    number = o.number;
    file = o.file;

  }

}





可见 Memento中保存了Originator中的number和file的值. 通过调用Originator中number和file值改变的话,通过调用setMemento()方法可以恢复.

Memento模式的缺点是耗费大,如果内部状态很多,再保存一份,无意要浪费大量内存.

Memento模式在Jsp+Javabean中的应用
在Jsp应用中,我们通常有很多表单要求用户输入,比如用户注册,需要输入姓名和Email等, 如果一些表项用户没有填写或者填写错误,我们希望在用户按"提交Submit"后,通过Jsp程序检查,发现确实有未填写项目,则在该项目下红字显示警告或错误,同时,还要显示用户刚才已经输入的表项.

如下图中 First Name是用户已经输入,Last Name没有输入,我们则提示红字警告.:


image这种技术的实现,就是利用了Javabean的scope="request"或scope="session"特性,也就是Memento模式.

具体示例和代码见 JavaWorld的英文原文 , Javabean表单输入特性参见我的另外一篇文章.