• Struts2中获取Web元素request、session、application对象的四种方式


           我们在学习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 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对象三种方法已经说明完毕了,有不足的地方,希望大家多多提意见!

  • 相关阅读:
    .NET开发相关使用工具和框架
    Jquery.KinSlideshow 焦点图标轮换
    可能发生了架构损坏。请运行 DBCC CHECKCATALOG。
    mssql使用问题大合集
    做饭流程js
    点击导航切换和隐藏
    批量修改文件名后缀
    GB2312转码utf-8字符方法
    border三角形的3种方式
    移动端nav导航栏
  • 原文地址:https://www.cnblogs.com/nanyangke-cjz/p/7203423.html
Copyright © 2020-2023  润新知