Action上下文
action 上下文行为类似于map,也有自己的特性。
应用上下文(Application context)
应用上下文是在应用范围内的map,你可以保存在整个应用中使用的信息。比如缓存一些信息。
Context application = action.getApplication();
Collection<User> users = (Collection<User>) application.getAttribute("users");
// 或设置某些你需要的
application.setAttribute("myCache", theCache);
// Note: 下面操作没有意义并且会抛出UnsupportedOperationException异常
application.reset();
会话上下文(Session context)
会话上下文会保存来自于同一客户端多个web页面请求的状态。认证就是这样:当你想让用户退出应用,你可以重置上下文。
Context cookie = action.getCookies();
// 读取任意浏览器cookie:
String someCookieValue = (String) cookies.getAttribute("myCookie");
// 添加一个cookie
cookies.setAttribute("username", username); // 将被浏览器回传并保存
// 移除cookie
cookies.removeAttribute("username"); //当响应给浏览器时,也会在客户端移除
cookies.reset(); // 抛出UnsupportedOperationException异常
对cookie更多操作
如果你想指定cookie的属性,如超时时间(max age),域(domain)等设置,你需要做的就是设置一个Cookie对象来替代仅仅设置一个字符串。
Cookie cookie = new Cookie("myCookie", "hello cookies!");
cookie.setMaxAge(60 * 60 * 24); // 一天
cookie.setPath("/");
// 获取cookie对象
Context cookies = action.getCookies();
cookies.setAttribute("myCookie", cookie);