【问题标题】:Objects of session and request会话和请求的对象
【发布时间】:2010-10-14 16:55:59
【问题描述】:

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

提前致谢

【问题讨论】:

    标签: java jsp web-applications jakarta-ee struts


    【解决方案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 容器创建并传递给相应的方法。

    【讨论】:

      【解决方案2】:

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

      这取决于 struts-config.xml 文件内的 action 标签中定义的 scope

      ActionForm 通常使用 action-form 标记中定义的名称进行存储。

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 2017-07-16
          • 2016-05-05
          • 2011-09-04
          • 2021-07-08
          • 2013-02-14
          • 1970-01-01
          • 1970-01-01
          • 2014-02-02
          相关资源
          最近更新 更多