Struts2-耦合方式和非耦合方式获取WEB资源
通过ActionContext进行获取
package com.xieth.struts2.action;
import java.util.Map;
import com.opensymphony.xwork2.ActionContext;
public class TestActionContextAction {
public String execute(){
ActionContext actionContext = ActionContext.getContext();
// 获取Application
Map<String, Object> applicationMap = actionContext.getApplication();
applicationMap.put("applicatonKey", "applicationValue");
System.out.println(applicationMap.get("date"));
// 获取Session
Map<String, Object> sessionMap = actionContext.getSession();
sessionMap.put("sessionKey", "sessionValue");
// 获取Request
Map<String, Object> requestMap = (Map<String, Object>) actionContext.get("request");
requestMap.put("requestKey", "requestValue");
// 获取请求参数对应的MAP
Map<String, Object> paramterMap = actionContext.getParameters();
System.out.println(((String[])paramterMap.get("name"))[0]);
// 这个 Map 只可以读 不可以写入数据 !!
paramterMap.put("age", 21);
return "success";
}
}
实现XxxAware接口
package com.xieth.struts2.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 TestAwareAction implements ApplicationAware, SessionAware, RequestAware, ParameterAware{
private Map<String, Object> applicationMap = null;
private Map<String, Object> sessionMap = null;
private Map<String, Object> requestMap = null;
private Map<String, Object> parameterMap = null;
public String execute(){
//1. application
applicationMap.put("applicationKey2", "applicationKey2Value");
System.out.println(applicationMap.get("date"));
//2. session
//3. request
//4. parameter
return "success";
}
@Override
public void setApplication(Map<String, Object> applicationMap) {
this.applicationMap = applicationMap;
}
@Override
public void setSession(Map<String, Object> sessionMap) {
this.sessionMap = sessionMap;
}
@Override
public void setParameters(Map<String, String[]> parameterMap) {
this.parameterMap = this.parameterMap;
}
@Override
public void setRequest(Map<String, Object> requestMap) {
this.requestMap = requestMap;
}
}
通过ServletActionContext进行获取
package com.xieth.struts2.action;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
/**
* 耦合的方式获取WEB资源
* @author YR
*
*/
public class TestServletActionContextAction {
public String execute(){
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();
ServletContext servletContext = ServletActionContext.getServletContext();
System.out.println("execute...");
return "success";
}
}
通过实现ServletXxxAware接口
package com.xieth.struts2.action;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import org.apache.struts2.util.ServletContextAware;
public class TestServletAwareAction
implements ServletRequestAware, ServletContextAware, ServletResponseAware{
private ServletContext servletContext;
public String execute(){
System.out.println(servletContext);
return "success";
}
@Override
public void setServletRequest(HttpServletRequest request) {
System.out.println(request);
}
@Override
public void setServletContext(ServletContext context) {
System.out.println(context);
servletContext = context;
}
@Override
public void setServletResponse(HttpServletResponse response) {
System.out.println(response);
}
}