0

在struts中,会话对象在哪里创建&哪个类或方法创建它?同样,请求对象在哪里创建以及哪个类或方法调用它?

提前致谢

4

3 回答 3

1

请求对象是在您的 servlet 容器(tomcat/jetty/whatever)中创建的。

会话基本上是由首先在HttpServletRequest上调用 getSession 的人创建的。通常 web 框架只有在有人真正声明他们需要会话时才会这样做。如果您想知道何时发生这种情况,我建议您在 IDE 中使用“转到实现”并设置断点并运行应用程序(注意有两个重载)

于 2009-03-21T07:19:00.243 回答
1
import com.opensymphony.xwork2.ActionSupport;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.SessionAware;

public class MyAction extends ActionSupport implements SessionAware,ServletRequestAware
{
    Map<String,Object> session;
    HttpServletRequest servletRequest;

    public void setSession(Map<String, Object> session) {

        this.session = session;
    }

    public void setServletRequest(HttpServletRequest hsr) {
       this.servletRequest=hsr;
    }

    public String execute()
    {
       return SUCCESS;
    }
}

每当调用此操作时,首先调用 setServletRequest,然后调用 setSession()。

请求和会话的对象由您正在使用的 Web 容器创建并传递给相应的方法。

于 2011-01-09T23:38:22.937 回答
0

在 Struts 中,ActionForm实例可以存储在HttpSessionHttpServletRequest中。

它取决于struts-config.xml文件内的action标记中定义的范围。

ActionForm通常使用在 action-form 标签中定义的名称来存储

于 2009-08-08T11:11:33.823 回答