在struts中,会话对象在哪里创建&哪个类或方法创建它?同样,请求对象在哪里创建以及哪个类或方法调用它?
提前致谢
在struts中,会话对象在哪里创建&哪个类或方法创建它?同样,请求对象在哪里创建以及哪个类或方法调用它?
提前致谢
请求对象是在您的 servlet 容器(tomcat/jetty/whatever)中创建的。
会话基本上是由首先在HttpServletRequest上调用 getSession 的人创建的。通常 web 框架只有在有人真正声明他们需要会话时才会这样做。如果您想知道何时发生这种情况,我建议您在 IDE 中使用“转到实现”并设置断点并运行应用程序(注意有两个重载)
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 容器创建并传递给相应的方法。
在 Struts 中,ActionForm实例可以存储在HttpSession或HttpServletRequest中。
它取决于struts-config.xml文件内的action标记中定义的范围。
ActionForm通常使用在 action-form 标签中定义的名称来存储。