yaoyao0 2014-06-01
前段时间确实也比较忙的,忙着考试,忙着写实验,各种忙碌以至于迷失了自己,这两天稍稍轻松点,坐在高大上的中南新校图书馆里面的咖啡厅,吹着空调喝着咖啡,顿时心旷神怡,整理整理所遇到的问题总结一下,只有在知识的汪洋中我才能找到自己。
学习确实是一件非常幸福快乐的事情,乐在其中,用心去体会,慢慢品尝。虽然我们还在为我们的未来施肥洒水,除草,等待未来可以为社会贡献自己一份力,顺便实现人生价值,体会人生之乐。
我们使用过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();