软件开发架构平台技术-------Struts2之Web容器对象的使用

yaoyao0 2014-06-01

                         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();

 
 
 
 

相关推荐

sunh / 0评论 2013-06-19