高淇Struts2.0教程之视频笔记(6)
6_ActionContext对象的使用_debug标签_获取真正的HttpServletRequest等web容器信息
简单来说就是调用特定方法获取map表中的值
6.1用ActionContext获取Web容器信息
以下是获取request、response、session演示,不是HttpServletRequest等对象。
6.1.1由前一视频知道,数据都放在map表中,所以可以通过一些方法获得放在request、response、session里面的值
6.1.2页面获取获取设定好的值
6.1.3页面Debug测试ActionContext里面的值
小结:
上面测试,可以知道,通过ActionContext可以获取session、request、application,但他们并不是真正的HttpServletRequest,ttpServletResponse,ServletContext对象,而是将这三个对象包装成Map对象,Struts框架通过他们和真正的web容器对象交互。
获得session : ac.getSession().put("s","ssss");
获得request : Map m = ac.get("request");
获得application : ac.getApplication();
Ps:
getSession()等这一类的代码不要在Action的构造函数里或直接给属性赋值,因为此时ActionContext里的一些值也许没有设置,这时通过ActionContext取得的值也许是null
ActionContext、Action本身和HttpServletRequest对象没有关系,但是为了能够EL表达式(语法结构:${expression}),JSTL(JSP Standard Tag Library ,JSP标准标签库)能够直接操作他们的属性,会有一个拦截器将ActionContext、Action中的属性通过类似request.serAttribute方法置入request中,这样我们也可以通过${requestScope.uname}即可访问到ActionContext、Action中的属性。
注意:Struts2后,使用装饰器模式来实现上述功能。
6.2用ServletActionContext获取真正的Web容器信息
6.2.1使用ServletActionContext类获取相关对象,代码如下:
HttpServletRequest reg = ServletActionContext.getRequest();
ServletActionContext.getRequest().getSession();
ServletActionContext.getServletContext();
6.2.2代码演示
6.3 代码截图总结