struts2的Action中如何取得request ,session,application域对象(IOC方式和非IOC方式)
IOC方式获取域对象的方法有两种:
1、实现ApplicationAware, RequestAware, SessionAware接口,通过IoC取得Map类型。
public class User4Action implements ApplicationAware, RequestAware, SessionAware {
/*域对象传值方法(IOC方式)
域对象--范围对象
application---ServletContext
session---HttpSession
request---HttpServletRequest
response--HttpServletResponse*/
// 声明application属性
private Map<String, Object> application;
// 声明 request属性
private Map<String, Object> request;
// 声明session属性
private Map<String, Object> session;
@Override
public void setSession(Map<String, Object> session) {
this.session = session;
}
@Override
public void setRequest(Map<String, Object> request) {
this.request = request;
}
@Override
public void setApplication(Map<String, Object> application) {
this.application = application;
}
public String insert() {
// 从域中取出值
Object id = application.get("id");
Object name = request.get("name");
Object content = session.get("content");
System.out.println(id + "," + name + "," + content);
// 设置值到域中
application.put("id", "application");
request.put("name", "request");
session.put("content", "session");
return "insert";
}
}
2、实现ServletRequestAware,ServletContextAware接口,通过IoC取得真实类型。
public class User2Action implements ServletContextAware, ServletRequestAware, ServletResponseAware {
/* 域对象传值方法(IOC方式)
域对象--范围对象
application---ServletContext
session---HttpSession
request---HttpServletRequest
response--HttpServletResponse*/
private ServletContext application;
private HttpServletRequest request;
private HttpServletResponse response;
private HttpSession session;
@Override
public void setServletResponse(HttpServletResponse response) {
this.response = response;
}
@Override
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}
@Override
public void setServletContext(ServletContext application) {
this.application = application;
}
public String insert() {
//从域对象中取出值
String id = (String) application.getAttribute("id");
String name = (String) request.getAttribute("name");
String content = (String) request.getSession().getAttribute("content");
System.out.println(id + "," + name+","+content);
//将值添加到域对象中
application.setAttribute("id", "application");
session.setAttribute("name", "session");
request.setAttribute("content", "request");
return "insert";
}
}
非IOC方式方式获取域对象:
public class UserAction {
// 域对象传值方法(非IOC方式)
public String insert() {
// 获取域对象
ServletContext application = ServletActionContext.getServletContext();
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = ServletActionContext.getRequest().getSession();
HttpServletResponse response = ServletActionContext.getResponse();
// 取出域对象值
String id = (String) application.getAttribute("id");
String name = (String) request.getAttribute("name");
String sessionvalue = (String) session.getAttribute("session");
System.out.println(id + "," + name + "," + sessionvalue);
// 给域对象添加值
application.setAttribute("key", "application");
session.setAttribute("key", "session");
request.setAttribute("key", "request");
return "insert";
}
}