|--ActionContext action中的上下文对象
|-- ServletActionContext (com.opensymphony.webwork.ServletActionContext),
ServletActionContext 直接继承了ActionContext ,提供直接与Servlet相关对象访问的功能
从ServletActionContext里取得Servlet的相关对象
取得HttpServletRequest对象:
HttpServletRequest request = ServletActionContext. getRequest();
取得HttpSession对象:
HttpSession session = ServletActionContext. getRequest().getSession();
公共接口类HttpServletRequest继承自ServletRequest类,每一次客户端发出的请求都会封装成一个HttpServletRequest对象,包括地址,请求的参数,提交的数据,Ip地址等
方法一,直接通过servlet API直接获取
HttpServletRequest request=ServletActionContext.getRequest();
HttpSession session=request.getSession();
ServletContext application=ServletActionContext.getServletContext(); //获取servlet的上下文对象
request.setAttribute("request_data", "request_data");
session.setAttribute("session_data", "session_data");
application.setAttribute("application_data", "application_data");
方法二:通过ActionContext类
ActionContext context=ActionContext.getContext(); //ActionContext对象就是一个map容器
Map<String,Object request=context.getContextMap(); //拿到request的map
Map<String,Object> sessi> on=context.getSession(); //拿到session的map
Map<String,Object> application=context.getApplication(); //拿到servletContext的map
request.put("request_data", "request_data_actionContext");
request.put("session_data", "session_data_actionContext");
request.put("application_data", "application_data_actionContext");
方法三:通过实现RequestAware , SessionAware ,ApplicationAware接口
重写接口中的方法:
public class DataAction extends ActionSupport
implements RequestAware,SessionAware,ApplicationAware{
private Map<String,Object> request;
private Map<String,Object> session;
private Map<String,Object> application;
public void setApplication(Map<String, Object> application) {
this.application=application;
}
public void setSession(Map<String, Object> session) {
this.session=session;
}
public void setRequest(Map<String, Object> request) {
this.request=request;
}
@Override
public String execute() throws Exception {
request.put("request_data", "request_data_actionAware");
session.put("session_data", "session_data_sessionAware");
application.put("application_data", "_data_applicationAware");
return SUCCESS;
}