您的位置:首页 > 编程语言 > Java开发

Struts2两种解耦访问WEB资源的方式

2013-09-02 15:28 393 查看
一.通过com.opensymphony.xwork2.ActionContext

public Object get(Object key): ActionContext 类中没有提供类似 getRequest() 这样的方法来获取 HttpServletRequest 对应的 Map 对象. 

要得到 HttpServletRequest 对应的 Map 对象, 可以通过为 get() 方法传递 “request” 参数实现

/**
* 与Servlet API解耦的方式访问WEB资源 之解耦访问方式一
* ActionContext 中保存了 Action 执行所需要的所有对象, 包括 parameters, request, session, application 等.
*/
public String test1(){
ActionContext actionContext = ActionContext.getContext();

Map<String,Object> requestMap = (Map<String, Object>) actionContext.get("request");
requestMap.put("requestKey", "requestValue");

Map<String,Object> sessionMap = actionContext.getSession();
sessionMap.put("sessionKey", "sessionValue");

Map<String,Object> applicationMap = actionContext.getApplication();
applicationMap.put("applicationKey", "applicationValue");

return "success";
}
二.让Action实现如下接口:
1.org.apache.struts2.interceptor.RequestAware

2.org.apache.struts2.interceptor.SessionAware

3.org.apache.struts2.interceptor.ApplicationAware

public class WebInfoAction implements RequestAware,SessionAware,ApplicationAware{
/**
* 与Servlet API解耦的方式访问WEB资源 之解耦访问方式二
*
* Action 类通过可以实现某些特定的接口, 让 Struts2 框架在运行时向 Action
* 实例注入 parameters, request, session 和 application 对应的 Map 对象:
* 这个注入操作不需要我们去注入
*/
private Map<String, Object> applicationMap;
private Map<String, Object> sessionMap;
private Map<String, Object> requestMap;
public String test2(){
ActionContext actionContext = ActionContext.getContext();

requestMap.put("requestKey", "requestValue2");

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

applicationMap.put("applicationKey", "applicationValue2");

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 setRequest(Map<String, Object> requestMap) {
this.requestMap = requestMap;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: