您的位置:首页 > 编程语言 > Java开发

Struts里面获取session里用户的几种方式,用哪种方式最好

2013-11-09 14:45 169 查看
Struts里面获取session的几种方式

     我们在做struts里面的action的时候,有很多时候,都需要从session中获取用户user的信息。那么考虑过,哪一种方式最好,对效率有所提高吗?
     1.获取session里用户方式一:直接通过ActionContext去获取
        ActionContext.getActioContext().getSession().get("user");
      2.获取session里用户方式二:实现SessionAware接口
         public void setSession(Map<String,Object> session){
             this.sessionMap = session;
         }
        sesionMap.get("user");
     3.获取session里用户的方式三:
       自定义一个接口
       public interface UserAware{
           public void setUser(User u);
       }
       (在拦截器中注入User用户)在拦截器中判断哪些action以后要用到user的信息,那么只需要实现UserAware接口就行了,自定义拦截器中代码实现如下:
        Map<String,Object> SessionMap = invocation.getInvocationContext().getSession();
        User user = (User) sessionMap.get("user");
         if(action.instanceof UserAware){
            //注入user对象给action
          ( (UserAware)action).setUser(user);
         }

      以后只要实现了UserAware接口的,我们自定义的自定义的拦截器就直接注入了当前的User的信息。以后action中要用到user的信息,直接用就可以了。

      第三种方式的好处:
      以后我们许多的Action中值要用到User的信息,就不需要在每个Action中通过ActionContext中去获取,也不需要通过第二种方式实现sessionAware的方式获取,第三种方式是很爽的。
     

      
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息