【发布时间】:2010-10-14 16:55:59
【问题描述】:
在struts中,会话对象是在哪里创建的?是哪个类或方法创建的?同样,请求对象在哪里创建以及哪个类或方法调用它?
提前致谢
【问题讨论】:
标签: java jsp web-applications jakarta-ee struts
在struts中,会话对象是在哪里创建的?是哪个类或方法创建的?同样,请求对象在哪里创建以及哪个类或方法调用它?
提前致谢
【问题讨论】:
标签: java jsp web-applications jakarta-ee struts
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 标签中定义的 scope。
ActionForm 通常使用 action-form 标记中定义的名称进行存储。
【讨论】:
请求对象是在您的 servlet 容器(tomcat/jetty/whatever)中创建的。
会话基本上是由首先在HttpServletRequest 上调用getSession 的人创建的。通常 web 框架只有在有人真正声明他们需要会话时才会这样做。如果您想知道何时发生这种情况,我建议您在 IDE 中使用“转到实现”并设置断点并运行应用程序(注意有两个重载)
【讨论】: