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);//获取值栈
  • 相关阅读:
    Chrome浏览器另存为时浏览器假死问题
    excel的新增日期快捷键Ctrl+;失效解决办法
    制作Visual Studio 2019 (VS 2019) 离线安装包
    Sysinternals Suite 工具包使用指南
    如何关闭Acrobat Reader DC自动更新
    MySql like模糊查询使用详解
    注册表删除我的电脑WPS云盘图标
    解除Word文档的限制编辑!
    IIS Ftp端口设置
    [UnityShader基础]12.坐标空间
  • 原文地址:https://www.cnblogs.com/feifeiyun/p/6636806.html
Copyright © 2011-2022 走看看