struts2的Action并未直接与任何Servlet API耦合。但是struts2提供了
一个ActionContext类,struts2的Action可以通过该类来访问Servlet API。
下面是ActionContext类常用的几种方法:
Object get(Object key):该方法类似于调用HttpServletRequest的getAttribute(String name)方法;
Map getApplication();返回一个Map对象,该对象模拟了该应用的ServletContext实例;
static ActionContext getContext();静态方法,获取系统的ActionContext实例;
Map getParameters();获取所有请求的参数。类似于调用HttpServletRequest对象的getParameterMap方法;
Map getSSession(); 返回一个Map对象,该Map对象模拟了HttpSession实例;
void setApplication(Map application):直接传入一个Map实例,将该Map实例里的key-value对转换成
application的属性名、属性值;
void setSession(Map session):直接传入一个Map实例,将该Map实例里的key-value对转换成
session的属性名、属性值;
------------------------------------------------------------------------------------------------
例如:
//获取ActionContext实例,通过该实例访问Servlet API
ActionContext ctx= ActionContext.getContext();
//将登录的username设置成一个HttpSession属性
ctx.getSession().put("user",getUsername());
//直接设置HttpServletRequest属性
ctx.put("tip","服务器提示:登录失败");
//获取ServletContext里的counter属性
Integer counter = (Integer)cxt.getApplication().get("counter");
-----------------------------------------------------------------------------------------------
JSP页面如何访问Action中设置的属性:
例如:
//通过表达式访问ServletContext对象的属性
${applicationScope.counter}
//通过表达式访问HttpSession对象的属性
${sessionScope.user}
//通过表达式访问HttpServletRequest对象的属性
${requestScope.tip}