Struts2 action中访问jsp内置对象方法

作者:袖梨 2022-11-14

方法1.通过 ActionContext.getActionContext() 返回了一个ActionContext
通过以下方法获取

代码如下 复制代码

ActionContext ac = ActionContext.getContext();
ac.get("tip"); //默认是获取request中的属性,获取request内置对象的tip属性

如果要获取其他范围的属性
ac.getApplication().get("tip") //获取application范围的tip属性
ac.getApplication().put("tip", "abc"); //设置application范围的tip属性为abc
ac.getSession().get("tip"); //获取session范围的tip属性
ac.getSession().put("tip", "abc"); //设置session范围的tip属性为abc


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
{
HttpServletRequest hsr = null;
@Override
public void setServletRequest(HttpServletRequest request) {
hsr = request;
}

@Override
public String execute() throws Exception
{
hsr.getAttribute("tip"); //获取request范围的tip属性
}
}

其他接口与这个类似;

说明:这个获取到的是纯正的jsp内置对象,没有经过struts封装。也就是说我们的action可以直接使用Servlet的API,同时产生了之间的耦合

方法3.ServletActionContext

利用这个静态类,可以之间获取到jsp的内置对象

代码如下 复制代码

ServletActionContext.getServletContext();
ServletActionContext.getRequest();
ServletActionContext.getRequest().getSession();

说明:个人觉得这个比较方便,如果要直接使用servlet中的api推荐用这个方法

相关文章

精彩推荐