如果要取得Servlet API 中的一些对象,如request、response或session,在struts2 中可以有两种方式获得这些对象:
① 非IoC(Inversion of Contorl)方式
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
HttpSession session = request.getSession();
如果你只想访问session的属性(Attribute)或添加session的属性,你可以通过下面的方式。
Map session = ActionContext.getContext().getSession();
session.put("username", "joe");
String username = (String)session.get("username");
② IoC方式
要使用IoC方式,首先要告诉IoC容器(Container)想要取得摸个对象的意愿,通过实现相应的接口做到这点。包括 SessionAware、ServletRequestAware、ServletResponseAware,这样就可以在该类中定义对应的变量了。
public class IoCServlet extends ActionSupport implements SessionAware,ServletRequestAware,ServletResponseAware{
private Map att;
private HttpServletRequest request;
private HttpServletResponse response;
public void setSession(Map att){
this.att = att;
}
public void setServletRequest(HttpServletRequest request){
this.request = request;
}
public void setServletResponse(HttpServletResponse response){
this.response = response;
}
public String execute(){
}
}