Stack context中的request、session和application是对JSP中的request、session和application的进一步封装,将其封装成为Map类型,在编写action传递数据时既可以使用stack context中的三大对象,也可以使用JSP中的三大对象,但是一般都推荐使用stack context中的request、session、application来实现数据的传递。
1.使用map封装原有类型的原理(了解)
public class SessionMap extends AbstractMap{
privateHttpSession session;
publicSessionMap(HttpSession session){
this.session= session;
}
//重写Map的put方法
publicvoid put(Object key,Object value){
session.setAttribute(key.toString(),value);//封装setAttribute方法
}
//重写Map的get方法
publicObject get(Object key){
returnsession.getAttribute(key.toString); //封装getAttribute方法
}
}
2.如何在action中使用三大对象。
1)在action中获取stack context中的Request(推荐)
ActionContext acx=ActionContext.getContext();
Maprequest=(Map)acx.get("request");
request.put("list", list);
2)在action中获取stack context中的Session(推荐)
ActionContext acx=ActionContext.getContext();
Mapsession=(Map)acx.get("session");
//或 Map session=(Map)acx.getSession();
session.put("list", list);
3)在action中获取stack context中的Application(推荐)
ActionContext acx=ActionContext.getContext();
Mapapplication=(Map)acx.get("application");
// Map application=(Map)acx.getApplication();
application.put("list", list);
1)在action中获取JSP中的request(不推荐)
HttpServletRequest request=ServletActionContext.getRequest();
request.setAttribute("list", list);
2)在action中获取JSP中的session(不推荐)
HttpSession session=ServletActionContext.getRequest().getSession();
session.setAttribute("list", list);
3)在action中获取JSP中的application(不推荐)
ServletContext application=ServletActionContext.getServletContext();
application.setAttribute("list", list);