当只需要往三个范围内放入和取出数据时就可以使用ActionContext对象,而当需要得到ServletAPI时比如需要得到某个文件的绝对路径时就可以使用ServletActionContext
package blog.action;
import java.util.Arrays;
import java.util.Date;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionContext;
public class HelloWorld {
private Date birthday;
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String execute(){
ActionContext ctxt = ActionContext.getContext();
ctxt.getApplication().put("app", "应用范围");
ctxt.getSession().put("ses", "session范围");
ctxt.put("req", "请求范围");
//放复合类型的数据
ctxt.put("names", Arrays.asList("zhangsan","lisi","wangwu"));
return "success";
}
public String add(){
ServletContext sc = ServletActionContext.getServletContext();
HttpServletRequest request = ServletActionContext.getRequest();
request.setAttribute("request", "in request scope");
request.getSession().setAttribute("session", "session scope");
sc.setAttribute("application", "application scope");
return "message";
}
}
<form action="<%=request.getContextPath() %>/control/employee/add_add.action">
<input type="submit" value="提交"><br/>
${applicationScope.app }<br/>
${sessionScope.ses }<br/>
${requestScope.req }<br/>
===============================<br/>
<c:forEach items="${names}" var="name">
${name }<br/>
</c:forEach>
</form>