简介
DoradoContext是Dorado的上下文对象,在DoradoContext中,将上下文作用域区分为四种类型,分别为:
作用范围 | 说明 |
---|---|
VIEW | Dorado的视图作用域 |
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会依照如下的顺序挨个到不同的作用域中查找是否有指定的属性,如果找到就直接返回,不再继续查找:
作用域 | 顺序 |
---|---|
REQUEST | 1 |
VIEW | 2 |
SESSION | 3 |
APPLICATION | 4 |
关于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()