Struts2之Web容器对象的使用
前段时间确实也比较忙的,忙着考试,忙着写实验,各种忙碌以至于迷失了自己,这两天稍稍轻松点,坐在高大上的中南新校图书馆里面的咖啡厅,吹着空调喝着咖啡,顿时心旷神怡,整理整理所遇到的问题总结一下,只有在知识的汪洋中我才能找到自己。
学习确实是一件非常幸福快乐的事情,乐在其中,用心去体会,慢慢品尝。虽然我们还在为我们的未来施肥洒水,除草,等待未来可以为社会贡献自己一份力,顺便实现人生价值,体会人生之乐。
我们使用过servlet后就会知道request,session,application这三大对象对于我们实现后台和前台的数据交互的重要性,当然我们使用struts2这个表示层框架进行开发时,当然也少不了这三个对象的使用。
然而 为了避免与Servlet API耦合在一起,方便Action类做单元测试,Struts 2对HttpServletRequest、
HttpSession、ServletContext进行封装,构造了3个Map对象来替代这三种对象。但是其作用效果是不改变的。
为获取这三个对象,
1.可以通过com.opensymphony.xwork2.ActionContext类来获取。
ActionContext context = ActionContext.getContext();
Map request=(Map) context.get("request");
Map session = context.getSession();
Map application=context.getApplication();
对这三个对象进行存取的时候和操作Map对象是一样的就不需要像以前那样setAttribute()了,方便了好多。
2.我们还可以通过RequestAware、SessionAware和ApplicationAware来获取这三个Map对象。
public class UserAction implements RequestAware,SessionAware,ApplicationAware{
private Map request;
private Map session;
private Map application;
public void setApplication(Map<String, Object> arg0) {
this.application=arg0;
}
public void setSession(Map<String, Object> arg0) {
this.session=arg0;
}
public void setRequest(Map<String, Object> arg0) {
this.request=arg0;
}
}
3.当然我们也可以在Action中直接访问Web容器提供的request、session等对象,但不建议这么使用。
HttpServletRequest request=ServletActionContext.getRequest();
HttpSession session=request.getSession();
ServletContext context=ServletActionContext.getServletContext();