zoukankan      html  css  js  c++  java
  • struts2在Action中访问WEB资源

    struts2在Action中访问WEB资源有两种方式:

    这两种方式都是通过获得WEB资源对应的Map对象来实现对WEB资源操作的,在一个Action类中如果多个方法需要调用WEB资源,建议使用实现XxxAware接口的方式

    一.与ServletApi解耦的方式:只能访问有限的ServletAPI的方法

      1.使用ActionContext  

    package com.TestActionContext;
    
    import java.util.Map;
    
    import com.opensymphony.xwork2.ActionContext;
    
    public class AcctionContext {
        public String execute(){
            
            //获取AcctionContext对象
            ActionContext actioncontext=ActionContext.getContext();
            
            //1.获取Application对应的Map
            Map<String,Object> map=actioncontext.getApplication();
            map.put("Key", "ApplicationValue");
    
            //2.获取session对应的Map
            Map<String,Object> sessionmap=actioncontext.getSession();
            sessionmap.put("Key", "SessionValue");
            
            //3.获取request对应的Map
            //ActionContext中没有直接提供获取request对应map的方法,而是需要用get()方法传入参数获取对应的Map对象
            Map<String,Object> requestmap=(Map<String, Object>) actioncontext.get("request");
            requestmap.put("key", "RequestValue");
            
            //4.获取parameters对应的map对象
            //注意:    1.getParameters的返回值是Map<String,Object>而不是Map<String,String[]>
            //        2.Parameters的这个Map只能读不能写,如果写入不出错,也不起作用
            Map<String,Object> parammap=actioncontext.getParameters();
            System.out.println(((String[])parammap.get("name"))[0]);
            return "success";
        } 
    }

       2.实现XxxAware接口

    package com.TestAware;
    
    import java.util.Map;
    
    import org.apache.struts2.ServletActionContext;
    import org.apache.struts2.interceptor.ApplicationAware;
    import org.apache.struts2.interceptor.ParameterAware;
    import org.apache.struts2.interceptor.RequestAware;
    import org.apache.struts2.interceptor.SessionAware;
    
    /**
     * 通过调用Aware接口的方法来获取相应的Map对象
     * @author Administrator
     *
     */
    public class TestAware implements ApplicationAware,SessionAware,RequestAware,ParameterAware{
        private Map<String,Object> application;
        private Map<String,Object> request;
        private Map<String,String[]> parameter;
        
        private String name;
        
        
        public String execute(){
            System.out.println("request:"+request.get("names"));
            String []str=parameter.get("name");
            System.out.println(str[0]);
            System.out.println(getName());
            application.put("ApplicationKey", "ApplicationValue");
            return "success";
        }
    
        @Override
        public void setSession(Map<String, Object> arg0) {
            // TODO Auto-generated method stub
            
        }
    
        @Override
        public void setApplication(Map<String, Object> arg0) {
            this.application=arg0;
        }
    
        @Override
        public void setParameters(Map<String, String[]> parameters) {
            this.parameter=parameters;
        }
    
        @Override
        public void setRequest(Map<String, Object> request) {
            this.request=request;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
    }

    二.与ServletApi耦合的方式:可以访问更多的ServletAPI的方法

      1.使用ServletActionContext

      2.实现ServletXxxAware接口

    ————我愿乘风破浪,踏遍黄沙海洋
  • 相关阅读:
    ios特性访问器方法(setter和getter)
    JavaScript文本收缩展开 showdetail
    MSClass (Class Of Marquee Scroll通用不间断滚动JS封装类) Ver 1.65
    拖动层 拖动div 封装js 貌似不兼容FF,郁闷
    cookie中存储json
    页面get post等查看
    瑞星杀毒软件2010年1月11日8:29:28 【免费】
    div两侧的boder断开 消失 奇怪
    用来武装Firebug的十四款Firefox插件
    在内容页中调用母版页控件、响应控件消息(用户控件、服务器控件有所不同)
  • 原文地址:https://www.cnblogs.com/wb1993/p/5610633.html
Copyright © 2011-2022 走看看