现在的位置: 首页 > 综合 > 正文

struts2 Mapsession心得 浅析

2013年10月08日 ⁄ 综合 ⁄ 共 1007字 ⁄ 字号 评论关闭

我们知道,struts2中对底层的web容器对象做了二次的封装,封装成Map类型的类型用于封装全局的变量,在实践当中对于session用的比较多;那么在struts2中我们有几种方法去获得这种对象呢?下面我们来说说:

1、在你写的action类后面实现 sessionAwaer接口,然后需要实现sessionAware的一个方法,那个方法提供一个Map<String,Object>类型的参数,那就是我们要找的session,我们把他赋值给一个已经定义好的成员变量就行了,得到它之后我们可以使用它的put方法(这就是面向对象的思想)将我们需要用到的全局变量加到session里,这样我们在其他的action类里就可以用同样的方法先得到session,然后再通过sessoin的get方法(不是servlet中session.getAttribute()方法)得到我们需要的数据;另外,我们在session中保存的变量在jsp中也能访问,这里需要用到struts2的标签,首先在jsp中引入标签<%@
taglib uri="/struts-tags" prefix="s"%>,然后在jsp中用<s:property value="#session.XXX">其中XXX是你开始out进session的变量引用,这里为什么要加上#session.呢?那是因为session是保存在值栈的context区,必须加上#再指定在session区 所以要加上#session.不要忘了后面加上小店。

2、我们可以在actoin类中使用 ActionContext.getContext.getSession()或者actionInvocation.getInvocationContext.getSessin()方法获得Map<String,Object>session对象,然后用法和上面就一样了,这样就不用去实现接口了。

3、我们在struts2中也能得到由web服务器创建的session对象,只要我们在action对应的类中用ServletActionContext.getRequest.getSession()方法,这样就得到了servlet底层创建的HttpSession session

4、Map<String,Object>session和HttpSession session中存放的属性可以互访,就是可以相互调用哦!

 

 

 

【上篇】
【下篇】

抱歉!评论已关闭.