Struts2访问访问ServletApi的方式

    技术2022-07-29  75

    方式一、实现特定的接口

    ServletContext需要实现:ServletContextAware HttpServletRequest需要实现:ServletRequestAware HttpServletResponse需要实现:ServletResponseAware

    /* 不推荐,麻烦,非IOC方式,与Servlet API耦合大 */ public class MyAction implements ServletRequestAware,ServletResponseAware,ServletContextAware{ HttpServletRequest request; HttpServletResponse response; ServletContext application; @Override public void setServletRequest(HttpServletRequest arg0) { this.request = arg0; } @Override public void setServletResponse(HttpServletResponse response) { this.response = response; } @Override public void setServletContext(ServletContext context) { this.application = context; } }

    方式二、ActionContext工具类获取

    /* 通过ActionContext工具类: 完全和ServletAPI不耦合 一般推荐使用,IOC方式,只能获得request,而response则得不到 下面是ActionContext类中包含的几个常用方法。 1、public Object get(Object key):取得HttpServletRequest中key的值; 2、void put(String key,Object value):设置HttpServletRequest中key的值为value; 3、public Map getApplication():获取封装了ServletContext的Map对象; 4、void setApplication(Map application):设置ServletContext实例; 5、static ActionContext getContext():静态方法,获取系统的ActionContext实例; 6、Map getParameters():类似于HttpServletRequest中的getParametersMap方法; 7、public Map getSession():获取封装了HttpSession的Map对象; 8、void setSession(Map session):直接传入一个Map实例,将该Map实例里的key-value对转换为session的属性名和属性值; */ //获取ActionContext对象 ActionContext actionContext = ActionContext.getContext(); Map<String, Object> request = (Map<String, Object>) actionContext.get("request"); Map<String, Object> session = actionContext.getSession(); Map<String, Object> application = actionContext.getApplication();

    方式三、ServletActionContext工具类获取

    /* 通过ServletActionContext工具类: 和ServletAPI耦合严重 如果用参数来接收, 依然和ServletAPI有耦合, 直接用使用则不耦合。推荐使用 */ ServletActionContext.getRequest().getSession(); ServletActionContext.getResponse(); ServletActionContext.getServletContext();

    当然,怎么选择具体还是看根据自己来确定~~~~~~~~~

    Processed: 0.009, SQL: 9