action 耦合方式

//ActionContext 方式

package com.hanqi.action;

import java.util.Map;

import com.opensymphony.xwork2.ActionContext;

public class TestAction {
//封装
//解耦
//用ActionContext
public String testWeb()
{
//访问Web资源
System.out.println("经过了Action类");
//单例模式
//Action实例的上下文对象
ActionContext ac=ActionContext.getContext();

		//1.获取application
		Map<String,Object>mapApp=ac.getApplication();
		
		System.out.println("app1="+mapApp.get("app1"));
		
		//放入新的键值对
		mapApp.put("app2","新放入的application");
		
		//2.获取session资源
		Map<String,Object>ses=ac.getSession();
		
		System.out.println("ses="+ses.get("ses1"));
		
		ses.put("ses2", "新放入的session");
		ses.remove("ses1");
		
		Map<String,Object>mapReq=(Map<String,Object>)ac.get("request");
		
		//不能获取之前的request属性
		System.out.println("req="+mapReq.get("req1"));
		//可以放入新的
		mapReq.put("req2", "新放入的request");
		//4直接获取传递的参数
		Map<String,Object>mapPar=ac.getParameters();
		//参数值被封装成String[]
		String[]str=(String[])mapPar.get("user");
		for(String t:str)
		{
			System.out.println("user="+t);
		}
		//放入新的参数,不能被获取到
		mapPar.put("pw", new String[]{"123456"});
		return "success";
	}

}

实现接口方式

package com.hanqi.action;

import java.util.Map;

import org.apache.struts2.interceptor.ApplicationAware;
import org.apache.struts2.interceptor.ParameterAware;
import org.apache.struts2.interceptor.RequestAware;
import org.apache.struts2.interceptor.SessionAware;

public class TestActionAware implements ApplicationAware
,SessionAware ,RequestAware,ParameterAware{

private Map<String, Object> mapApp,mapSes,mapReq;

private Map<String, String[]>mapPar;
//实现ApplicationAware接口的方法
//提供给StrutS2进行调用,放入Application的数据集合
@Override
public void setApplication(Map<String, Object> arg0) {
	
	//接收
	mapApp=arg0;
	
}

public String testAware()
{
	//1访问application
	System.out.println("app1="+mapApp.get("app1"));
	
	mapApp.put("app2","以Aware方式放入的Application");

	
	//2.访问session
	System.out.println("ses1="+mapSes.get("ses1"));
	
	mapSes.put("ses2", "以Aware方式放入的session");
	
	
	//3. 访问Request
	System.out.println("req1="+ mapReq.get("req1"));
	
	
	mapReq.put("req2", "以Aware方式放入的request");
	//4.访问Parameter
	String[]str=mapPar.get("user");
	for(String st:str)
	{
		System.out.println("user="+st);
	}
	mapPar.put("pw",new String[]{"123"});
	
	
	
	return "success";
	
}

@Override
public void setSession(Map<String, Object> arg0) {


	mapSes=arg0;
	
}

@Override
public void setRequest(Map<String, Object> arg0) {
	mapReq=arg0;
	
}

@Override
public void setParameters(Map<String, String[]> arg0) {
	mapPar=arg0;
}

}

原文地址:https://www.cnblogs.com/nicebaby/p/6086546.html