zoukankan      html  css  js  c++  java
  • 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";
        }
  • 相关阅读:
    【BZOJ】2453: 维护队列【BZOJ】2120: 数颜色 二分+分块(暴力能A)
    【转】使用json-lib进行Java和JSON之间的转换
    【转】MySQL索引和查询优化
    【转】SQL常用的语句和函数
    【转】MySQL日期时间函数大全
    VMare中安装“功能增强工具”,实现CentOS5.5与win7host共享文件夹的创建
    MyEclipse中消除frame引起的“the file XXX can not be found.Please check the location and try again.”的错误
    由于SSH配置文件的不匹配,导致的Permission denied (publickey)及其解决方法。
    复选框的多选获取值
    echart环形图制作及出现的一些问题总结
  • 原文地址:https://www.cnblogs.com/huaixiaoz/p/5899242.html
Copyright © 2011-2022 走看看