struts2访问或添加request/session/application属性
当只需要往三个范围内放入和取出数据时就可以使用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>