struts2,Action和session的问题
就是我action处理请求
然后设置了session 属性 比如是 user
然后result跳转回页面
在那个页面 user是能得到的 然后我在那个页面点了个超链接到其他页面
再用session.getAttribute就为空了
--------------我的Action
package com.manage.action;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.interceptor.ServletRequestAware;
import com.manage.dao.IManageDAO;
import com.opensymphony.xwork2.ActionSupport;
import com.universalone.dao.IUniversaloneDAO;
import com.webhomework.po.Myuser;
public class ManageAction extends ActionSupport implements ServletRequestAware {
private HttpServletRequest request;
private HttpSession session;
public ManageAction() {
// TODO Auto-generated constructor stub
}
@Override
public void setServletRequest(HttpServletRequest arg0) {
request=arg0;
session=request.getSession(true);
}
public String getMemberInfo() throws Exception {
Myuser myuser=(Myuser) session.getAttribute("myuser");
System.out.println(myuser);
IManageDAO imd=(IManageDAO) request.getAttribute("imanagedao");
List<Myuser> list=imd.getMembersById(myuser, 1, 3);
System.out.println(list.size());
Myuser user=list.get(0);
if(user!=null){
session.setAttribute("myuser",user);
return "success";
}
else{
request.setAttribute("error","未找到");
return "error";
}
}
}
--------------已经测试过的方法
1.得到session的两种方式 Aware借口和ActionContext都试过
2.OGNL和JSTL还有EL表达式都使用过
3.tomcat用过3个版本 MYECLIPSE用过了2个版本
4.不同页面的session_id是一样的
综上 问题就是我设置的session用起来就跟request一样 不会这个是struts2的BUG吧???
------解决方案--------------------
action类的生命周期跟request的生命周期一样
如果下一个action需要使用到前面请求的数据,用chain可以解决
<result type="chain">
<action>的name名字
</result>