zoukankan      html  css  js  c++  java
  • 暑期项目经验(九) -- request session application

                request、session、application

    一、基础知识

    可以看看  浅谈:request,session,application (http://blog.csdn.net/hzc543806053/article/details/7416007)

    要点:

    作用域: request<session<application

    共同方法:都可以使用 setAttribute(String name , Object o ) ,getAttribute(String name)

    二、在java中获取这三个对象

    可以看以下原文 :http://www.blogjava.net/xcp/archive/2009/10/23/struts2_actioncontext1.html?opt=admin

    2.1 struts2封装后的三个Map  (使用ActionContext)

    import java.util.Map;
    import com.opensymphony.xwork2.Action;
    import com.opensymphony.xwork2.ActionContext;
    
    ........
    
    ActionContext context = ActionContext.getContext();
    Map request = (Map) context.get("request");
    Map session = context.getSession();
    Map application = context.getApplication();

    2.2 与Servlet API耦合的访问方式(非IoC方式,使用ServletActionContext)

    HttpServletRequest request = ServletActionContext.getRequest();
    HttpServletResponse response = ServletActionContext.getResponse();
    HttpSession session =  ServletActionContext.getRequest().getSession();

    三、ActionContextServletActionContext的区别

      我们知道struts2接受客户端请求,在Action中进行处理后,将视图结果返回。struts2容器自身不依赖于web容器,不用和servlet对象中的请求(request)、响应(response)进行关联,对于请求的参数,通过paramerInterceptor将参数封装在Action中,然后通过调用get、set方法将参数值设置进Action之中。如果仅仅获取参数,可能有时候满足不了开发的需求,有时我们要获取request或者response中的信息,要对其进行设置、处理。

    3.1 ActionContext

      是Action执行的上下文,Action的上下文可以看作是一个容器,里面封装了请求(Request)、会话(Session)、 Application等,这里面的Request、Session、Application是Map类型的,往里面封装的是键值对,所以这就体现了 struts2不与底层servlet Api打交道,那么对很多web的相关对象进行封装,这样可以达到Action与web层解耦。

    3.2 ServletActionContext

      它继承ActionContext,所以ServletActionContext也可以得到HttpServetRequest、HttpServletResponse,,它也提供了直接与Servlet相关对象访问的功能.

    总结:不难看出,两者之间还是存在很多共同功能,那么我们还是根据自己的需求进行选择,能用ActionContext对象满足就尽量使用ActionContext,避免让我们直接去访问Servlet对象。另外,不要在Action还没实例化的时候去通ActionContext调用方法,因为Action实例在ActionContext实例之前创建,ActionContext中一些值还没有设置,会返回null。

    4. application实例  (统计在线人数 )

    4.1 登录程序中 LoginAction.java

    //统计在线人数
                    Map application = ActionContext.getContext().getApplication();
                    Integer count = (Integer) application.get("count");
                    if(null == count){
                        count=1;
                    }else{
                        count++;
                    }
                    application.put("count", count);

     4.2 注销程序中 ExitAciton.java

    Map application = ActionContext.getContext().getApplication();
            Integer count = (Integer) application.get("count");
            count--;
            application.put("count", count);
  • 相关阅读:
    IT小小鸟读后感
    关于C语言的问卷调查
    (学习进度表)【第六周】
    (学习进度表)【第五周】
    作业二(过早的放弃是失败的根源)
    读《世界是数字的》笔记
    作业3(学习进度表)【第四周】
    作业1
    读《我是一只IT小小鸟》笔记
    价值观作业
  • 原文地址:https://www.cnblogs.com/pxjgood/p/3991945.html
Copyright © 2011-2022 走看看