Struts2中使用Session

嗯,没错,过了这么长时间我还在做我的注册和登录。

登陆的部分自然是从数据库中查找响应的用户信息,然后把一个user放到session里,

Action中代码如下:

public String Login(){
        User user = new User(username,password);
        user = userbiz.Login(user);
        if(user != null){
            session.put("user", user);
            return this.SUCCESS;
        }
        return this.ERROR;
    }

biz中:

public User Login(User user) {
        List<User> list = userdao.Search(user);
        if(list==null) return null;
        user = (User)list.get(0);
        return user;
    }

dao中:

public List<User> Search(User user) {

        List<User> list=null;
        //通过sessionFactory获得Session
        Session session=sessionFactory.openSession();
        //创建Criteria对象
        Criteria c=session.createCriteria(User.class);
        //使用Example工具类创建示例对象
        Example example=Example.create(user);
        //为Criteria对象指定示例对象example作为查询条件
        c.add(example);
        list = c.list();      //执行查询,获得结果
        if(list.size()!=0){
            return (List<User>)list;
        }
        return null;
    }

其中涉及到session的使用,于是查了下struts2中如何获取session。

有两个方法:

1.通过ActionContext class中的方法getSession得到

2.Action实现org.apache.struts2.interceptor.SessionAware接口的方式来对session进行操作

方法一:

public class SessionTestAction extends ActionSupport {
    public String execute() {
        ActionContext actionContext = ActionContext.getContext();
        Map session = actionContext.getSession();
        session.put("user", user);
        return SUCCESS;
    }
}   

方法二:

public class SessionTest1Action extends ActionSupport implements SessionAware {
    private Map session;
    public void setSession(Map session) {
        this.session = session;
    }
    public String execute() {
        this.session.put("user", user);
        return SUCCESS;
    }
}   

一个项目中有可能有多个Action需要用到session,那么可以写一个抽象类BaseAction,之后的Action只要继承这个类就可以了:

package action;

import java.util.Map;

import org.apache.struts2.interceptor.SessionAware;

import com.opensymphony.xwork2.ActionSupport;

abstract class BaseAction extends ActionSupport implements SessionAware {
    Map session;
    @Override
    public void setSession(Map session) {
        this.session=session;
    }
}

其中session不能是private的,不然子类继承不了,这一点感觉不太好。。

时间: 2024-10-16 03:45:35

Struts2中使用Session的相关文章

struts2中的session使用

1.1. 如何获取Session 1.1.1. 获取Session的方式 Struts2中获取Session的方式有3种,大家掌握其中任何一种都可以. 通过ActionContext.getContext().getSession()获得Session,注意其返回类型为 Map<String,Object>.事实上,Session对象存储数据的方式通Map一致,因此Struts2提供了Map类型的 Session,意于简化对Session的操作. 通过ServletActionContext.

Struts2中使用Session的两种方法

在Struts2里,如果需要在Action中使用到session,可以使用下面两种方式: 通过ActionContext 类中的方法getSession得到 Action实现org.apache.struts2.interceptor.SessionAware接口的方式来对session进行操作 下面先看一个采用第一种方式,在action中得到session的例子 public class SessionTestAction extends ActionSupport { public Stri

struts2中取得session的公共方法类

该公共方法类一般建立在com.xxx.util包下面 package com.dgh.util; import java.util.Map; import org.apache.struts2.interceptor.SessionAware; /** * * 获得session * @author wangcunhuazi */ public class BaseAction implements SessionAware { protected Map<String,Object> ses

SSH学习-Struts2中的session

Struts中也有session,跟其他框架类似,也需要用它保存用户信息,或者其他信息.学习发现,Struts2获取session有三种方式,下面引入登录的案例,分别使用三种方式验证用户名和密码信息. Struts2获取session的三种方式 (1)使用工厂方法获取,使用ActionContext实现,session为Map<String,Object>类型 (2)使用注入方式获取session,session为Map<String,Object>类型 (3)使用ServletA

struts2中的session、request 、和action往页面中传值的方法

ActionContext.getContext().put("list", list); ActionContext.getContext().getValueStack().push(listName);//准备回显数据 session中放数据: ActionContext.getContext().getSession().put("user", user); /** 注销 */ public String logout() throws Exception

???Struts2框架03 session的使用、登录逻辑【session工作原理】

1 登录逻辑 1.1 获取登录数据(例如:用户民.密码) 1.2 在控制层调用业务层来验证数据信息 1.3 登录成功:保存用户信息(服务器用session.浏览器用cookie),跳转到主页满 1.4 登录失败:留在登录页面,并给出错误提示信息 2 什么是session 就是一个会话对象,有服务器创建,目的是为了共享数据(注意:每一个浏览器对应一个session对象) 3 session的工作原理 待更新... 2017年7月3日21:53:09 4 在struts2中获取session对象的方

Struts2中获取Web元素request、session、application对象的四种方式

我们在学习web编程的时候,一般都是通过requet.session.application(servletcontext)进行一系列相关的操作,request.session.和application他们都是web开发最常用和最实用的对象,有了它们可以大大方便开发人员进行开发和操作.但是在struts2中,基本都是action,这些个方法都是没有requet.session.application,所以如何获取这几个常用对象,也成了大家都比较关注的问题,下面我就来演示下,如何在struts2中

【JAVA学习】struts2的action中使用session的方法

尊重版权:http://hi.baidu.com/dillisbest/item/0bdc35c0b477b853ad00efac 在Struts2里,如果需要在Action中使用session,可以通过下面两种方式得到1.通过ActionContext class中的方法getSession得到2.Action实现org.apache.struts2.interceptor.SessionAware接口的方式来对session进行操作 下面先看一个采用第一种方式,在action中得到sessi

在Struts2中使用ValueStack、ActionContext、ServletContext、request、session等 .

笔者不知道该用哪个词来形容ValueStack.ActionContext等可以在Struts2中用来存放数据的类.这些类使用的范围不同,得到的方法也不同,下面就来一一介绍. 声明:本文参考Struts2版本为2.3.1.2,内容仅供参考,限于笔者水平有限,难免有所疏漏,望您能友善指出.本文发表于ITEYE,谢绝转载. 1. ValueStack ValueStack在中文版的<Struts2深入浅出>一书中译作“值栈”.其本身数据结构是一个栈,使用者可以把一些对象(又称作bean)存入值栈中