struts2 获取web资源的两种方式

一个struts2的请求就是一个action
能够处理struts2请求的类就是Action类

获取web资源的方法:(松耦合)

通过ActionContext获取

ActionContext 是action的执行上下文对象 ,可在一个ActionClass中获取action实例的上下文

ActionContext actionContext = ActionContext.getContext();

Map applicationMap = actionContext.getAppliction();

aplicationMap.put("applicationKey","applicationValue");

//相同的还有

Map sessionMap = actionContext.getSession();

sessionMap.put("sessionKey","sessionvalue");

//获取request比较特殊,strurs2并没有提供该方法,所以要手动来获取

Map requsetMap = (Map parametersMap = actionContext.getParameters();

(String[]) parametersMap.get("name")[0];

//parameters只能读 不能写入数据 


通过Aware 接口获取

public class TestAware implements ApplicationAware, SessionAware, RequestAware{
    public String execute(){
        //添加一个属性
        application.put("applicationKey","applicationValue");

        //获取一个属性
        Object data = application.get("data");
        return "success";
    }

    private Map application;
    @override
    public void setApplication(Map application){
        this.application = application;
    }
}

需要注意的是 session 对应的Map是SessionMap类型的,通过强转后调用其invalidate()方法会使其失效

SessionMap sm = (SessionMap) sessionMap;
sm.invalidate();

获取web资源的方法(与servlet紧耦合)

你可能感兴趣的:(struts2 获取web资源的两种方式)