Struts2中直接访问Servlet有IoC和非IoC两种方式
- IoC访问Servlet时Action实现类必须实现一些接口;
- 非IoC访问Servlet时可使用Struts2提供的辅助类来访问
Action直接访问Servlet方式中提供的辅助类是ServletActionContext
1.IoC方式 在Action中实现以下接口
ServletRequestAware 实现该接口的Action可以直接访问request对象,该接口中提供有void setServletRequest(HttpServletRequest request)
SevletResponseAware 实现该接口的Action可以直接访问response对象,该接口中提供有void setServletResponse(HttpServletResponse response)
SessionAware 实现该接口的Action可以直接访问session独享,该接口中提供有void setSession(Map map)方法
public class IoCAction extends ActionSupport implements ServletRequestAware{
private String userName;
private String password;
get,set
private HttpServletRequest request;
//必须实现该方法,该方法是接口中的方法
public void setServletrequest(HttpServletRequest hsr){
request=hsr;
}
public String execute() throws Exception
{
HttpSession session=request.getSession();
session.setAttribute("userName", this.userName);
}
}
2.非IoC方式 Struts2提供ServletActionContext类帮助获得Servlet
static getRequest() 获取web应用程序的request对象
static getResponse() 获取web应用程序的response对象
public class NoIoCAction extends ActionSupport{
private String userName;
private String password;
get,set
public String execute() throws Exception
{
//调用ServletActionContext的getRequest()方法获取request对象
HttpServletRequest request=ServletActionContext.getRequest();
//调用request对象的getSession()方法获取session对象
HttpSession session=request.getSession();
session.setAttribute("userName", this.userName);
}
}