Struts2中获取Web元素requestsessionapplication对象的四种方式
Posted 南阳客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Struts2中获取Web元素requestsessionapplication对象的四种方式相关的知识,希望对你有一定的参考价值。
我们在学习web编程的时候,一般都是通过requet、session、application(servletcontext)进行一系列相关的操作,request、session、和application他们都是web开发最常用和最实用的对象,有了它们可以大大方便开发人员进行开发和操作。但是在struts2中,基本都是action,这些个方法都是没有requet、session、application,所以如何获取这几个常用对象,也成了大家都比较关注的问题,下面我就来演示下,如何在struts2中来获取这三个对象。
方式一:通过ActionContext对象来获取
package com.action.day01; import java.util.Map; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; /** * 取map类型的request、session、servletcontext * 通过ActionContext对象来获取 * @author Administrator * */ public class AccessWebElementAction extends ActionSupport { private Map<String, Object> request; private Map<String, Object> session; private Map<String, Object> application; public AccessWebElementAction() { request = (Map<String, Object>) ActionContext.getContext().get("request"); session = ActionContext.getContext().getSession(); application = ActionContext.getContext().getApplication(); } public String getWebElement() { //将数据存到requet中 request.put("r1", "r1"); //将数据存到session中 session.put("s1", "s1"); //将数据存到application中 application.put("a1", "a1"); return SUCCESS; } }
方式二:通过实现RequestAware, SessionAware, ApplicationAware这三个接口的方式来获取(最常用)
package com.action.day01; import java.util.Map; import org.apache.struts2.interceptor.ApplicationAware; import org.apache.struts2.interceptor.RequestAware; import org.apache.struts2.interceptor.SessionAware; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; /** * 取map类型的request、session、servletcontext 通过是实现RequestAware, SessionAware, * ApplicationAware 然后把我们定义的变量传递进去,进行初始化,由容器自动办帮我们创建,我们只是传递个参数变量进去接收对象即可 * * @author Administrator * */ public class AccessWebElementAction2 extends ActionSupport implements RequestAware, SessionAware, ApplicationAware { private Map<String, Object> request; private Map<String, Object> session; private Map<String, Object> application; public AccessWebElementAction2() { request = (Map<String, Object>) ActionContext.getContext().get("request"); session = ActionContext.getContext().getSession(); application = ActionContext.getContext().getApplication(); } public String getWebElement() { // 将数据存到requet中 request.put("r1", "r1"); // 将数据存到session中 session.put("s1", "s1"); // 将数据存到application中 application.put("a1", "a1"); return SUCCESS; } @Override public void setApplication(Map<String, Object> application) { this.application = application; } @Override public void setSession(Map<String, Object> session) { this.session = session; } @Override public void setRequest(Map<String, Object> request) { this.request = request; } }
方式三:通过ServletActionContext对象来获取Http类型的request、session、application
package com.action.day01; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; /** * 取Http类型的request、session、servletcontext 通过ServletActionContext对象来获取 * * @author Administrator * */ public class AccessWebElementAction3 extends ActionSupport { private HttpServletRequest request; private HttpSession session; private ServletContext application; public AccessWebElementAction3() { request = ServletActionContext.getRequest(); session = ServletActionContext.getRequest().getSession(); application = ServletActionContext.getServletContext(); } public String getWebElement() { // 将数据存到requet中 request.setAttribute("r1", "r1"); // 将数据存到session中 session.setAttribute("s1", "s1"); // 将数据存到application中 application.setAttribute("a1", "a1"); return SUCCESS; } }
方式四:通过实现ServletRequestAware接口获取HttpServletRequest对象,进而通过request对象获取session和application对象
package com.action.day01; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.apache.struts2.ServletActionContext; import org.apache.struts2.interceptor.ServletRequestAware; import com.opensymphony.xwork2.ActionSupport; /** * 取Http类型的request、session、servletcontext 通过实现ServletRequestAware接口来获取 * * @author Administrator * */ public class AccessWebElementAction4 extends ActionSupport implements ServletRequestAware { private HttpServletRequest request; private HttpSession session; private ServletContext application; public AccessWebElementAction4() { session = request.getSession(); application = request.getServletContext(); } public String getWebElement() { // 将数据存到requet中 request.setAttribute("r1", "r1"); // 将数据存到session中 session.setAttribute("s1", "s1"); // 将数据存到application中 application.setAttribute("a1", "a1"); return SUCCESS; } @Override public void setServletRequest(HttpServletRequest request) { // 使用我们定义的属性来获取容器自动创建的HttpServletRequest对象 this.request = request; } }
至此,在struts2中方式,获取request、sessioin、application对象三种方法已经说明完毕了,有不足的地方,希望大家多多提意见!
以上是关于Struts2中获取Web元素requestsessionapplication对象的四种方式的主要内容,如果未能解决你的问题,请参考以下文章
关于Struts2中Action从表单取值并且存到Web元素中(session)