设计java

j2ee轻量级框架,IMVC,IORM && web网络游戏

IMVC 核心接口介绍

    IMVC(InstantMVC简称)有几个比较核心的接口,通过对这几个接口的了解,可以更深入的了解IMVC到核心机制。
1.IAction接口
   action是整个MVC的核心,如果了解struts或者webwork等MVC框架的朋友应该 知道,action是一个用户处理模块,当MVC容器接受到一个请求的时候,他会通过一定的方法获得一个相应的action类,然后执行action类中 相应的方法,最后返回一个视图给客户端,这就是最普通的mvc框架的流程。和其他框架的action类似,IMVC的action接口也有一个核心方法, 如下
public interface IAction {
    
/**
     * 属性介绍:验证器,放入Map value 的key
     
*/
    
public static final String MVC_STATIC_validation="__validation";
    
/**
     * 属性介绍:文件上传 Map value中的key
     
*/
    
public static final String MVC_STATIC_createUpload="__createUpload";
    
/**
     * 属性介绍:这是编辑器
     
*/
    
public static final String MVC_STATIC_editor="__editor";
    
/**
     * 方法说明:action的核心方法
& nbsp;    * 
< span style="color: #808080;">@param object 如果是post方法,object就 是该action对应的form,如果是get方法并且配置get方法没有form
     * 那么这里就是null,如果配置get方法也是有form的,这里也是form
     * 
& nbsp;    * 
< span style="color: #808080;">@param value  一个map,在 action中添加内容到view都往这里添加
     * 
@return 
     * String
     
*/
    
public View execute(Object object,Value value);
}
前 面三个变量这里暂时不说,我们来关注最后一个方法,execute,任何action都需要实现这个接口,同时也就是说必须在action中有这个方法。 这个方法有两个传入变量Object和Value,第一个是想要的formBean,如果是get方法并且没有配置get方法设置form,那么这个时候 就是null,如果是非get方法,而且还传入了参数,那么IMVC会自动封装相应的form传入到这个。第二个Value参数,Value也是一个很核 心的接口。在IMVC中有ValueImpl类来实现。

Value 接口:
public interface Value {
    
public String getString(String key);
    
public String[] getArray(String key);
    
public void setObject(String key,Object value);
    
public Object getObject(String key);
}

ValueImpl 类:
public final class ValueImpl extends HashMap  implements Map,Value,InstantValue{
    
//InstantValue
    public void setArray(String key ,String[] arr){
        
super.put(key, arr);
    }
    
//user Value
    public String[] getArray(String key) {
        
return (String[])super.get(key);
    }
    
public Object getObject(String key) {
        
return super.get(key);
    }
    
public String getString(String key) {
        Object o
=super.get(key);
        
if(o==null){
            
return null;
        }
        
if(o instanceof String[]){
            
return ((String[])o)[0];
        }
else{
            
return null;
        }
    }
    
public void setObject(String key, Object value) {
        
super.put(key, value);
    }
 
// 以下实现clone。。提供性能
    private ValueImpl cloneBase(){
        ValueImpl vimpl
=(ValueImpl) super.clone();
        vimpl.clear();
        
return vimpl;
    }
    
public static ValueImpl valueImpl=new ValueImpl();
    
public static ValueImpl cloneSelf(){
        
return valueImpl.cloneBase();
    }
}
这个类也相当简单,我们看第一句:
public final class ValueImpl extends HashMap  implements Map,Value,InstantValue
说 明这个类 继承了HashMap,实现了Map,Value,InstantValue 三个接口。这三个接口其实就是三个权限版本,比如Value是用 户操作权限,我们看到在action中传入的是Value,但是在IMVC内部操作的时候是把ValueImpl类转换为InstantValue借口的

InstantValue 接口:
public interface InstantValue {
    
public void setArray(String key,String[] value);
}
这个几口只有一个方法,这个方法是不会暴露给用户的,是提供IMVC内部设值用的。
下面还有一个拦截器接口
IInerceptor 拦截器接口:
public interface IInterceptor {
    
public void execute(HttpServletRequest request,HttpServletResponse response,Value value);
}
这个接口也相当简单,只有一个方法,传入request和response参数,同时还有一个Value参数,这个Value上面已经说过,是一个用户操作的数据接口。

整个IMVC流程图简单来说如下:


   首先,请求来了后,IMVC会创建一个ValueImp转换为Value传给前拦截器(如果没有设 置就不用),拦截器操作完毕,在把这个ValueImp转换为InstantValue接口传给IMVC内部操作,操作完毕接着把它转化为Value接口 供用户Action操作,最后执行后拦截器,执行完毕转换为Map借口供模板引擎渲染试图。
    一个ValueImp要转换为三种权限接口,所以他的实现就要implements 三个接口。



--InstantMVC:j2ee轻量级mvc框架

posted on 2008-06-10 16:30 刹那 阅读(418) 评论(0)  编辑  收藏 所属分类: 我的j2ee轻量级框架


只有注册用户登录后才能发表评论。


网站导航: