DoradoContext 是 Dorado 的上下文对象,有4个作用域
DoradoContext.VIEW Dorado 的视图作用域
DoradoContext.REQUEST 等同于 HttpServletRequest
DoradoContext.SESSION 等同于 HttpSession
DoradoContext.APPLICATION 等同于 ServletContext
1. 作用域的生命周期
DoradoContext.REQUEST 等同于 HttpServletRequest
一次浏览器对服务器的请求用HttpServletRequest对象表示【包括转发】
/*
1.浏览器向servlet发送请求
2.tomcat收到请求,创建Request和Response,并将浏览器请求参数传给Servlet
3、Servlet接收请求,调用doget或dopost,处理请求,通过Response返回信息
4、tomcat收到返回信息,将其返回给浏览器。
5、浏览器收到返回消息,tomcat销毁Request和Response两个对象,同时销毁这两个对象所获得的信息。
源自:https://blog.youkuaiyun.com/m0_38039437/article/details/76229486
*/
DoradoContext.SESSION 等同于 HttpSession
一次会话的多个请求之间共享,用于跟踪会话
第一个进入该网站,直到退出网站或关闭浏览器【如淘宝网站内部多次跳转页面,还是知道你是哪个用户】
之后只要不退出网站或关闭浏览器,都可以通过:session.getAttribute("key1")获取保存的参数
DoradoContext.APPLICATION 等同于 ServletContext
唯一对象,服务器创建,它创建,服务器关掉,它销毁
所有用户之间共享数据
eg:服务器版本,应用级初始化参数和应用内资源的绝对地址,注册信息的方式
2. 作用域如何存取数据?
- 获取当前dorado上下文对象
DoradoContext context = DoradoContext.getCurrent();
1. 指定作用域
指定作用域
public Object getAttribute(String scope, String key);
public void setAttribute(String scope, String key, Object value);
public void removeAttribute(String scope, String key);
String username = context.getAttribute(DoradoContext.SESSION, "username");
Object securityData = context.getAttribute(DoradoContext.APPLICATION, "securityData");
context.setAttribute(DoradoContext.SESSION, "username", username);
2. 不指定作用域
查找顺序:
REQUEST 1
VIEW 2
SESSION 3
APPLICATION 4
public Object getAttribute(String key);
3.先获取作用域再处理
oradoContext ctx = DoradoContext.getCurrent();
HttpServletRequest request = ctx.getRequest();
requst.setAttribute("user",username);
request.getSession().setAttribute("user", employee);
3.view作用域中数据还可以在js中获取
var username = view.get("context").get("username");
4.其他方法
//获取Spring中的ApplicationContext
public ApplicationContext getApplicationContext()
//获取Spring中的WebApplicationContext
public WebApplicationContext getWebApplicationContext()
//获取当前web请求的ServletContext
public static ServletContext getServletContext()
//获取当前线程绑定的HttpServletRequest
public static HttpServletRequest getRequest()