zoukankan      html  css  js  c++  java
  • 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;
        }
    View Code

    biz中:

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

    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;
        }
    View Code

    其中涉及到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的,不然子类继承不了,这一点感觉不太好。。

  • 相关阅读:
    国内DP厂家的相关资料信息
    【转】挟天子以令诸侯博客关于TCP/IP模型与OSI模型的区别
    TMS320CC657基本外围电路调试
    TMS320C6657双核DSP的图像处理系统开发(1):硬件相关tips
    TI c6657开发资源
    PCIE接口的说明
    Flash Builder4注册机
    myeclipse 方法上加上@Override就报错的处理方法
    oracle安装完成后目录中不论有没有tnsnames.ora和listener.ora文件 PLSQL都能连上的问题解决方法
    POJO和javabean的区别
  • 原文地址:https://www.cnblogs.com/FJH1994/p/4813291.html
Copyright © 2011-2022 走看看