【Struts2】Struts2获取session的三种方式

1、Map<String,Object> map =  ActionContext.getContext().getSession();

2、HttpSession session = ServletActionContext.getRequest().getSession();

3、让Action实现SessionAware接口,并实现public void setSession(Map<String,
Object> session) {}
方法,Struts2会在实例化Action后调用该方法,通过方法参数将Session对象注入进来。如果我们想获取Session,我们可以定义成员变量,接收注入进来的Session对象。

比如:

public class UserAction implements SessionAware{
      private Map<String,Object> session;

      //.........     

    @Override
    public void setSession(Map<String, Object> session) {
        this.session=session;

    }
}

三种方式的比较:

返回类型的对比:1,3获取的Session类型是Map<String,Object>类型,2获取的类型是HttpSession。

获取方式对比:

1,2是我们主动获取Session,3是采用注入的方式自动注入Session,这是被动的。

推荐使用3来创建Session,因为它更为灵活而且符合面向接口编程的思想。

上面的第三种方式介绍了Action使用实现SessionAware的方式获得封装了session的Map对象,除此之外还有提供如下的接口RequestAware(获得封装了request的Map对象),ApplicationAware(获得封装了application的session对象),ServletRequestAware(获得HttpServletRequest对象),ServletResponseAware(获得HttpServletResponse对象),ServletContextAware(获得ServletContext对象)。

如果在Action 对象以外使用,只能使用继承 ActionContext 或 ServletActionContext的方式了。

原文链接:Struts2中获取session的三种方式

时间: 2024-08-08 01:29:11

【Struts2】Struts2获取session的三种方式的相关文章

5.struts2中Action类中获取ServletAPI的三种方式

**Servlet的API的访问(开发中偶尔会使用到)** 1.在Action类中也可以获取到Servlet一些常用的API,有如下三种方式获取 * 完全解耦合的方式 * 使用接口注入的方式 * 使用ServletActionContext中静态方法直接访问Servlet的API * 需求:提供JSP的表单页面的数据,在Action中使用Servlet的API接收到,然后保存到三个域对象中,最后再显示到JSP的页面上. * 提供JSP注册的页面,演示下面这三种方式: <h3>注册页面</

struts2简单入门-参数传递的三种方式

三种方式的简单说明 属性传递 把参数定义为属性提供get/set方法. 使用情况 参数少,不需要共享. 演示代码 1 public class LoginAction extends ActionSupport 2 { 3 private String username; 4 private String password; 5 6 public String getUsername() 7 { 8 return username; 9 } 10 11 public String getPass

CXF3.0.4客户端调用Web service来获取服务的三种方式

服务端的代码请看我的另一篇文章:点击打开链接 首先必须要有一个可用的WSDL服务地址,这个地址有我们需要调用的方法,将地址复制到浏览器地址栏,看测试能否通过. 方式一: 配置CXF环境变量,用wsdl2java工具自动产生代码.项目结构目录如下: 其中com.yq.webservice下面的所有的java类都是wsdl2java工具自动产生的. <span style="font-size:18px;"><span style="white-space:pr

jQuery中通过JSONP来跨域获取数据的三种方式

第一种方法是在ajax函数中设置dataType为'jsonp' $.ajax({ dataType: 'jsonp', url: 'http://www.a.com/user?id=123', success: function(data){ //处理data数据 } }); 第二种方法是利用getJSON来实现,只要在地址中加上callback=?参数即可 $.getJSON('http://www.a.com/user?id=123&callback=?', function(data){

android 自定义控件中获取属性的三种方式(转)

第一种方法,直接设置属性值,通过attrs.getAttributeResourceValue拿到这个属性值. (1)在xml文件中设置属性值 <com.example.activity.IconTextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/smile1" iconSrc="

java之从命令行获取数据的三种方式

第一种:利用Scanner对象 import java.util.Scanner; public class TestInputOuput { public static void main(String[] args) { System.out.println("请输入:"); Scanner inp = new Scanner(System.in); String str = inp.next(); System.out.println("你输入了:"+str)

Asp.Net 保存Session的三种方式

一.默认方式,保存在IIS进程中保存在IIS进程中是指把Session数据保存在IIS的运行的进程中,也就是inetinfo.exe这个进程中,这也是默认的Session的存方式,也是最常用的. 这种方式的优点是简单,性能最高.但是当重启IIS服务器时Session丢失. 二.保存在StateServer上这种方式首先要启动Asp.Net State服务 <sessionState mode="StateServer" stateConnectionString="tc

C#获取网页内容的三种方式

C#通常有三种方法获取网页内容,使用WebClient.WebBrowser或者HttpWebRequest/HttpWebResponse... 方法一:使用WebClient (引用自:http://fbljava.blog.163.com/blog/static/265211742008712105145244/) static void Main(string[] args) { try { WebClient MyWebClient = new WebClient(); MyWebCl

pictrue获取图片的三种方式

1.绝对路径: this.pictureBox2.Image=Image.FromFile("D:\\001.jpg"); 2.相对路径: Application.StartupPath;  可以得到程序根目录  this.pictureBox2.Image=Image.FromFile(Application.StartupPath "\\1.gif"); 3.获得网络图片的路径 this.pictureBox2.Image= Image.FromStream(S