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的方式获取,第三种方式是很爽的。