方式一:与Servlet API解耦的方式
可以使用struts2中提供的Map对象来访问HttpRequest,HttpSession和ServletContext对象,要获取这三个Map对象,可以使用com.opensymphony.xwork2.ActionContext类提供的静态方法
ActionContext ctx=ActionContext.getContext();
ctx.getApplication().put(“app”,”Application应用对 象”);//ServletContext放入app
ctx.getSession().put(“ses”,”session应用对象”);
ctx.put(“req”,”request对象”);
方式二:与Servlet API解耦的方式 实现相关接口
public class ServletAware implements ApplicationAware,SessionAware,RequestAware,ParameterAware{
public String execute(){
//session实际上是SessionMap的实例,可以调用invalidate方法让session失效
if(session instanceof SessionMap){
SessionMap sessionMap=(SessionMap) session;
((SessionMap) session).invalidate();
}
return "success";
}
private Map<String,String[]> parameters;
private Map<String,Object> request;
private Map<String,Object> session;
private Map<String,Object> application;
@Override
public void setParameters(Map<String, String[]> arg0) {
parameters=arg0;
}
@Override
public void setRequest(Map<String, Object> arg0) {
request=arg0;
}
@Override
public void setSession(Map<String, Object> arg0) {
session=arg0;
}
@Override
public void setApplication(Map<String, Object> arg0) {
application=arg0;
}
}
:
上面的两个个方法,仅相当与request,session,applicationsetAttribute(string,object)方法。
struts2中提供的Map对象来提供类似request,session,application内置对象的功能,这些内置对象只有内置对象的一小部分功能,它不依赖于servlet,所以是解耦合的!!!
方式三:与Servlet API耦合的访问方式
也可以直接访问Servlet环境中的HttpRequest,HttpSession和ServletContext对象。通过ServletActionContext.类提供的静态方法直接获取:
HttpServletRequest request=ServletActionContext.getRequest();
ServletContext context=ServletActionContext.getServletContext();
HttpSession session=request.getSession();
HttpServletResponse response=ServletActionContext.getResponse();
方式四:与Servlet API耦合的方式 实现相应的接口
public class TestServletAwareAction implements ServletResponseAware,ServletContextAware,ServletRequestAware{
public String execute(){
return "success";
}
@Override
public void setServletResponse(HttpServletResponse arg0) {
// TODO Auto-generated method stub
}
@Override
public void setServletContext(ServletContext arg0) {
// TODO Auto-generated method stub
}
@Override
public void setServletRequest(HttpServletRequest arg0) {
// TODO Auto-generated method stub
}
}