Dorado 7 : DoradoContext(SEUG)

简介

DoradoContext是Dorado的上下文对象,在DoradoContext中,将上下文作用域区分为四种类型,分别为:

作用范围说明
VIEWDorado的视图作用域
REQUEST等同于HttpServletRequest
SESSION等同于HttpSession
APPLICATION等同于ServletContext

作用域中的数据存取

通过DoradoContext提供的相关方法我们可以存取相关作用域下的属性,这些方法有:

 

public Object getAttribute(String scope, String key);
public void setAttribute(String scope, String key, Object value);
public void removeAttribute(String scope, String key);

例如我们可以通过以下代码访问HttpSession中的值:

DoradoContext context = DoradoContext.getCurrent();
String username = context.getAttribute(DoradoContext.SESSION, "username");

通过以下代码访问ServletContext中某一个attribute的值

DoradoContext context = DoradoContext.getCurrent();
Object securityData = context.getAttribute(DoradoContext.APPLICATION, "securityData");

当然了除了可以通过getAttribute获取指定作用域中的值,你也可以用setAttribute方法设置指定作用域指定属性的值,范例代码如: 

public void authorization(String username, String password) throws Exception{
	if (StringUtils.isNotEmpty(username) && StringUtils.isNotEmpty(password)){
		DoradoContext context = DoradoContext.getCurrent();
		context.setAttribute(DoradoContext.SESSION, "username", username);
	}else{
		throw new Exception("用户名和密码不能为空!");		
	}
}

另外也提供了不指定作用域的相关方法,有:

public Object getAttribute(String key);

在获取上下文对象的时候如果你不指定作用域的时候,如:

DoradoContext context = DoradoContext.getCurrent();
String username = context.getAttribute("username");

DoradoContext会依照如下的顺序挨个到不同的作用域中查找是否有指定的属性,如果找到就直接返回,不再继续查找:

作用域顺序
REQUEST1
VIEW2
SESSION3
APPLICATION4

关于VIEW作用域

VIEW作用域的数据可以在Dorado的AJAX请求中自动在客户端和服务器端同步。例如:你可以在Ajax请求中在服务器端设置变量,并在Ajax请求结束后,在客户端获取这个变量的值。

客户端JS获取Context中VIEW作用域的变量,参考代码:

var username = view.get("context").get("username");

其它相关方法

//获取Spring中的ApplicationContext
public ApplicationContext getApplicationContext()
//获取Spring中的WebApplicationContext 
public WebApplicationContext getWebApplicationContext()
//获取当前web请求的ServletContext
public static ServletContext getServletContext()
//获取当前线程绑定的HttpServletRequest
public static HttpServletRequest getRequest()