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接口

    ————我愿乘风破浪,踏遍黄沙海洋
  • 相关阅读:
    2017.9.29 ubuntu安装mysql服务
    如何在树莓派上安装mjpeg-streamer(针对摄像头为UVC的)
    2016.9.22感想及收获
    GL-iNET路由器如何安装DDNS服务
    2016.7.5 记项目过程中犯的一个从未察觉的低级错误
    C++课程笔记 Lesson 01
    关于Jlink在linux系统下连接错误的解决方法
    如何通过命令提示符进入MySQL服务器
    java面试题
    hive面试题
  • 原文地址:https://www.cnblogs.com/wb1993/p/5610633.html
Copyright © 2011-2022 走看看