session是怎样使用的呢?急求。。
public static Map getSession() {
return ActionContext.getContext().getSession();
}
[b]问题补充:[/b]
呵呵,忘了问了,这是什么意思,getContext()是获取其上下文,但是我想明白的是,什么情况下使用session,它的作用又是什么?
ActionContext(com.opensymphony.xwork.ActionContext)是Action执行时的上下文,上下文可以看作是一个容器(其实我们这里的容器就是一个Map而已),它存放放的是Action在执行时需要用到的对象,比如:在使用WebWork时,我们的上下文放有请求的参数(Parameter)、会话(Session)、Servlet上下文(ServletContext)、本地化(Locale)信息等。
在每次执行Action之前都会创建新的ActionContext,ActionContext是线程安全的,也就是说在同一个线程里ActionContext里的属性是唯一的,这样我的Action就可以在多线程中使用。
jsp有三个标准作用范围:request、session、ServletContext
request:作用范围在请求中;例如提交一些信息到后台处理,请求完了,程序会自动把信息删除。
session:作用范围在会话中;例如会员登录,就会把会员信息存放到session中,只有用户自己销毁session或者session超时了,才会把会话中的信息删除。
ServletContext:作用范围在整个应用程序中;例如系统的设置,只有应用程序关闭它才销毁。
就是这样用啊
你这样不是已经得到session了嘛
ActionContext.getContext().getSession();
那就操作session嘛
session跟jsp的httpsession的作用域相同,因此功能相同。
什么时候用,去查查httpsession的作用就知道了
应该是保存用户登录信息时用
楼主会jsp、servlet吗?
你这里说得session并不是真正的session。
真正得session全称HttpSession,jsp隐藏对象,session,也是这个。
你这里是struts2里获得session Map的代码,他是一个Map类型得变量,但是struts2将它和真正的HttpSession进行了绑定。
所以这里获得的session
session.put("userId",userId);// 将登录用户的ID存到session里,struts2的sessionMap
相当于
session.setAttribute("userId",userId)// 此处是HttpSession
session有什么用?
比如一个用户登录了没有?我们怎么知道呢?那就是登录得时候进行刚刚得操作,然后想知道有没有登录就从session里拿值,通过
session.get("userId"); // 相当于session.getAttribute("userId")
如果拿出来得对象=null,那说明用户没有登录,如果不为null,就说明用户是登录的,因为有些页面是需要用户登录才能看的。