zoukankan      html  css  js  c++  java
  • 如何在Action类中访问Servlet原生的API

    1.解耦的方式(使用Map对象代替Servlet原生的API)

      >实现XxxAware接口,得到对应Map对象

        ApplicationAware;RequestAware;SessionAware;ParameterAware;

      >通过ActionContext对象获取对应的Map对象(actionContext实质上是一个Map)(里面没有response)

            // ctx实质上就是一个Map对象。是Action的上下文,可以获取到当前Action需要的一切信息
            ActionContext ctx = ActionContext.getContext();
            Map<String, Object> application = ctx.getApplication();
            //获取到的这个session和其他的Map有点区别:
            //它实际是SessionMap类型,可以对其强转,其中有一个真正的session对象,并且有invalide()方法可以使session失效
            Map<String, Object> session = ctx.getSession();
            // 没有getRequest方法,只能这样获取
            Map<String, Object> request = (Map<String, Object>) ctx.get("request");
            // actionContext里面没有response,下面这种方式获取不到
            // Map<String, Object> response = (Map<String, Object>)ctx.get("response");
    
            // params其中的Object实质上是String[],需要强转。(注意:只能读,向里面写不起作用)
            Map<String, Object> params = ctx.getParameters();

      >以上两种方式的选用建议

        第一种,一次获取,整个Action方法中都可以直接使用;而第二种,不同action方法需分别获取。

    2.耦合的方式(真正的Servlet原生的API)

      >实现ServletXxxAware接口,得到对应的原生API(通过request来获取session和response)

            ServletRequestAware;ServletResponseAware;ServletContextAware;

      >通过ServletActionContext对象的静态方法得到原生API(通过request来获取session和response)

            ServletContext sctx = ServletActionContext.getServletContext();//和application是一个对象
            HttpServletResponse resp = ServletActionContext.getResponse();//获取response
            HttpServletRequest req = ServletActionContext.getRequest();//获取request
            HttpSession sess = ServletActionContext.getRequest().getSession();//获取session
            Map<String, String[]> paramsMap = ServletActionContext.getRequest().getParameterMap();//获取参数的Map
            ValueStack valueStack = ServletActionContext.getValueStack(req);//获取值栈
  • 相关阅读:
    python之路-随笔 python处理excel文件
    eclipse添加注释
    junit单元测试
    【FLEX教程】#008 开发中的问题笔记(慢更…)
    【FLEX教程】#007 如何让JS调用SWF里的方法
    【总结】2014年度总结
    【转】#100 代码运行框
    【实战项目】【FLEX】#900 实现拖控件功能
    【教程】【FLEX】#006 控件位置的拖动
    【教程】【FLEX】#005 拖动
  • 原文地址:https://www.cnblogs.com/feifeiyun/p/6636806.html
Copyright © 2011-2022 走看看