Servlet中有三大作用域:
request : 作用于一次请求,
session:作用于一个浏览器中,在浏览器不关闭的情况下多次响应都有效
servletContext(application):作用于一个web应用中,在整个程序中都有效,因其作用范围太大所以在开发中用的很少。
那么在struts2中如何获取这三个作用域呢?
有两种方式:
1. 使用ServletActionContext获取到3个作用域对象
//获取request对象 HttpServletRequest request = ServletActionContext.getRequest(); //获取session对象 HttpSession session = Request.getSession(); //获取ServletContext对象 HttpServletContext servletContext = session.getServletContext();
使用作用域对象:
request.setAttribute(“参数名”, 参数);
session.setAttribute(“参数名”, 参数);
2. 实现XxxAware接口 RequestAware SessionAware ApplicationAware
如要获取request对象,
第一步需要在Action类上获取 RequestAware 接口。
第二步要定义一个私有的Map属性,泛型定义为String,Object,属性名为request
例如:
private Map<String,Object> request;
getter && setter
第二步要实现 RequestAware接口的一个方法,
这个方法类似于request的set方法,但并不是。
@Override public void setRequest(Map<String, Object> request) { // TODO Auto-generated method stub this.request = request; }
其他作用域的获取也是一样的,
session要实现SessionAware接口
application要实现ApplicationAware接口