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);//获取值栈
  • 相关阅读:
    LeetCode 121. Best Time to Buy and Sell Stock
    LeetCode 221. Maximal Square
    LeetCode 152. Maximum Product Subarray
    LeetCode 53. Maximum Subarray
    LeetCode 91. Decode Ways
    LeetCode 64. Minimum Path Sum
    LeetCode 264. Ugly Number II
    LeetCode 263. Ugly Number
    LeetCode 50. Pow(x, n)
    LeetCode 279. Perfect Squares
  • 原文地址:https://www.cnblogs.com/feifeiyun/p/6636806.html
Copyright © 2011-2022 走看看