高淇Struts2.0教程之视频笔记(6)

6_ActionContext对象的使用_debug标签_获取真正的HttpServletRequestweb容器信息

 

简单来说就是调用特定方法获取map表中的值

6.1ActionContext获取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 代码截图总结

原文地址:https://www.cnblogs.com/FreshStudent/p/3634567.html