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