• 2.struts2访问web资源(在struts2中获取session,request等等)


    什么是web资源:web资源就是指requestresponsesessionservletapi

    为什么需要访问web资源:因为图片上传,需要获取图片的目录,就需要通过action来访问web资源,向作用域读写数据。。。。。。等等

    怎么访问web资源:

      servlet解耦的方式访问:有限的访问servletapi对象,有限的方法

        使用ActionContext去访问

        实现XXXAware这个接口

      servlet耦合的方式访问:可以访问更多(全部)的servlet的API

        使用ServletActionContext去访问

        实现ServletXXXAware这个接口

        

      1.解耦合和方式使用ActionContext获取web资源 

    /**
         * 获取Application作用域
         * @return
         */
        public String execute(){
            //获取Action的上下文,就是action的一些运行信息,环境等等
            ActionContext actionContext=ActionContext.getContext();
            //得到封装过的application
            Map<String, Object> application=actionContext.getApplication();
            //把数据放到application的作用域
            application.put("name", "小白");
            return "success";
        }
        /**
         * 获取session作用域
         * @return
         */
        public String execute2(){
            //获取Action的上下文,就是action的一些运行信息,环境等等
            ActionContext actionContext=ActionContext.getContext();
            //得到封装过的session
            Map<String, Object> session=actionContext.getSession();
            //把数据放到session的作用域
            session.put("name2", "小白2");
            return "success";
        }
        /**
         * 获取Request作用域
         * @return
         */
        public String execute3(){
            //获取Action的上下文,就是action的一些运行信息,环境等等
            ActionContext actionContext=ActionContext.getContext();
            //得到封装过的request
            Map<String, Object> request=(Map<String, Object>) actionContext.get("request");
            //把数据放到request的作用域
            request.put("name3", "小白3");
            return "success";
        }
    
        /**
         * 获取请求参数(不推荐使用,Struts会封装)
         * @return
         */
        public String params(){
            //获取Action的上下文,就是action的一些运行信息,环境等等
            ActionContext actionContext=ActionContext.getContext();
            //获取请求参数,得到参数的对象
            Map<String, Object> params= actionContext.getParameters();
            String name=((String[])params.get("name"))[0];
            String sex=((String[])params.get("sex"))[0];
            System.out.println(name+":"+sex);
            return "success";
        }
        

      2.解耦合和方式使用XXXAware获取web资源

    /**
     * 只要实现对应的ApplicationAware接口,或者SessionAware等就可以
     * @author Administrator
     *
     */
    public class ApplicationDemo implements ApplicationAware{
        Map<String, Object> application;
        
        public String execute(){
            application.put("xx","xx");
            return "success";    
        }
        public void setApplication(Map<String, Object> application) {
            this.application=application;    
        }
    }

      3.耦合和方式使用ActionContext获取web资源(其他的使用方式类似)

        public String execute(){
            //通过ServletActionContext可以获取需要的Servlet api相关的对象
            HttpServletRequest request=ServletActionContext.getRequest();
            String name =request.getParameter("name");
            request.setAttribute("name", "小白");
            HttpSession session= ServletActionContext.getRequest().getSession();
            session.setAttribute("name2", "小白2");
            return "success";
        }
  • 相关阅读:
    设计模式学习笔记二十二:对象的轮回
    设计模式学习笔记二十一:代理模式
    Redis学习笔记之ABC
    戒烟日志
    Redis优化之CPU充分利用
    Nginx的作用
    设计模式学习笔记二十:解释器模式
    设计模式学习笔记十九:备忘录模式
    intellIJ IDEA配置maven相关问题记录
    I NETWORK [thread1] waiting for connections on port 27017
  • 原文地址:https://www.cnblogs.com/huaixiaoz/p/5899242.html
Copyright © 2020-2023  润新知