方法1.通过 ActionContext.getActionContext() 返回了一个ActionContext
通过以下方法获取
代码如下 | 复制代码 |
ActionContext ac = ActionContext.getContext(); 如果要获取其他范围的属性 |
map application = ac.getApplication();
说明:上面的方法获得得到的是map对象,这个是struts模拟出来的application真实的application,被封装在struts框架之中,这样的好处是使得action与servlet API之间解耦
方法2.通过实现下面的接口
ServletContextAware:实现这个接口可以访问Web应用的ServletContext实例
ServletRequestAware:实现这个接口可以访问Web应用的HttpServletRequest实例
ServletResponseAware:实现这个接口可以访问Web应用的HttpServletResponse实例
例如下面这个例子
代码如下 | 复制代码 |
public class LoginAction extends ActionSupport implements ServletRequestAware @Override |
其他接口与这个类似;
说明:这个获取到的是纯正的jsp内置对象,没有经过struts封装。也就是说我们的action可以直接使用Servlet的API,同时产生了之间的耦合
方法3.ServletActionContext
利用这个静态类,可以之间获取到jsp的内置对象
代码如下 | 复制代码 |
ServletActionContext.getServletContext(); |
说明:个人觉得这个比较方便,如果要直接使用servlet中的api推荐用这个方法